回 帖 发 新 帖 刷新版面

主题:[讨论]动态添加控件时的错误

我在FORM已经添加有一个cc(0)的command控件,为什么添加到第六个的时候.就不能再显示.是不是我的计算有错误.谢谢帮忙纠正.

Private Sub Command1_Click()
     i = i + 1
    
    Load cc(i)
    cc(i).Caption = "cc" & i
    
    If i = 1 Then
    cc(i).Left = cc(0).Left
    cc(i).Top = 150
    j = 150
    ElseIf i \ 6 = i / 6 Then
    j = (120 + 495) * 1.2
    cc(i).Left = cc(0).Left
    cc(i).Top = j  '120+495
   Else
    z = (i - 1) * 1.2
    cc(i).Left = cc(0).Left + cc(1).Width * z   '120+1215
    cc(i).Top = j
    End If
    cc(i).Visible = True
    Print cc(i).Caption
End Sub

回复列表 (共7个回复)

沙发

Dim i As Integer

Private Sub Command1_Click()
i = i + 1
    
Load CC(i)
CC(i).Caption = "cc" & i
    
If i \ 6 = i / 6 Then
    CC(i).Move CC(0).Left, CC(i - 1).Top + CC(i - 1).Height
Else
    CC(i).Move CC(i - 1).Left + CC(i - 1).Width + 100, CC(i - 1).Top
End If
    
CC(i).Visible = True
End Sub

移动控件时,宜使用它的MOVE方法

板凳

你的原程序:
ElseIf i \ 6 = i / 6 Then        序号为6的整数倍,在这里你想换行
    j = (120 + 495) * 1.2        j是用来表示顶位置的,这里你没有和行数挂钩,就会造成所有的控件画在了同一行!
    cc(i).Left = cc(0).Left
    cc(i).Top = j  '120+495

我的建议:

const  行距=500         下面这些值你可以自己调整
const  列距=1500
const  首行顶=300
const  首列左=200
dim 控件序号 as integer

Private Sub Command1_Click()
    dim 行数 as integer
    dim 列数 as integer
    控件序号=控件序号+1
    Load CC(控件序号)
    列数=(控件序号-1) mod 6        此数从0到5
    行数=控件序号 \ 6                此数从0开始
    CC(控件序号).Move 列数*列距+首列左, 行数*行距+首行顶
    CC(控件序号).Visible = True
End Sub

3 楼

有什么方法可以令到第一个控件排在CC(0)的位置之后的就跟着排。到第六个的时候。照样是另起一行排

4 楼

我想每行只排五个

5 楼


Private Sub Command1_Click()
i = i + 1

Load CC(i)
CC(i).Caption = "cc" & i
    

If i = 6 Then  '设定条件 到第11个控件的时候
x = x + 2       'x设为行倍数.2倍即2行
    CC(i).Move CC(0).Left, CC(i - 1).Top + CC(i - 1).Height + 100
ElseIf i = 1 Then
    CC(i).Move CC(i - 1).Left, CC(i - 1).Top
ElseIf i - 5 * x = 1 Then  '控件号-10(每行10个)*2(已经添加了2行)=1 就运行
    x = x + 1       '行数(倍数)自增
    CC(i).Move CC(0).Left, CC(i - 1).Top + CC(i - 1).Height + 100
Else
    CC(i).Move CC(i - 1).Left + CC(i - 1).Width + 100, CC(i - 1).Top
End If
    
CC(i).Visible = True

End Sub

Private Sub Command3_Click()  

If i = 0 Then
    MsgBox "没有按钮", 0 + 64, "错误"
Else
    Unload CC(i)
    i = i - 1
End If
Text1 = i
End Sub

为什么在删除11控件后.再重新添加11控件.不会执行
ElseIf i - 5 * x = 1 Then  '控件号-10(每行10个)*2(已经添加了2行)=1 就运行
    x = x + 1       '行数(倍数)自增
    CC(i).Move CC(0).Left, CC(i - 1).Top + CC(i - 1).Height + 100
而执行
Else
    CC(i).Move CC(i - 1).Left + CC(i - 1).Width + 100, CC(i - 1).Top
End If

6 楼

列数=(控件序号-1) mod 6        此数从0到5
    行数=控件序号 \ 6                此数从0开始


天哪!楼主啊,把这里的6改成5,一行就5个;改成10一行就10个;改成1000,一行就1000个……

7 楼

我懂老大的意思 .我做过了.不过你的排列有问题..

我来回复

您尚未登录,请登录后再回复。点此登录或注册