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

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

通过中间的横线可以自由调节这两个区域的上下高度?请指教!
...全文
300 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfzhu2000 2008-04-12
  • 打赏
  • 举报
回复
做个记号
东方之珠 2008-04-10
  • 打赏
  • 举报
回复
这个题目有意思.我没弄过,好像要专门控件...
whd100 2008-04-10
  • 打赏
  • 举报
回复
谢谢楼上的几位
嗷嗷叫的老马 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
嗷嗷叫的老马 2008-04-10
  • 打赏
  • 举报
回复
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
  • 打赏
  • 举报
回复
应该不是很难。
嗷嗷叫的老马 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事件上下拖动, 上下两个容器即可一大一下或一小一大啦..........

用户 昵称 2008-04-09
  • 打赏
  • 举报
回复
用几个picture加十分复杂的判断可以办到,俺弄过,好像有控件吧。
舉杯邀明月 2008-04-09
  • 打赏
  • 举报
回复
前段时间“射天狼”有一个VB拆分窗口的例子程序。
你参考一下吧。那个是垂直拆分的,你修改一下应该可以进行水平拆分。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧