大家好,我刚接触VB,在学习滚动条功能时,遇到了几个问题,请大家指教,谢谢!
我最初编写的代码如下:
Private Sub Form_Resize()
1 If Frame1.Height > Me.Height Then
2 VScroll1.Visible = True
3 Else
4 VScroll1.Visible = False
5 End If
6 If Frame1.Width > Me.Width Then
7 HScroll1.Visible = True
8 Else
9 HScroll1.Visible = False
10 End If
11 HScroll1.Left = 0
12 HScroll1.Top =Me.ScaleHeight - HScroll1.Height
13 VScroll1.Left = Me.ScaleWidth - VScroll1.Width
14 VScroll1.Top = 0
15 HScroll1.Width = Me.ScaleWidth
16 VScroll1.Height = Me.ScaleHeight
17 If VScroll1.Visible = True Then
18 If HScroll1.Visible = True Then
19 HScroll1.Width = Me.ScaleWidth - VScroll1.Width
20 VScroll1.Height = Me.ScaleHeight - HScroll1.Height
21 End If
22 End If
23 HScroll1.Max = (Frame1.Width - Me.Width) + 3 * VScroll1.Width
24 VScroll1.Max = (Frame1.Height - Me.Height) + 4 * HScroll1.Height
End Sub
Private Sub HScroll1_Change()
Frame1.Left = -HScroll1.Value
End Sub
Private Sub VScroll1_Change()
Frame1.Top = -VScroll1.Value
End Sub
问题1:
程序运行后,当我改变窗体的大小时滚动条没有出现,我检查后发现可能问题主要在12和13语句,这两条语句的本意是为了避免水平滚动条(垂直滚动条)的顶端(左端)和窗体的底边(右边)对齐,它的下部(左部)处于窗体的底部边界(右部边界)的下面(右面),就看不到了,我觉得这样的考虑是恰当的,但是运行后滚动条反而不见了,我试着对这两条语句改动如下(改动部分有下划线):
12 HScroll1.Top = Frame1.Height - HScroll1.Height
13 VScroll1.Left = Frame1.Width - VScroll1.Width
运行后滚动条出现了,可是当窗体大小改变后,滚动条随着窗体内容的移动也移动了(我觉得正确的情况应该是,当移动滑块时,两个滚动箭头都应该出现,它们的位置是固定的,变动的只是随划块移动的窗体,可是我的程序运行,移动滑块后,有一个箭头也随窗体移走不见了),应该是我对语句的改动有错,可是应该怎样改才能实现滚动条的正常功能呢,请指教!
问题2:
语句17到22的作用是为了在同时出现水平和垂直滚动条时,为了不让它们的交叉角重叠,各减去了一个值,使滚动条缩短了.可是无论我怎样改变窗体的大小,两个滚动条都不会同时出现,这是什么原因呢?又应该对语句做怎样的改动呢?
不知道我把问题说清楚了没有,我希望在我初学阶段能够把这些基础的问题搞懂,这样以后进阶时就不会走弯路,谢谢大家!
(希望我有一天也能有本事回答别人的问题--暴露一下自己的野心!)