动态加载控件的滚动条问题!

stonec 2003-03-11 10:34:15
code as the follow:
private sub form_load()
dim...... '变量定义
'动态添加控件到picturebox
......
'设置垂直滚动条(只需要)
If Picturebox1.Height > frmAddItem.Height Then
VScrollbar1.Max = Picturebox1.Height - frmAddItem.Height
Else
VScrollbar1.Visible = False
End If
End sub

private sub VScrollbar1_Change()
Picturebox1.top=-VSCrollbar1.vable
End sub
在form窗口放1个picturebox,他上面放1个控件(其他类似控件动态载),3个command
button(不动态载入)。以后在form_load()中实现动态载入,(控件在初始的picturebox里装不下)。运行结果不出现滚动条。 难道动态控件没载入吗,picturebox的autosize已经为true了。
...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonec 2003-03-14
  • 打赏
  • 举报
回复
帮忙看看,哪里错了!
stonec 2003-03-13
  • 打赏
  • 举报
回复
好象还不行!似乎要再加一个picture,才勉强可以。(界面很不舒服)!经过几次更改,发现 picture2(放控件的picture)的autosize 即使设成true,似乎在运行时也不起作用,真不解?!还有就是滚动的比例问题!大家给看看下面的原程序吧:特别注意浪线处,该成那样才可有滚动效果,不太懂。问题在哪里啊。

Option Explicit
Dim ColNum As Integer
Dim i As Integer
Private Sub Form_Load()


'显示模式
Form1.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
'Picture2.ScaleMode = vbPixels

Picture2.AutoSize = True

Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height
Picture2.Move 0, 0

ColNum = 15

For i = 1 To ColNum - 1
Load LabelAdd(i)
Load TextAdd(i)
Next

LabelAdd(0).Top = 100
TextAdd(0).Left = LabelAdd(0).Width * 2
For i = 1 To ColNum - 1
LabelAdd(i).Top = LabelAdd(i - 1).Top + 500
TextAdd(i).Left = LabelAdd(i).Left + LabelAdd(i).Width * 2
TextAdd(i).Top = TextAdd(i - 1).Top + 500
LabelAdd(i).Visible = True
TextAdd(i).Visible = True
Next

For i = 0 To ColNum - 1
LabelAdd(i).Caption = Rnd(i)
TextAdd(i) = LabelAdd(i).Width
Next

If Picture2.ScaleWidth > Picture1.ScaleWidth Then
~~~~~~ ~~~~~~
HScroll1.Visible = True
HScroll1.Max = Picture2.Width - Picture1.Width
Else
HScroll1.Visible = False
End If
If Picture2.ScaleHeight > Picture1.ScaleHeight Then
~~~~~ ~~~~~
VScroll1.Visible = True
VScroll1.Max = Picture2.Height - Picture1.Height
Else
VScroll1.Visible = False
End If

Picture2.Height = LabelAdd(ColNum - 1).Top

VScroll1.Top = 0
VScroll1.Left = Picture1.Width
VScroll1.Height = Picture1.Height

HScroll1.Top = Picture1.Height
HScroll1.Left = 0
HScroll1.Width = Picture1.Width

VScroll1.Max = Picture2.ScaleHeight - Picture1.ScaleHeight
VScroll1.Min = 0
HScroll1.Max = Picture2.Width - Picture1.Width
HScroll1.Min = 0

End Sub

Private Sub Form_Resize()
Picture1.Width = Form1.Width
Picture1.Height = Form1.Height
Picture2.AutoSize = True

Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height
Picture2.Move 0, 0

If Picture2.ScaleWidth > Picture1.ScaleWidth Then
HScroll1.Visible = True
HScroll1.Max = Picture2.Width - Picture1.Width
Else
HScroll1.Visible = False
End If
If Picture2.ScaleHeight > Picture1.ScaleHeight Then
VScroll1.Visible = True
VScroll1.Max = Picture2.Height - Picture1.Height
Else
VScroll1.Visible = False
End If

Picture2.Height = LabelAdd(ColNum - 1).Top
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
VScroll1.Top = 0
VScroll1.Left = Picture1.Width
VScroll1.Height = Picture1.Height

HScroll1.Top = Picture1.Height
HScroll1.Left = 0
HScroll1.Width = Picture1.Width

End Sub

Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Value
End Sub

Private Sub VScroll1_Change()
Picture2.Top = -VScroll1.Value
End Sub
yefm 2003-03-12
  • 打赏
  • 举报
回复
同时你还要设置VScrollbar1的位置,即top , left
northwolves 2003-03-12
  • 打赏
  • 举报
回复
private sub form_load()
dim...... '变量定义
'动态添加控件到picturebox
......
'设置垂直滚动条(只需要)
If Picturebox1.Height > frmAddItem.Height Then
VScrollbar1.Visible = true'----------------------->加上这句试试
VScrollbar1.Max = Picturebox1.Height - frmAddItem.Height
Else
VScrollbar1.Visible = False
End If
End sub

private sub VScrollbar1_Change()
Picturebox1.top=-VSCrollbar1.vable
End sub
stonec 2003-03-12
  • 打赏
  • 举报
回复
up一下!

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧