主题:[请教] VFP的桌面表单没有方法程序,是否就无法向其中写代码?
北京惬意
[专家分:1330] 发布于 2010-02-15 05:07:00
VFP的桌面表单其它属性和其它表单差不多,但没有方法程序,是否就无法向其中写代码?
例如说其它表单的RESIZE中可以写代码,表单拉大拉小时,可以通过代码使表单上其它控件位置发生相应的变化,然而VFP桌面表单因无RESIZE方法程序,因而无法达到上述效果,这可让我如何是好?敬请高人指点,给你拜年了!
回复列表 (共10个回复)
沙发
wzxc [专家分:9440] 发布于 2010-02-15 09:12:00
请参考帮助文档的BINDEVENT( ) 函数及示例。
下列代码将Visual FoxPro主窗口的MouseMove事件绑定到自定义类MyHandler的MyMouseMove方法,绑定后,当在主窗口中移动鼠标时,将显示鼠标的坐标位置。
PUBLIC oHandler &&注意,请将保存对象的变量设置为全局变量
oHandler=NEWOBJECT("MyHandler")
*!* 将_SCREEN.MouseMove绑定到oHandler.MyMouseMove
=BINDEVENT(_SCREEN,"MouseMove",oHandler,"MyMouseMove")
DEFINE CLASS MyHandler AS Custom
PROCEDURE MyMouseMove
*!* 要保证该方法与_SCREEN.MouseMove有同样的参数设置
LPARAMETERS nButton, nShift, nXCoord, nYCoord
WAIT WINDOW "鼠标坐标:"+STR(nXCoord)+"|"+STR(nYCoord) NOWAIT
ENDPROC
ENDDEFINE
板凳
北京惬意 [专家分:1330] 发布于 2010-02-15 10:30:00
高家庄,实在是高。[em28]
按照你的指导,参看了BINDEVENT()说明,正在参照说明向软件中嵌入,应该是可以了。
过程中有搞不懂的再向老弟请教,嵌入完了一定再向老弟汇报。
[em45][em45][em45][em45][em45][em45][em45][em45][em45][em45]
3 楼
北京惬意 [专家分:1330] 发布于 2010-02-15 11:11:00
请教wzxc老弟:测试时下面这两句去掉了出错,但我不理解起什么作用的,子程序套在中间觉得不太合理?
诚挚的感谢!
DEFINE CLASS MyHandler AS Custom
PROCEDURE MyMouseMove
......
......
ENDDEFINE
4 楼
wzxc [专家分:9440] 发布于 2010-02-15 11:59:00
那是自定义类,去掉当然要出错了!!!
5 楼
北京惬意 [专家分:1330] 发布于 2010-02-15 12:05:00
哦!
那就是用:
DEFINE CLASS MyHandler AS Custom
ENDDEFINE
做了一个类,
在类中又写了一个子程序:
PROCEDURE MyMouseMove
......
......
这样理解可以吗?
6 楼
wzxc [专家分:9440] 发布于 2010-02-15 12:41:00
[img]http://blog.pfan.cn/upfile/201002/20100215124038.gif[/img]
7 楼
北京惬意 [专家分:1330] 发布于 2010-02-15 12:56:00
千言万语汇成一句话:
祝wzxc老弟及全家虎年幸福安康发大财!
8 楼
wzxc [专家分:9440] 发布于 2010-02-15 13:44:00
[img]http://blog.pfan.cn/upfile/201002/2010021513438.gif[/img]
9 楼
北京惬意 [专家分:1330] 发布于 2010-02-18 11:58:00
报告wzxc老师:
您1楼提供的方法和另一帖中提供的SYSMETRIC()函数,我都已经嵌入软件,使得软件界面能适应任何分辨率的屏幕,并且可以拉大缩小,十分理想。特此致以诚挚的感谢!
10 楼
wzxc [专家分:9440] 发布于 2010-02-19 14:50:00
[img]http://ftphi.bccn.net/001/201002/19/61975_12665617137cMg.gif[/img]
我来回复