这个比较麻烦,建议你先创建一个例如Command1(0)这样带Index的控件,然后再Load。这样可以通过Command1(i)来控制Command的位置,如果完全动态创建的话比较麻烦,因为动态创建控件数组很困难。我的方法是使用Tag属性,每创建一个给一个递增的Tag。然后在排位置的时候根据Tag的值来排。

解决方案 »

  1.   

    要想灵活
    就应该放弃VB的控件
    用类似SDK编程的办法:用CreateWindowEx创建控件窗口,发消息控制,接受通知消息响应事件
    这样动态创建控件根本不受限制
    灵活 与 简洁 是不可调和的
      

  2.   

    建议你先创建一个例如Command1(0)这样带Index的控件,然后再Load。这样可以通过Command1(i)来控制Command的位置, 同意,我就是用这个方法做了一个扫雷的游戏。
      

  3.   

    不知道怎样算是足够“简洁”,下面的代码笨笨的也可以动    Cols = 4
        Rows = 7    For i = 0 To Cols * Rows - 1
            With Command1(i)
                .Move Command1(0).Left + .Width * (i Mod Cols) _
                        , Command1(0).Top + .Height * (i \ Rows)
                .Caption = i
                .Visible = True
            End With
        Next
      

  4.   

    private sub setpos( p as variant )
    dim i as integer
    dim j as integer
    for i = 0 to 3
      for j = 0 to 7
        p(i*7+j).left = 
        p(i*7+j).top = 
        ...
      next j
    next i
    end sub
      

  5.   

    我也來一筆,下面可根據窗體大小,自上到下排列,已有COMMAND(0)控制項,
     For i = 1 To 28
           Load COMMAND(i)
           COMMAND(i).Left = COMMAND(i - 1).Left
           COMMAND(i).Top = COMMAND(i - 1).Top + COMMAND(i - 1).Height
           COMMAND(i).Visible = True
           If COMMAND(i).Top + COMMAND(i - 1).Height > Me.Height Then
              COMMAND(i).Top = COMMAND(0).Top
              COMMAND(i).Left = COMMAND(i - 1).Left + COMMAND(i - 1).Width + 200
           End If
        Next i