![]() |
#2
sam_jiang2022-12-28 23:15
|
首先,mousedwon时设置mousepointer为9,(左右调整模式);
其次,mouseup时将mousepointer设置为默认0,箭头;
最后鼠标移动时,设置为mousepointer为9时,才可以调整控件大小。
控件的mousemove事件冒泡传递给form,非常有效!
附上代码:

**************************************************
*-- Form: form1 (d:\documents\visual foxpro 项目\bubbledevent.scx)
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 12/28/22 10:40:06 PM
*
DEFINE CLASS form1 AS form
Height = 750
Width = 1057
DoCreate = .T.
AutoCenter = .T.
Caption = "Form1"
WindowState = 0
oldx = 0
Name = "Form1"
ADD OBJECT olecontrol1 AS olecontrol WITH ;
Top = 35, ;
Left = 1, ;
Height = 24, ;
Width = 280, ;
Anchor = 0, ;
Name = "Olecontrol1"
ADD OBJECT olecontrol3 AS olecontrol WITH ;
Top = 61, ;
Left = 1, ;
Height = 688, ;
Width = 280, ;
Anchor = (64+2+1), ;
Name = "Olecontrol3"
ADD OBJECT edit1 AS editbox WITH ;
Anchor = (64+8+2+1), ;
Height = 714, ;
Left = 284, ;
Top = 35, ;
Width = 771, ;
Name = "Edit1"
ADD OBJECT commandgroup1 AS commandgroup WITH ;
ButtonCount = 6, ;
Value = 1, ;
Height = 30, ;
Left = 1, ;
Top = 2, ;
Width = 154, ;
Name = "Commandgroup1", ;
Command1.Top = 2, ;
Command1.Left = 3, ;
Command1.Height = 25, ;
Command1.Width = 25, ;
Command1.Picture = "graphics\bitmaps\offctlbr\small\color\new.bmp", ;
Command1.Caption = "", ;
Command1.StatusBarText = "新建一个文件!", ;
Command1.Alignment = 2, ;
Command1.Name = "Command1", ;
Command2.Top = 2, ;
Command2.Left = 28, ;
Command2.Height = 25, ;
Command2.Width = 25, ;
Command2.Picture = "graphics\bitmaps\offctlbr\small\color\open.bmp", ;
Command2.Caption = "", ;
Command2.StatusBarText = "打开一个文件!", ;
Command2.Alignment = 2, ;
Command2.Name = "Command2", ;
Command3.Top = 2, ;
Command3.Left = 53, ;
Command3.Height = 25, ;
Command3.Width = 25, ;
Command3.Picture = "graphics\bitmaps\offctlbr\small\color\save.bmp", ;
Command3.Caption = "", ;
Command3.StatusBarText = "保存文件", ;
Command3.Alignment = 2, ;
Command3.Name = "Command3", ;
Command4.Top = 2, ;
Command4.Left = 78, ;
Command4.Height = 25, ;
Command4.Width = 25, ;
Command4.Picture = "graphics\bitmaps\offctlbr\small\color\copy.bmp", ;
Command4.Caption = "", ;
Command4.StatusBarText = "复制选择的文字", ;
Command4.Alignment = 2, ;
Command4.Name = "Command4", ;
Command5.Top = 2, ;
Command5.Left = 103, ;
Command5.Height = 25, ;
Command5.Width = 25, ;
Command5.Picture = "graphics\bitmaps\offctlbr\small\color\print.bmp", ;
Command5.Caption = "", ;
Command5.StatusBarText = "打印", ;
Command5.Alignment = 2, ;
Command5.Name = "Command5", ;
Command6.Top = 2, ;
Command6.Left = 128, ;
Command6.Height = 25, ;
Command6.Width = 25, ;
Command6.Picture = "graphics\bitmaps\tlbr_w95\delete.bmp", ;
Command6.Caption = "", ;
Command6.StatusBarText = "删除当前文件", ;
Command6.Name = "Command6"
ADD OBJECT line1 AS line WITH ;
Anchor = 10, ;
Height = 0, ;
Left = 1, ;
Top = 32, ;
Width = 1054, ;
Name = "Line1"
ADD OBJECT line2 AS line WITH ;
Anchor = 10, ;
Height = 0, ;
Left = 1, ;
Top = 33, ;
Width = 1054, ;
BorderColor = RGB(255,255,255), ;
Name = "Line2"
PROCEDURE LostFocus
this.MousePointer=0
ENDPROC
PROCEDURE MouseUp
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.MousePointer= 0
ENDPROC
PROCEDURE MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.MousePointer= 9
ENDPROC
PROCEDURE MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF this.MousePointer=9 &&AND MDOWN()=.t.
this.olecontrol3.Width=nxcoord-this.olecontrol3.left
this.olecontrol1.Width=this.olecontrol3.width
x=this.edit1.left
nwidth=this.edit1.width
this.edit1.Left=this.olecontrol3.left+this.olecontrol3.width+3
this.edit1.Width=nwidth+x-nxcoord-3
ENDIF
ENDPROC
PROCEDURE Resize
this.olecontrol1.Width=this.olecontrol3.Width
ENDPROC
PROCEDURE olecontrol1.Refresh
*** ActiveX 控件方法程序 ***
ENDPROC
PROCEDURE olecontrol1.Change
*** ActiveX 控件事件 ***
ENDPROC
PROCEDURE olecontrol1.Init
ENDPROC
PROCEDURE olecontrol1.GetFirstVisible
*** ActiveX 控件方法程序 ***
ENDPROC
PROCEDURE olecontrol3.MouseMove
*** ActiveX 控件事件 ***
LPARAMETERS nbutton, nshift, nxcoord, nycoord
thisform.MouseMove(nbutton,nshift,nxcoord,nycoord)
ENDPROC
PROCEDURE olecontrol3.DblClick
*** ActiveX 控件事件 ***
ENDPROC
PROCEDURE olecontrol3.Init
this.Nodes.Add(,,"Root","我的电脑",,)
DECLARE integer GetLogicalDriveStrings IN WIN32API integer,string@
cstr=REPLICATE(CHR(0),40)
n=getlogicaldrivestrings(40,@cstr)
FOR i=1 TO n STEP 4
this.nodes.Add(1,4,,SUBSTR(cstr,i,2),,)
ENDFOR
this.Nodes.Item(1).Expanded=.t.
ENDPROC
PROCEDURE olecontrol3.HitTest
*** ActiveX 控件方法程序 ***
LPARAMETERS x, y
ENDPROC
PROCEDURE edit1.MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
thisform.MouseMove(nbutton,nshift,nxcoord,nycoord)
ENDPROC
ENDDEFINE
*
*-- EndDefine: form1
**************************************************