如何运行时在按钮的click事件中写代码?

magnetmoon 2002-12-22 10:26:55
在表单运行时间,用下列命令可以得到click事件的代码
?thisform.cmdCancel.ReadMethod('click')
我想运行时在click事件中写代码,用下列命令
thisform.cmdCancel.WriteMethod('click','thisform.release')
但总是出错,信息为
Feature is only available if the object is in design mode
不知运行时能否在click事件中写代码?
盼高手指导!

...全文
610 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolyylu 2002-12-24
  • 打赏
  • 举报
回复
或者通过向表单添加属性osc
thisform.osc = NEWOBJECT([sc] ,[sc.prg])
coolyylu 2002-12-24
  • 打赏
  • 举报
回复
*- 多加一行public osc
*- 对象不存在是不行的.
PUBLIC osc
oSc = NEWOBJECT([sc] ,[sc.prg])
BINDEVENT(thisform.command2,[click] ,oSc,[click])
magnetmoon 2002-12-24
  • 打赏
  • 举报
回复
谢谢coolyylu(将来是我) ,我试了一下,
系统示例可正常运行,但自己写的却不行,请帮我看一下
表单上有2个command按钮,command1.click代码:
oSc = NEWOBJECT([sc] ,[sc.prg])
BINDEVENT(thisform.command2,[click] ,oSc ,[click])
运行后按command1,再按command2,却没反应,
sc.prg代码仍是上面的(如下):
DEFINE CLASS sc as Session
PROCEDURE click
? CHR(13) + _screen.Caption + STR(SECONDS())
ENDPROC
ENDDEFINE

coolyylu 2002-12-24
  • 打赏
  • 举报
回复
vfp8里面可以动态绑定事件代码,例子如下:

*- 绑定_Screen对象的Click事件的代码
oSc = NEWOBJECT([sc] ,[sc.prg])
BINDEVENT(_screen,[click] ,oSc ,[click])

*- sc这个类的定义如下:
DEFINE CLASS sc as Session

PROCEDURE click
? CHR(13) + _screen.Caption + STR(SECONDS())
ENDPROC
ENDDEFINE

是不是这样做,很有意思阿?
vongates968 2002-12-23
  • 打赏
  • 举报
回复
我也覺得樓上有理,vfp不能動態寫事件,
magnetmoon 2002-12-23
  • 打赏
  • 举报
回复
to:net_steven(吃素的狼(平平淡淡))
我看了帮助,不太明白!
比如要往cancel按钮里写代码,用下列命令也不对!
ExecScript('thisform.release',thisfrom.cmdCancel)

以下是原文帮助:

Enables you to run multiple lines of code from variables, tables, and other text at runtime.

ExecScript(cExpression [, eParameter1, eParameter2, ...])
Parameters
cExpression
Represents the text, a variable, type string, or memo to be executed as code.
eParameter1, eParameter2, …
Optional. Specify parameters passed to a script that has a parameter statement in first line.
Return Values
The return value is the value returned by the script in cExpression. If the script returns no value, Visual FoxPro returns .T.

Remarks
ExecScript( ), unlike macro expansion, provides the same effect as selecting several lines of code in the command window then pressing the Enter key.


net_steven 2002-12-23
  • 打赏
  • 举报
回复
vfp7/8 有一个execscript()函数,可以实现这个功能,之前的版本只好如liuri所说的方式了。
knightcq 2002-12-23
  • 打赏
  • 举报
回复
VFP中不能写动态事件最好是定义一个类
liuri璇玑 2002-12-22
  • 打赏
  • 举报
回复
那就把textbox做成一个类好了,在类里写共同的代码,
magnetmoon 2002-12-22
  • 打赏
  • 举报
回复
我的grid的所有textbox控件(60个)的
lostfocus事件中都要执行下面的代码:
thisform.clac_total()
每个都事先写好太麻烦,想动态写事件,
不知能否实现?
qqqdong 2002-12-22
  • 打赏
  • 举报
回复
怎么需要这样做????
magnetmoon 2002-12-22
  • 打赏
  • 举报
回复
关键是这个textbox在grid1.column(共60个)中,
是否grid1也要用类代替.然后在grid1.init事件中处理:
.columns(i).RemoveObject()
.columns(i).AddObject()

好象vfp不能动态写事件,不知大家用过没有?
fly_dream0323 2002-12-22
  • 打赏
  • 举报
回复
赞成liuri(璇玑) 说的
define class usertextbox as textbox
procedure lostfocus
thisform.clac_total()
endproc
enddefine

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧