Private Const SPLITWIDTH As Single = 40 '分割条宽度'******************************** ' 私有变量 '******************************** Private mHorizontalSplit As Boolean '水平鼠标指针 Private mControl1 As Object '分割控件1 Private mControl2 As Object '分割控件2 Private mSplitPercent As Single '分割百分比 Public Property Let HorizontalSplit(val As Boolean) mHorizontalSplit = val If mHorizontalSplit Then Splitter.MousePointer = 7 '鼠标指针为:N-S Else Splitter.MousePointer = 9 '鼠标指针为:W-E End If PropertyChanged "HorizontalSplit" UserControl_Resize End Property '******************************** ' 默认属性 '******************************** Private Sub UserControl_InitProperties() HorizontalSplit = False '垂直分割 SplitPercent = 50 Splitter.BackColor = &HFF8080 End Sub'******************************** ' 加载属性 '******************************** Private Sub UserControl_ReadProperties(PropBag As PropertyBag)On Error Resume Next HorizontalSplit = PropBag.ReadProperty("HorizontalSplit", False) SplitPercent = PropBag.ReadProperty("SplitPercent", 50)End Sub'******************************** ' 保存属性 '******************************** Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
On Error Resume Next PropBag.WriteProperty "HorizontalSplit", HorizontalSplit, False PropBag.WriteProperty "SplitPercent", SplitPercent, 50
End Sub '******************************** ' 下面三个subs用来手动改变 ' 分割窗体大小 '******************************** Private Sub splitter_mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single) Splitter.BackColor = vbBlue ' 改变分割条颜色,使分割条可见 Splitter.ZOrder End SubPrivate Sub splitter_mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
If mHorizontalSplit Then ' 水平分割 Y = Splitter.Top - (SPLITWIDTH - Y) mSplitPercent = Y / UserControl.Height Splitter.Move 0, Y Else ' 垂直分割 X = Splitter.Left - (SPLITWIDTH - X) mSplitPercent = X / UserControl.Width Splitter.Move X End If
If mSplitPercent < 0.1 Then mSplitPercent = 0.1 ' 设置最大和最小分割百分比 If mSplitPercent > 0.9 Then mSplitPercent = 0.9
End If
End SubPrivate Sub splitter_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Splitter.BackColor = &HFF8080 ' 使分割条颜色复原 UserControl_Resize ' 更新面板 End Sub 自己优化一下吧!!!我用的还行!!!!!
Option ExplicitPrivate Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseCapture Lib "user32" () As Long'加三个PICTUREBOX控件,将其中一个作为分隔条,改名为:picSplit Private Sub Form_Load() Picture1.Left = 60 Picture1.Top = 60 Picture2.Top = 60 picSplit.Left = Picture1.Left + Picture1.Width + 30 picSplit.Width = 60 picSplit.BorderStyle = 0 Picture2.Left = picSplit.Left + picSplit.Width '+ 50 Picture1.Height = 5700 Picture2.Height = 5700 picSplit.Top = 60 picSplit.Height = 5700 picSplit.MousePointer = vbSizeWE End SubPrivate Sub picSplit_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) On Error Resume Next If Button = vbLeftButton Then SetCapture picSplit.hwnd picSplit.Tag = x picSplit.BackColor = &HFF8080 End If End SubPrivate Sub picSplit_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) On Error Resume Next If Button = vbLeftButton Then If picSplit.Left >= (100 - x) And picSplit.Left <= (Me.ScaleWidth - 100 - x) Then picSplit.Left = picSplit.Left + x - CInt(picSplit.Tag) End If End SubPrivate Sub picSplit_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) On Error Resume Next If Button = vbLeftButton Then Picture1.Width = picSplit.Left - 80 Picture2.Left = picSplit.Left + 50 Picture2.Width = Width - picSplit.Left - 250
picSplit.BackColor = &H8000000F ReleaseCapture End If End Sub
或者推荐一个控件: ActiveResizer
' 私有变量
'********************************
Private mHorizontalSplit As Boolean '水平鼠标指针
Private mControl1 As Object '分割控件1
Private mControl2 As Object '分割控件2
Private mSplitPercent As Single '分割百分比
Public Property Let HorizontalSplit(val As Boolean)
mHorizontalSplit = val
If mHorizontalSplit Then
Splitter.MousePointer = 7 '鼠标指针为:N-S
Else
Splitter.MousePointer = 9 '鼠标指针为:W-E
End If
PropertyChanged "HorizontalSplit"
UserControl_Resize
End Property
'********************************
' 默认属性
'********************************
Private Sub UserControl_InitProperties()
HorizontalSplit = False '垂直分割
SplitPercent = 50
Splitter.BackColor = &HFF8080
End Sub'********************************
' 加载属性
'********************************
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)On Error Resume Next
HorizontalSplit = PropBag.ReadProperty("HorizontalSplit", False)
SplitPercent = PropBag.ReadProperty("SplitPercent", 50)End Sub'********************************
' 保存属性
'********************************
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
On Error Resume Next
PropBag.WriteProperty "HorizontalSplit", HorizontalSplit, False
PropBag.WriteProperty "SplitPercent", SplitPercent, 50
End Sub
'********************************
' 下面三个subs用来手动改变
' 分割窗体大小
'********************************
Private Sub splitter_mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Splitter.BackColor = vbBlue ' 改变分割条颜色,使分割条可见
Splitter.ZOrder
End SubPrivate Sub splitter_mousemove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
If mHorizontalSplit Then ' 水平分割
Y = Splitter.Top - (SPLITWIDTH - Y)
mSplitPercent = Y / UserControl.Height
Splitter.Move 0, Y
Else ' 垂直分割
X = Splitter.Left - (SPLITWIDTH - X)
mSplitPercent = X / UserControl.Width
Splitter.Move X
End If
If mSplitPercent < 0.1 Then mSplitPercent = 0.1 ' 设置最大和最小分割百分比
If mSplitPercent > 0.9 Then mSplitPercent = 0.9
End If
End SubPrivate Sub splitter_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Splitter.BackColor = &HFF8080 ' 使分割条颜色复原
UserControl_Resize ' 更新面板
End Sub
自己优化一下吧!!!我用的还行!!!!!
或者给我来信
[email protected]
Private Declare Function ReleaseCapture Lib "user32" () As Long'加三个PICTUREBOX控件,将其中一个作为分隔条,改名为:picSplit
Private Sub Form_Load()
Picture1.Left = 60
Picture1.Top = 60
Picture2.Top = 60
picSplit.Left = Picture1.Left + Picture1.Width + 30
picSplit.Width = 60
picSplit.BorderStyle = 0
Picture2.Left = picSplit.Left + picSplit.Width '+ 50
Picture1.Height = 5700
Picture2.Height = 5700
picSplit.Top = 60
picSplit.Height = 5700
picSplit.MousePointer = vbSizeWE
End SubPrivate Sub picSplit_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
On Error Resume Next
If Button = vbLeftButton Then
SetCapture picSplit.hwnd
picSplit.Tag = x
picSplit.BackColor = &HFF8080
End If
End SubPrivate Sub picSplit_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
On Error Resume Next
If Button = vbLeftButton Then
If picSplit.Left >= (100 - x) And picSplit.Left <= (Me.ScaleWidth - 100 - x) Then picSplit.Left = picSplit.Left + x - CInt(picSplit.Tag)
End If
End SubPrivate Sub picSplit_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
On Error Resume Next
If Button = vbLeftButton Then
Picture1.Width = picSplit.Left - 80
Picture2.Left = picSplit.Left + 50
Picture2.Width = Width - picSplit.Left - 250
picSplit.BackColor = &H8000000F
ReleaseCapture
End If
End Sub
厉害 收藏了===============================
-= www.PoP4u.net =-