注册 登录
编程论坛 VB6论坛

vb中用代码建立1000个按钮,要求每行22个,如何写代码

natesc 发布于 2017-07-02 16:00, 2447 次点击
vb中用代码建立1000个按钮,要求每行22个,如何写代码,能不能做得更好,每行按钮个数自动适应FORM宽度
5 回复
#2
风吹过b2017-07-02 16:44
以前做过。
在窗口大小被修改时 重排按钮位置
你的问题里有一个bug,每行22个与每行按钮个数自动适应FORM宽度 矛盾。
#3
natesc2017-07-02 17:29
回复 2楼 风吹过b
我的代码是这样的
Load (i)
(i).Visible = True
K = i \ 22
If K = 0 Then
(i).Left = (i - 1).Left + (i - 1).Width
(i).Top = (0).Top
End If
If K >= 1 Then
(i).Left = (i - 22 * K).Left + (i - 22 * K).Width
(i).Top = (0).Top + (0).Height * K
End If
(i).Caption = i
  但有问题,排列不整齐,应当如何修改
只有本站会员才能查看附件,请 登录
      

[此贴子已经被作者于2017-7-2 17:30编辑过]

#4
xiangyue05102017-07-02 21:21
Lft=100  '初始Left数值
tp=200   '初始top数值
wdth=100  ' 按钮width
hgt=200   ' 按钮height

for i=1 to 1000
r= i \ 22
c= i mod 22
Load (i)
(i).Visible = True
(i).width=wdth
(i).height=hgt
(i).top= tp+ r * hgt
(i).Left = left + c * wdth
Next
#5
ZHRXJR2017-07-03 11:07
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
  
加了一个竖滚动条,可以显示全部1000个按钮
程序代码:
Private Sub Form_Load()
Dim K As Integer, P As Integer: K = 0
For I = 0 To 999
If I = 0 Then
Command1(0).Left = 120: Command1(0).Top = 120: Command1(0).Visible = True
K = 0
ElseIf I > 0 Then
Load Command1(I): Command1(I).Visible = True: Command1(I).Caption = I + 1
End If
If I Mod 22 = 0 Then
K = K + 1: P = 0
End If
P = P + 1
Command1(I).Left = 120 + (P - 1) * 600: Command1(I).Top = 120 + (K - 1) * 360
Next I
Frame1.Height = (K + 1) * 360
VScroll1.Min = 0: VScroll1.Max = 11600: VScroll1.LargeChange = 200: VScroll1.SmallChange = 200: VScroll1.Value = 0
End Sub

其实你的代码就是忽略了Command1(0)控件的位置,开始就是显示的是Command1(1),Command1(1)盖住了Command1(0)。
程序又优化了一下,增加了一个 VScroll1 滚动条控件,可以查看全部的1000个按钮了。

[此贴子已经被作者于2017-7-4 12:26编辑过]

#6
natesc2017-07-11 19:09
版主的境界就是高,确实不错
1