VB6 FORM窗体上控件实现滚动的方法

你将所有的控件都放在窗体的 picturebox控件上


除了 PictureBox 控件之外,也可用水平、垂直滚动条创建可滚动的图形视口应用程序。当所包含的图形超过控件范围时,单独一个 PictureBox 控件无法实现滚动功能─ 因为 PictureBox 控件不能自动添加滚动条。

应用程序使用两个图片框。称第一个为平稳的父 PictureBox 控件。称第二个为子 PictureBox 控件,它包含在父图片框中。子图片框中包含图形图象,可用滚动条控件在父图片框中移动子图片框。

图 7.25   在设计时添加滚动条控件

 

如图 7.28 所示,先创建一个新工程,然后在窗体上绘制两个图片框、一个水平滚动条和一个垂直滚动条。

这里,用窗体的 Form_Load 事件设置比例模型,在父图片框中调整子图片框的大小,水平、垂直滚动条将定位并调整它们的大小,然后加载位图图形。将下列代码添加到窗体的 Form_Load 事件过程中:

Private Sub Form_Load()

   '设置 ScaleMode 为像素。
   Form1.ScaleMode = vbPixels
   Picture1.ScaleMode = vbPixels

   '将 Autosize 设置为 True,以使 Picture2 的边界
   '扩展到实际的位图大小。
   Picture2.AutoSize = True

   '将每个图片框的 BorderStyle 属性设置为 None。
   Picture1.BorderStyle = 0
   Picture2.BorderStyle = 0

   '加载位图。
   Picture2.Picture = _
   LoadPicture("c:\Windows\Winlogo.bmp")

   '初始化两个图片框的位置。
   Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
   ScaleHeight - HScroll1.Height
   Picture2.Move 0, 0

   '将水平滚动条定位。
   HScroll1.Top = Picture1.Height
   HScroll1.Left = 0
   HScroll1.Width = Picture1.Width

   '将垂直滚动条定位。
   VScroll1.Top = 0
   VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height

   '设置滚动条的 Max 属性。
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Height

   '判断子图片框是否将充满屏幕。
   '若如此,则无需使用滚动条。
   VScroll1.Visible = (Picture1.Height < _
   Picture2.Height)
   HScroll1.Visible = (Picture1.Width < _
   Picture2.Width)

End Sub

水平和垂直滚动条的 Change 事件用来在父图片框中上、下、左、右移动子图片框。请将下列代码添加到两个滚动条控件的 Change 事件中:

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

Private Sub VScroll1_Change()
   Picture2.Top = -VScroll1.Value
End Sub

将子图片框的 Left 和 Top 属性分别设置成水平和垂直滚动条数值的负值,这样,当上、下、左、右滚动时,图形可正确地移动。

运行时,显示的图形如图 7.26 所示。

图 7.26   运行时滚动位图

 

运行时调整窗体大小
在上例中,窗体的初始大小限制图形的可视大小。在运行时当用户调整窗体大小时,为了调整图形视口应用程序的大小,可将下列代码添加到窗体的 Form_Resize 事件过程中:

Private Sub Form_Resize()
   '调整窗体大小时,改变 Picture1
   '的尺寸。
   Picture1.Height = Form1.Height
   Picture1.Width = Form1.Width

   '重新初始化图片和滚动条的
   '位置。
   Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
   ScaleHeight - HScroll1.Height
   Picture2.Move 0, 0
   HScroll1.Top = Picture1.Height
   HScroll1.Left = 0
   HScroll1.Width = Picture1.Width
   VScroll1.Top = 0
   VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Width

   '检查是否需要滚动条。
   VScroll1.Visible = (Picture1.Height < _
   Picture2.Height)
   HScroll1.Visible = (Picture1.Width < _
   Picture2.Width)

End Sub

VB6编辑器 和 VBA编辑器 (Office 中的VB编辑器)都不支持鼠标滚动。每次想看其它页的代码时,习惯性的滚动鼠标滚轮,居然没有半点反应——最好只好把鼠标移动到滚动条上去拖……这样操作对于习惯了使用鼠标滚轮的我来说实在太痛苦了;虽然在某些系统下安装某些鼠标的驱动程序也可以滚动(比如我在Win2K在安装过罗技的鼠标驱动,可以滚动了),但是不是所有的系统下都可行。  下载补丁后,直接双击,将其解压到某个目录,比如 C:\Program Files\VB6MouseWheel(建议解压缩到VB的安装目录下,或者解压后拷贝到VB的安装目录下)。解压后会有如下一些文件: 代码源文件: EULA.txt Main.bas VB6IDEMouseWheelAddin.vbp 生成文件: VB6IDEMouseWheelAddin.dll 注册插件文件: VBA Mouse Wheel Fix.reg   VB6MouseWheel 是以VB插件的方式运行的。刚才下载运行的那个安装程序并没有对其进行注册,所以现在还需要手工注册一下:   1. 打开“命令提示符”进入到 DOS 窗口中,进入到 VB6MouseWheel 的安装目录,运行 regsvr32 VB6IDEMouseWheelAddin.dll 将这个dll 注册到系统中。   2. 双击 VBA Mouse Wheel Fix.reg 文件,将其导入到注册表。   3. 打开 VB6 或者 VBA 编辑器,打开它的外接程序管理器,会看到列表里出现了“MouseWheel Fix”这一项。选择它并将其设置为“加载的”和“启动时加载”。   现在再试试,VB6/VBA 编辑器中已经可能使用鼠标滚轮来滚动代码了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值