扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:许瑞军 来源:开发高手 2007年10月14日
关键字:
在本页阅读全文(共4页)
’类模块初始化 Private Sub Class_Initialize() numControls = 0 ’控件数设为0 Resizing = False ’鼠标调整设为假 End Sub ’鼠标在Label控件上按下左键,开始调整 Private Sub SplitBar_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then Resizing = True End Sub ’鼠标在Label控件上抬起左键,结束调整 Private Sub SplitBar_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then Resizing = False End Sub ’鼠标移动事件 Private Sub SplitBar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ’得到鼠标位置 GetCursorPos pot ’屏幕坐标转为窗体坐标 ScreenToClient mForm.hwnd, pot ’如果鼠标不在调整则退出 If Not Resizing Then Exit Sub If HorV = 0 Then ’如果是水平分割条 ’如果鼠标在窗体上的水平位置超过最小值 If pot.X * Screen.TwipsPerPixelX < iMin Then ’设置鼠标位置为窗体上水平位置最小值 退出 pot.X = iMin / Screen.TwipsPerPixelX ClientToScreen mForm.hwnd, pot SetCursorPos pot.X, pot.Y Exit Sub ’如果鼠标在窗体上的水平位置超过最大值 ElseIf pot.X * Screen.TwipsPerPixelX > iMax Then ’设置鼠标位置为窗体上水平位置最大值 退出 pot.X = iMax / Screen.TwipsPerPixelX ClientToScreen mForm.hwnd, pot SetCursorPos pot.X, pot.Y Exit Sub Else ’设置分割条的左侧位置为鼠标水平位置减去 ’分割条宽度的二分之一 SplitBar.Left = pot.X * Screen.TwipsPerPixelXSplitBar.Width / 2 End If Else ’如果是垂直分割条 ’如果鼠标在窗体上的水平位置超过最小值 If pot.Y * Screen.TwipsPerPixelY < iMin Then ’设置鼠标位置为窗体上水平位置最小值 退出 pot.Y = iMin / Screen.TwipsPerPixelY ClientToScreen mForm.hwnd, pot SetCursorPos pot.X, pot.Y Exit Sub ’如果鼠标在窗体上的水平位置超过最大值 ElseIf pot.Y * Screen.TwipsPerPixelY > iMax Then ’设置鼠标位置为窗体上水平位置最大值 退出 pot.Y = iMax / Screen.TwipsPerPixelY ClientToScreen mForm.hwnd, pot SetCursorPos pot.X, pot.Y Exit Sub Else ’设置分割条的顶部位置为鼠标垂直位置 ’减去分割条高度的二分之一 SplitBar.Top = pot.Y * Screen.TwipsPerPixelY - SplitBar.Height / 2 End If End If ’调用子程序计算控件位置 ArrangePosition End Sub |
图4 测试分隔条 |
Dim sp As New clsSplitBar |
Private Sub Form_Load() sp.Attach Me, Label1, 0, 1000, 5000 sp.SetLeftBind Text1 sp.SetRightBind Text2 End Sub |
Private Sub Form_Resize() sp.ArrangePosition End Sub |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者