主题:[讨论]动态添加控件时的错误
tianyiyun
[专家分:20] 发布于 2008-05-21 00:03:00
我在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个回复)
沙发
一江秋水 [专家分:9680] 发布于 2008-05-21 07:00:00
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方法
板凳
老大徒伤悲 [专家分:29120] 发布于 2008-05-21 09:00:00
你的原程序:
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 楼
tianyiyun [专家分:20] 发布于 2008-05-21 10:20:00
有什么方法可以令到第一个控件排在CC(0)的位置之后的就跟着排。到第六个的时候。照样是另起一行排
4 楼
tianyiyun [专家分:20] 发布于 2008-05-21 10:22:00
我想每行只排五个
5 楼
tianyiyun [专家分:20] 发布于 2008-05-21 13:56:00
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 楼
老大徒伤悲 [专家分:29120] 发布于 2008-05-22 09:01:00
列数=(控件序号-1) mod 6 此数从0到5
行数=控件序号 \ 6 此数从0开始
天哪!楼主啊,把这里的6改成5,一行就5个;改成10一行就10个;改成1000,一行就1000个……
7 楼
tianyiyun [专家分:20] 发布于 2008-05-22 12:45:00
我懂老大的意思 .我做过了.不过你的排列有问题..
我来回复