推荐一款音乐手机:在VB中如何分割窗体? (高分)

来源:百度文库 编辑:高校问答 时间:2024/05/09 03:17:41
最好把源代码给我~
谢谢!

经典代码在此:
一个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

加我QQ吧,我有100个例子,都可以发给你

厄,源代码我倒是有,但是太多了,还是传给你吧。

分割窗体?
是创建自定义形状的窗体的意思吗

就是mdi窗体嘛,把MDIForm属性设成True就可以了