具有ScrollBar的表单

该程式实际应用时,应是造一个很大的From ,再放一个很大的PictureBox於其上,将所要的
Control项都放在PictureBox上安排好後,再将Form缩小,使之比PictureBox还小,并使
一些Control项在Form上没有办法看到。当程式执行时,可以更动FORM的大小,可以看见
ScrollBar的自动出现。事实上,这好比将PictureBox当作是Form 来存放Control项,而
以Form当作是可见的范围,这个范围除非Form大小更动,否则不会变,而令PictureBox
移动,於是可以由Form看到PictureBox不同的部份。

'需一个PictureBox先放於Form上,  then Put some Control within Picture1
'另放一个Hscroll, 一个VScroll 於Form上
Option Explicit

Sub Form_Load()
        Picture1.BackColor = Me.BackColor
        Picture1.BorderStyle = 0 '没有框线
End Sub
Sub Form_Resize()
        ' Position the scroll bars:
        HScroll1.Left = 0
        VScroll1.Top = 0
        If Picture1.Width > ScaleWidth Then 'picturebox比Form还宽时
           HScroll1.Top = ScaleHeight - HScroll1.Height
        Else
           HScroll1.Top = ScaleHeight '如此Hscroll便不会显示出来了
        End If
        If Picture1.Height > HScroll1.Top Then
            VScroll1.Left = ScaleWidth - VScroll1.Width
            If Picture1.Width > VScroll1.Left Then
               HScroll1.Top = ScaleHeight - HScroll1.Height
            End If
         Else
            VScroll1.Left = ScaleWidth '如此VScroll便不会出现了
         End If
         HScroll1.Width = ScaleWidth
         If HScroll1.Top > 0 Then VScroll1.Height = HScroll1.Top
         ' Set the scroll bar ranges
         HScroll1.Max = Picture1.Width - VScroll1.Left
         VScroll1.Max = Picture1.Height - HScroll1.Top
         HScroll1.SmallChange = Abs(HScroll1.Max \ 16) + 1
         HScroll1.LargeChange = Abs(HScroll1.Max \ 4) + 1
         VScroll1.SmallChange = Abs(VScroll1.Max \ 16) + 1
         VScroll1.LargeChange = Abs(VScroll1.Max \ 4) + 1
         HScroll1.ZOrder 0
         VScroll1.ZOrder 0
End Sub


Sub HScroll1_Change()
         Picture1.Left = -HScroll1.Value '更动PictureBox的位置
End Sub


Sub VScroll1_Change()
         Picture1.Top = -VScroll1.Value
End Sub


								
相关信息
相关评论
字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z