如何在VB6.0窗体中设计成上下两部分结构

whd100 2008-04-09 10:44:08
在VB6.0窗体中,如何设计成上下两部分的布局,如下图所示
_____________
| |
| |
| |
| |
|_____________|
| |
| |
|_____________|

通过中间的横线可以自由调节这两个区域的上下高度?请指教!
...全文
203 点赞 收藏 20
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wfzhu2000 2008-04-12
做个记号
回复
东方之珠 2008-04-10
这个题目有意思.我没弄过,好像要专门控件...
回复
whd100 2008-04-10
谢谢楼上的几位
回复
干脆打个包,免得以后要用时再花细胞去想.

http://www.m5home.com/blog/article.asp?id=88

是个完整工程....
回复
denken1015 2008-04-10
mouse事件大概代码(没有加越界判断)其中 Picture1为上窗体,Picture2为下窗体,Picture3为上下窗体中间的
拖动条。lable1为判断鼠标是否在Picture3上按下
Private Sub Picture3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Caption = 1
End Sub

Private Sub Picture3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Label1.Caption = "1" Then
Picture3.Top = Picture3.Top + Y
Picture1.Height = Picture1.Height + Y
Picture2.Top = Picture2.Top + Y
Picture2.Height = Picture2.Height - Y
End If


End Sub

Private Sub Picture3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Picture3.Top = Picture3.Top + Y
Label1.Caption = 0
End Sub
回复
Option Explicit

Private Const AsyncMove As Boolean = False '实时移动控制

Dim mY As Long, AllHei As Long

Private Sub Form_Load()
AllHei = Picture2.Top + Picture2.Height '把大小极限先记录一下
End Sub

Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mY = Y '鼠标按下时的鼠标坐标
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button And vbLeftButton Then
Dim tmpTop As Long

With Label1
tmpTop = .Top + Y - mY '计算应该移动到的坐标

If tmpTop <= Picture1.Top Then tmpTop = Picture1.Top '数值合法化
If tmpTop >= AllHei - .Height Then tmpTop = AllHei - .Height

.Move .Left, tmpTop '先移动"分割条"

If AsyncMove = False Then
Picture1.Height = .Top - Picture1.Top '再移动各控件
Picture2.Top = .Top + .Height
Picture2.Height = AllHei - Picture2.Top
End If
End With
End If
End Sub

Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If AsyncMove = True Then
With Label1
Picture1.Height = .Top - Picture1.Top '再移动各控件
Picture2.Top = .Top + .Height
Picture2.Height = AllHei - Picture2.Top
End With
End If
End Sub


代码大约就是这样.

添加一个LABEL,两个PICTUREBOX...
回复
qiu5208 2008-04-10
应该不是很难。
回复
凑个热闹.....
回复
Paro 2008-04-10
有意思....实用
回复
Sandrer 2008-04-10
噢,我看错了楼主的意思了~sorry~
当我没说过!
回复
Sandrer 2008-04-10
编写代码的窗口本来就有这个功能,跟Excel工作薄一样的!

在纵向滚动条上面有一个横杠,你注意看一下,鼠标移动到上面之后鼠标形状会改变为上下箭头,这时只要往下拉就可以了!

不知道楼主要的是不是这效果!
回复
Tiger_Zhao 2008-04-10
上网找一个控件叫 SSSpliter
回复
supergreenbean 2008-04-10
我以前写过一个有bug的分割类,你拿去改改好了

http://econet.zjgsu.edu.cn/cy_filesxxx/vbsrc/Spliter.rar
回复
msn2005 2008-04-10
很有意思,先作个记号。
回复
zaroty 2008-04-10
自己想个巧妙的算法应该可以实现。
回复
rexyudl 2008-04-09
还要控制两部分中各自的控件,跟着按比例变化!要很多判断,繁琐的很!可能有第三方的控件能够实现这个功能,去找找。
回复
caofusheng 2008-04-09
有个这样的控件可以用
回复
cbm6666 2008-04-09
上下各用一个PictureBox或Fram 当容器, 中间那条线用PictureBox, 使用PictureMove的三个Mouse事件上下拖动, 上下两个容器即可一大一下或一小一大啦..........

回复
用几个picture加十分复杂的判断可以办到,俺弄过,好像有控件吧。
回复
舉杯邀明月 2008-04-09
前段时间“射天狼”有一个VB拆分窗口的例子程序。
你参考一下吧。那个是垂直拆分的,你修改一下应该可以进行水平拆分。
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7493

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2008-04-09 10:44
社区公告
暂无公告