中易网

在VB中如何分割窗体? (高分)

答案:5  悬赏:10  
解决时间 2021-03-21 13:31
在VB中如何分割窗体? (高分)
最佳答案
经典代码在此:
一个PICTUREBOX控件,命名为Splitter
一个LISTBOX控件,命名为LISTLEFT
一个TEXTBOX控件,命名为TEXTRIGHT

Option Explicit

Private Const SPLT_WDTH As Integer = 3

Private currSplitPosX As Long

Dim CTRL_OFFSET As Integer

Dim SPLT_COLOUR As Long
Private Sub Form_Load()

CTRL_OFFSET = 5
SPLT_COLOUR = &H808080

currSplitPosX = &H7FFFFFFF

ListLeft.AddItem "列表项 1"
ListLeft.AddItem "列表项 2"
ListLeft.AddItem "列表项 3"
ListLeft.AddItem "列表项 4"
ListLeft.AddItem "列表项 5"

TextRight = "在一些流行的应用程序中,经常见到窗体上有二个相邻的列表框,可以用鼠标任意拉动中间分割条,改变列表框大小。"

End Sub

Private Sub Form_Resize()

Dim x1 As Integer
Dim x2 As Integer
Dim height1 As Integer
Dim width1 As Integer
Dim width2 As Integer

On Error Resume Next

height1 = ScaleHeight - (CTRL_OFFSET * 2)
x1 = CTRL_OFFSET
width1 = ListLeft.Width

x2 = x1 + ListLeft.Width + SPLT_WDTH - 1
width2 = ScaleWidth - x2 - CTRL_OFFSET

ListLeft.Move x1% - 1, CTRL_OFFSET, width1, height1

TextRight.Move x2, CTRL_OFFSET, width2 + 1, height1

Splitter.Move x1 + ListLeft.Width - 1, CTRL_OFFSET, SPLT_WDTH, height1

End Sub

Private Sub Splitter_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbLeftButton Then

Splitter.BackColor = SPLT_COLOUR

currSplitPosX = CLng(X)
Else

If currSplitPosX <> &H7FFFFFFF Then Splitter_MouseUp Button, Shift, X, Y

currSplitPosX = &H7FFFFFFF
End If

End Sub

Private Sub Splitter_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If currSplitPosX& <> &H7FFFFFFF Then

If CLng(X) <> currSplitPosX Then
Splitter.Move Splitter.Left + X, CTRL_OFFSET, SPLT_WDTH, ScaleHeight - (CTRL_OFFSET * 2)
currSplitPosX = CLng(X)

End If

End If

End Sub

Private Sub Splitter_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If currSplitPosX <> &H7FFFFFFF Then

If CLng(X) <> currSplitPosX Then
Splitter.Move Splitter.Left + X, CTRL_OFFSET, SPLT_WDTH, ScaleHeight - (CTRL_OFFSET * 2)
End If

currSplitPosX = &H7FFFFFFF

Splitter.BackColor = &H8000000F

If Splitter.Left > 60 And Splitter.Left < (ScaleWidth - 60) Then

ListLeft.Width = Splitter.Left - ListLeft.Left

ElseIf Splitter.Left < 60 Then
ListLeft.Width = 60
Else
ListLeft.Width = ScaleWidth - 60
End If
Form_Resize
End If

End Sub
全部回答
就是mdi窗体嘛,把MDIForm属性设成True就可以了
分割窗体?
是创建自定义形状的窗体的意思吗
厄,源代码我倒是有,但是太多了,还是传给你吧。
加我QQ吧,我有100个例子,都可以发给你
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谁知道背景墙3.7米,石材罗马柱做多少宽合适
jeep自由光感应雨刷怎么样用
我养了些兔子,不知道那里有收兔子
这种红双喜多少钱
什么叫做电影木马病毒如何查杀呢?
泰拉石手镯做出来要多少钱
82年的拉菲一共多少瓶呢?...这个问题....无聊
徐州邮政编码是多少?
临高仔的进来
右边咬肌疼痛,太阳穴疼痛
等我 英语怎么写
科鲁兹 锋范 爱丽舍 不知道买那个好。。。。
谈恋爱对人的生理上会有什么影响吗?
初中毕业典礼一般是在中考后几天举行?
小米3机身长宽是多少,所说的144mm*73.6mm是
推荐资讯
崇福龙人影院今日电影
常 春 藤 喜 欢 阳 光 么 ?
龙之谷手游 pve和pvp剑圣加点什么意思
北京猎头公司有哪些知名的
0是不是9的倍数
艾灸店怎么加 盟?
闪电借如何重新授权新额度
12306新注册用户名密码忘了怎么找回
神龙斗士所有魔神的图片
现役军人可以报名考研么?具体流程和时间点是
卓越教育·易道儿童手脑潜能会馆地址好找
花港观鱼有几个大门?一般旅游团从哪个门进呢
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?