| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1282 人关注过本帖
标题:[求助]运行滚动条程序后滚动条不显示
只看楼主 加入收藏
广漠
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-10
收藏
 问题点数:0 回复次数:3 
[求助]运行滚动条程序后滚动条不显示

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

搜索更多相关主题的帖子: 滚动 运行 
2006-03-11 23:42
ryu
Rank: 1
等 级:新手上路
帖 子:124
专家分:0
注 册:2006-2-12
收藏
得分:0 

你的目的是什么?


本帖版权归ryu所有.如果引用本帖,请注明帖子的出处和作者;本帖如系引用,其版权归原作者所有.
2006-03-12 21:33
广漠
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-10
收藏
得分:0 
  谢谢ryu关注我的问题!
  我因为刚开始学习VB,在学VB内部控件这部分内容时,会边看书上有关的说明边按上面的指导编有关的代码来实际看看它是怎么操作的,能不能实现相关的功能,比如我在学HScrollBar和VScrollBar控件时,就参照书上的说明编了上面帖子上的代码,可是运行后并没有实现预期的效果,出现了如上所说的两个问题,我按自己的想法做了修正,也咨询了周围的人,没有得到很好的解决,才发帖向大家求助的.
  可能我问的问题太简单了,大家反而不知道从何说起,好象这个版面中多数人提的问题都比较深奥(至少对我来说是这样),可是我的确在学习VB的基础过程中就遇到了困难,真诚地请教大家!
  ryu问我目的是什么?很简单,其实就是想用这些代码实现滚动条的正常功能,也许有其他办法可以实现同样的目的,可是以我现在的水平,也只知道这些了,我想滚动条的功能以后会常常用到,能给我指教帮助我克服这个困难吗?谢谢!
2006-03-12 23:17
ryu
Rank: 1
等 级:新手上路
帖 子:124
专家分:0
注 册:2006-2-12
收藏
得分:0 

勉强能满足你的要求-_-d
Private Sub Form_Resize()
Frame1.Move 0, 0
If Frame1.Height > Me.Height - HScroll1.Height - HScroll1.Height Then
VScroll1.Visible = True
Else
VScroll1.Visible = False
End If
If Frame1.Width > Me.Width - VScroll1.Width Then
HScroll1.Visible = True
Else
HScroll1.Visible = False
End If
HScroll1.Left = 0
HScroll1.Top = Me.ScaleHeight - HScroll1.Height
VScroll1.Left = Me.ScaleWidth - VScroll1.Width
VScroll1.Top = 0
HScroll1.Width = Me.ScaleWidth
VScroll1.Height = Me.ScaleHeight
If VScroll1.Visible = True Then
If HScroll1.Visible = True Then
HScroll1.Width = Me.ScaleWidth - VScroll1.Width
VScroll1.Height = Me.ScaleHeight - HScroll1.Height
End If
End If
HScroll1.Max = (Frame1.Width - Me.Width) + 3 * VScroll1.Width
VScroll1.Max = (Frame1.Height - Me.Height) + 4 * HScroll1.Height
End Sub

Private Sub HScroll1_Change()
HScroll1.Max = Frame1.Width - Me.Width + VScroll1.Width + 100
HScroll1.LargeChange = 100
HScroll1.SmallChange = 100
Frame1.Left = -HScroll1.Value
End Sub

Private Sub VScroll1_Change()
VScroll1.Max = Frame1.Height - Me.Height + HScroll1.Height + 500
VScroll1.LargeChange = 100
VScroll1.SmallChange = 100
Frame1.Top = -VScroll1.Value
End Sub


本帖版权归ryu所有.如果引用本帖,请注明帖子的出处和作者;本帖如系引用,其版权归原作者所有.
2006-03-13 18:13
快速回复:[求助]运行滚动条程序后滚动条不显示
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011828 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved