鼠标滚动轮事件
1. 当鼠标在表单内的控件上时 滚动鼠标滚动轮 如何使表单上下滚动2. 如何判断光标是否“在表单中” 如果一个表单中有很多控件 光标在最下面的一个文本控件中 但由于滚动条没有滚动 造成表面上看上去光标没有在表单中 (真啰嗦,不知道怎么表达) 换句话说就是如何判断光标不在表单是显示区域中
*-- 为了测试,在表单添加了多种控件*-- 主要代码在自定义方法 mymousewheel、setmousewheel 和 Init 事件中。Public oform1oform1=Newobject("form1")oform1.ShowReturnDefine Class form1 As Form Top = 0 Left = 0 Height = 342 Width = 420 ScrollBars = 3 DoCreate = .T. Caption = "Form1" KeyPreview = .T. WindowState = 0 ContinuousScroll = .F. Name = "Form1" Add Object command1 As CommandButton With ; Top = 312, ; Left = 384, ; Height = 25, ; Width = 60, ; Caption = "Command1", ; Name = "Command1" Add Object text1 As TextBox With ; Height = 20, ; Left = 432, ; Top = 336, ; Width = 100, ; Name = "Text1" Add Object label1 As Label With ; Caption = "Label1", ; Height = 16, ; Left = 516, ; Top = 384, ; Width = 38, ; Name = "Label1" Add Object command2 As CommandButton With ; Top = 12, ; Left = 336, ; Height = 25, ; Width = 60, ; Caption = "Command2", ; Name = "Command2" Add Object grid1 As Grid With ; Height = 116, ; Left = 216, ; Top = 48, ; Width = 176, ; Name = "Grid1" Add Object shape1 As Shape With ; Top = 0, ; Left = 12, ; Height = 372, ; Width = 109, ; Name = "Shape1" Add Object command3 As CommandButton With ; Top = 120, ; Left = 144, ; Height = 25, ; Width = 60, ; Caption = "Command3", ; Name = "Command3" Add Object container1 As Container With ; Top = 192, ; Left = 156, ; Width = 156, ; Height = 116, ; Name = "Container1" Procedure container1.Init This.AddObject('Pageframe1','Pageframe') This.Pageframe1.Move(24,12,121,85) This.Pageframe1.PageCount=2 This.Pageframe1.page1.AddObject('Command1','CommandButton') This.Pageframe1.page1.Command1.Move(23,22,60,25) This.Pageframe1.Visible=.T. This.Pageframe1.page1.Command1.Visible=.T. Endproc Procedure mymousewheel Lparameters nDirection, nShift, nXCoord, nYCoord Thisform.SetViewPort(Thisform.ViewPortLeft,Max(Thisform.ViewPortTop-Iif(nDirection>0,1,-1),0)) Nodefault && 鼠标在 表格、容器、页框中滚动均有效果,但当鼠标焦点在 表格 中时,会同时触发 表格 的滚动事件,所以要加此句来不执行原默认事件。 Endproc Procedure setmousewheel Lparameters toControl If Pemstatus(toControl,"MouseWheel",5) =Bindevent(toControl,"MouseWheel",This,"MyMouseWheel") Endif If Type("toControl.Objects[1]")="O" Local loI For Each loI In toControl.Objects This.SetMouseWheel(loI) Endfor Endif Endproc Procedure Init This.ScaleMode=0 This.SetMouseWheel(Thisform) Endproc Procedure Load Create Cursor t1 (a1 i) For lnI=1 To 20 Insert Into t1 Values (lnI) Endfor Locate EndprocEnddefine