当前位置:编程学习 > VB >>

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

在VB6.0窗体中,如何设计成上下两部分的布局,如下图所示
 _____________
|             |
|             |
|             |
|             |
|_____________|
|             |
|             |
|_____________|

通过中间的横线可以自由调节这两个区域的上下高度?请指教! --------------------编程问答-------------------- 用几个picture加十分复杂的判断可以办到,俺弄过,好像有控件吧。 --------------------编程问答-------------------- 上下各用一个PictureBox或Fram 当容器, 中间那条线用PictureBox, 使用PictureMove的三个Mouse事件上下拖动, 上下两个容器即可一大一下或一小一大啦..........

--------------------编程问答-------------------- 有个这样的控件可以用 --------------------编程问答-------------------- 还要控制两部分中各自的控件,跟着按比例变化!要很多判断,繁琐的很!可能有第三方的控件能够实现这个功能,去找找。 --------------------编程问答-------------------- 前段时间“射天狼”有一个VB拆分窗口的例子程序。
你参考一下吧。那个是垂直拆分的,你修改一下应该可以进行水平拆分。 --------------------编程问答-------------------- 谢谢楼上的几位 --------------------编程问答-------------------- 这个题目有意思.我没弄过,好像要专门控件... --------------------编程问答-------------------- 自己想个巧妙的算法应该可以实现。 --------------------编程问答-------------------- 很有意思,先作个记号。 --------------------编程问答-------------------- 我以前写过一个有bug的分割类,你拿去改改好了

http://econet.zjgsu.edu.cn/cy_filesxxx/vbsrc/Spliter.rar --------------------编程问答-------------------- 上网找一个控件叫 SSSpliter --------------------编程问答-------------------- 编写代码的窗口本来就有这个功能,跟Excel工作薄一样的!

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

不知道楼主要的是不是这效果! --------------------编程问答-------------------- 噢,我看错了楼主的意思了~sorry~
当我没说过! --------------------编程问答-------------------- 有意思....实用 --------------------编程问答-------------------- 凑个热闹..... --------------------编程问答-------------------- 应该不是很难。 --------------------编程问答--------------------
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... --------------------编程问答-------------------- 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
--------------------编程问答-------------------- 干脆打个包,免得以后要用时再花细胞去想.

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

是个完整工程.... --------------------编程问答-------------------- 做个记号
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,