首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

鼠标滚动轮事件解决思路

2012-02-24 
鼠标滚动轮事件SQL code1. 当鼠标在表单内的控件上时滚动鼠标滚动轮如何使表单上下滚动2. 如何判断光标是

鼠标滚动轮事件

SQL code
1. 当鼠标在表单内的控件上时   滚动鼠标滚动轮   如何使表单上下滚动2. 如何判断光标是否“在表单中”      如果一个表单中有很多控件      光标在最下面的一个文本控件中   但由于滚动条没有滚动   造成表面上看上去光标没有在表单中   (真啰嗦,不知道怎么表达)   换句话说就是如何判断光标不在表单是显示区域中


[解决办法]
SQL code
*-- 为了测试,在表单添加了多种控件*-- 主要代码在自定义方法  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 

热点排行