主题:求助使用thisform提示只能在方法程序中使用
hge1987
[专家分:0] 发布于 2012-11-03 10:18:00
创建一个.prg的文件,里面全部写的 procedure 用于表单调用,
在表单中用set procedure to ***
close procedure 调用
但是如果在procedure中写有thisfrom,或this就提示“只能在方法程序中使用”
如
在123.prg文件中写
procedure abc
parameters a
if a=1
thisform.label1.caption="xxx"
endif
endpro
在表单中
set procedure to 123
do abc with 1
close procedure
运行表单,提示只能在方法程序中使用。
最后更新于:2012-11-03 10:40:00
回复列表 (共9个回复)
沙发
martine [专家分:4950] 发布于 2012-11-03 11:22:00
这是正常的,你定义form了吗?
板凳
hge1987 [专家分:0] 发布于 2012-11-03 15:46:00
怎么定义?
3 楼
hge1987 [专家分:0] 发布于 2012-11-03 15:50:00
我现在要写一个 过程 里面要写thisform.***.***=***用来修改表单控件的属性。
而这个过程可能会重复用到,
所以有没有其他的命令代替thisform使其能达到目的。
4 楼
wuzhouhong [专家分:10890] 发布于 2012-11-05 14:23:00
prg文件和对象之间是绝缘的,prg不可以直接访问对象的名字,一定要在prg文件中使用对象,必须要将对象地址传递给prg文件。
比如在表单中调用prg文件 do prg123.prg with this
在prg文件中使用参数传递
para oPrarentObjectName && oPrarentObjectName就是被引用的表单地址
oPrarentObjectName.command1.Click() && 调用上级表单中控件Commond1的事件Click()
5 楼
liupeisong [专家分:2340] 发布于 2012-11-05 17:10:00
[quote]prg文件和对象之间是绝缘的,prg不可以直接访问对象的名字,一定要在prg文件中使用对象,必须要将对象地址传递给prg文件。
比如在表单中调用prg文件 do prg123.prg with this
在prg文件中使用参数传递
para oPrarentObjectName && oPrarentObjectName就是被引用的表单地址
oPrarentObjectName.command1.Click() && 调用上级表单中控件Commond1的事件Click()
[/quote]
还有这种用法!
学习了
6 楼
hge1987 [专家分:0] 发布于 2012-11-06 11:19:00
[quote]prg文件和对象之间是绝缘的,prg不可以直接访问对象的名字,一定要在prg文件中使用对象,必须要将对象地址传递给prg文件。
比如在表单中调用prg文件 do prg123.prg with this
在prg文件中使用参数传递
para oPrarentObjectName && oPrarentObjectName就是被引用的表单地址
oPrarentObjectName.command1.Click() && 调用上级表单中控件Commond1的事件Click()
[/quote]
这句话:
para oPrarentObjectName && oPrarentObjectName就是被引用的表单地址
“表单地址”是表单存放的物理地址吗?例如:d:\rsgl\表单1.scx 是这样吗?
7 楼
hge1987 [专家分:0] 发布于 2012-11-06 11:27:00
[quote]prg文件和对象之间是绝缘的,prg不可以直接访问对象的名字,一定要在prg文件中使用对象,必须要将对象地址传递给prg文件。
比如在表单中调用prg文件 do prg123.prg with this
在prg文件中使用参数传递
para oPrarentObjectName && oPrarentObjectName就是被引用的表单地址
oPrarentObjectName.command1.Click() && 调用上级表单中控件Commond1的事件Click()
[/quote]
经测试似乎不行,能举个完整的例子吗?
8 楼
qjbzjp [专家分:8830] 发布于 2012-11-07 20:39:00
完全可以啊,4楼讲得应该很明白了,楼主没理解对。
do abc WITH 1,this
PROCEDURE abc
PARAMETERS x,y
IF x=1
y.label2.caption="xxx"
ENDIF
ENDPROC
9 楼
hge1987 [专家分:0] 发布于 2012-11-08 10:17:00
[quote]完全可以啊,4楼讲得应该很明白了,楼主没理解对。
do abc WITH 1,this
PROCEDURE abc
PARAMETERS x,y
IF x=1
y.label2.caption="xxx"
ENDIF
ENDPROC
[/quote]
根据楼上的做法完全可以,但是把搂收this或thisform的变量“y“换成"a,b,c,b,e,f,g"这几个字母均提示"不能识别的命令谓词"。。。!!!就求解,是VFP有规定吗?
我来回复