大家好,我刚接触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的作用是为了在同时出现水平和垂直滚动条时,为了不让它们的交叉角重叠,各减去了一个值,使滚动条缩短了.可是无论我怎样改变窗体的大小,两个滚动条都不会同时出现,这是什么原因呢?又应该对语句做怎样的改动呢?
不知道我把问题说清楚了没有,我希望在我初学阶段能够把这些基础的问题搞懂,这样以后进阶时就不会走弯路,谢谢大家!
(希望我有一天也能有本事回答别人的问题--暴露一下自己的野心!)



											
	    

	
											