如何在visual basic 6中使用滚动条?

时间:2012-12-11 16:49:19

标签: vb6 scrollbar windows-applications

我在VB 6中的Windows应用程序有一个包含很多控件的表单。如果客户端环境中的屏幕尺寸较小,则不会显示大多数控件。 我想要做的是为用户提供垂直和水平滚动条,以便用户可以滚动所有控件。 有谁知道如何实现这个?

P.S。请不要提供仅显示滚动值标签的示例:)

2 个答案:

答案 0 :(得分:4)

一种方法是使用Windows API调用打开表单的滚动条。这与使用ScrollBar控件不同;例如,打开表单自己的滚动条可以防止滚动条干扰Tab键顺序。

这是一个很好的页面,解释了如何执行此操作以及帮助程序类:

http://www.vbaccelerator.com/home/VB/Code/Libraries/Subclassing/Adding_Scroll_Bars_To_Forms__PictureBoxes_and_UserControls/article.asp

答案 1 :(得分:4)

我喜欢David的回答,但是如果你想用滚动条做这个,首先,你需要把所有的控件放到一个适合它们的框架中。你想要移动1个控件而不是“很多控件的地狱”。第二步将滚动条放入表单中,并在 Form_Resize 事件中添加一些代码以使用表单调整滚动条的大小。调整滚动条的大小后,您需要进行一些数学设置以设置最大 SmallChange LargeChange 属性。我正在显示 Min 属性,因此您知道它永远不会更改,只需在设计器中进行设置即可。此示例仅使用水平滚动条,因为我太懒而不能包含垂直滚动条。最后,将代码添加到滚动条Change事件以移动框架。

Private Sub Form_Resize()

    HScroll1.Move 0, Me.ScaleHeight - HScroll1.Height, Me.ScaleWidth
    HScroll1.Min = 0
    HScroll1.Max = Frame1.Width - Me.ScaleWidth
    HScroll1.SmallChange = HScroll1.Max / 100
    HScroll1.LargeChange = HScroll1.Max / 10

End Sub

Private Sub HScroll1_Change()

    Frame1.Left = -HScroll1.Value
    DoEvents ' this is not strictly necessary, but smooths the scolling some

End Sub

您还需要错误处理代码。我是一个懒惰的示例编码器。