使用代码生成100个按钮,排成一列,使用滚动条上下看这100个按钮,如何做?用代码生成100个按钮:Dim nIndex As Integer
For nIndex = 1 To 10
Load Cmd(nIndex)
Cmd(nIndex).Visible = True
Cmd(nIndex).Move Cmd(0).Left, Cmd(0).Top + nIndex * 600
Next nIndex
这100个按钮排成一列,要将这些按钮发到什么容器,可以产生上下滚动条,上下拖动滚动条来看这些按钮?谢谢先
For nIndex = 1 To 10
Load Cmd(nIndex)
Cmd(nIndex).Visible = True
Cmd(nIndex).Move Cmd(0).Left, Cmd(0).Top + nIndex * 600
Next nIndex
这100个按钮排成一列,要将这些按钮发到什么容器,可以产生上下滚动条,上下拖动滚动条来看这些按钮?谢谢先
Private Sub VScroll1_Change()
For i = 1 To 10
cmd(i).Top = cmd(0).Top + i * 600 - (VScroll1.Value - 1) * cmd(i).Height
Next i
End Sub
http://blog.csdn.net/ling242a/archive/2009/06/18/4278181.aspx
===不会。您可以测试一下。To chinayuppie大侠:
您的代码,我测试了,点击向下的时候,是按钮往上面滚,但是滚动的位置好像和这个vscroll控件的滚动条的位置没有相关。请问怎么办?谢谢先
你要将vscroll1的max属性设为10(你的控件数组的数量),min设为1
http://www.programfan.com/club/showpost.asp?id=15166
1、只生成有限几个按钮。
2、根据滚动条位置设置按钮的Caption
3、点击按钮时,根据滚动条位置与按钮写入代码
2 picturebox(p2)
p2的容器是p1,所有按钮的容器是p2。 理论上p2就会有一部分不可见然后弄个滚动条,滚得时候改变p2的top就好了
但调试时,nIndex到55以上时,这行 Cmd(nIndex).Move Cmd(0).Left, Cmd(0).Top + nIndex * CMD_VSPACE 会“溢出”报警,不解。Private Const CMD_VSPACE = 600 '按钮垂直间距
Private Sub VScroll1_Scroll()
Dim i As Integer
For i = 0 To Cmd.Count - 1
Cmd(i).Top = i * CMD_VSPACE - VScroll1.Value
Next i
End SubPrivate Sub Form_Load()
Dim nIndex As Integer
Cmd(0).Left = 0: Cmd(0).Top = 0
For nIndex = 1 To 20
Load Cmd(nIndex)
Cmd(nIndex).Move Cmd(0).Left, Cmd(0).Top + nIndex * CMD_VSPACE
Cmd(nIndex).Caption = "Cmd_" & nIndex
Cmd(nIndex).Visible = True
Next nIndex
With VScroll1
.Min = 0: .Max = Cmd(nIndex - 1).Top + Cmd(nIndex - 1).Height - .Height
.SmallChange = 1: .LargeChange = 1
.Height = Frame1.Height: .Width = 300
.Top = 0: .Left = Frame1.Width - .Width
End With
End Sub
“溢出”好像是 nIndex * CMD_VSPACE = 55*600 = 33000 > 32767(integer最大值)所致,
但 Move方法中的各参数可为单精度值,真的不明白.