回 帖 发 新 帖 刷新版面

主题:求助使用thisform提示只能在方法程序中使用

创建一个.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

运行表单,提示只能在方法程序中使用。

回复列表 (共9个回复)

沙发

这是正常的,你定义form了吗?

板凳

怎么定义?

3 楼

我现在要写一个 过程 里面要写thisform.***.***=***用来修改表单控件的属性。
而这个过程可能会重复用到,
所以有没有其他的命令代替thisform使其能达到目的。

4 楼

prg文件和对象之间是绝缘的,prg不可以直接访问对象的名字,一定要在prg文件中使用对象,必须要将对象地址传递给prg文件。



比如在表单中调用prg文件 do  prg123.prg with this



在prg文件中使用参数传递
para oPrarentObjectName            && oPrarentObjectName就是被引用的表单地址
oPrarentObjectName.command1.Click()    && 调用上级表单中控件Commond1的事件Click()

5 楼

[quote]prg文件和对象之间是绝缘的,prg不可以直接访问对象的名字,一定要在prg文件中使用对象,必须要将对象地址传递给prg文件。



比如在表单中调用prg文件 do prg123.prg with this



在prg文件中使用参数传递
para oPrarentObjectName && oPrarentObjectName就是被引用的表单地址
oPrarentObjectName.command1.Click() && 调用上级表单中控件Commond1的事件Click()
[/quote]
还有这种用法!
学习了

6 楼

[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 楼

[quote]prg文件和对象之间是绝缘的,prg不可以直接访问对象的名字,一定要在prg文件中使用对象,必须要将对象地址传递给prg文件。



比如在表单中调用prg文件 do prg123.prg with this



在prg文件中使用参数传递
para oPrarentObjectName && oPrarentObjectName就是被引用的表单地址
oPrarentObjectName.command1.Click() && 调用上级表单中控件Commond1的事件Click()
[/quote]
经测试似乎不行,能举个完整的例子吗?

8 楼

完全可以啊,4楼讲得应该很明白了,楼主没理解对。

do abc WITH 1,this

PROCEDURE abc
 
PARAMETERS x,y

    IF x=1 

        y.label2.caption="xxx" 

    ENDIF 
 
ENDPROC  

9 楼

[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有规定吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册