vfp中thisform怎么用、什么时候用?

2024-12-22 13:16:06
推荐回答(3个)
回答1:

如果用到表单集了,那么一般要定位一个控件,需要这样写:

thisforset.form1.****
如果没有表单集,那么一般要定位一个控件,需要这样写:

thisform.****

这都算是绝对引用,也就是从源头开始寻找控件。

相对引用就是从自己开始,去寻找另外一个控件。

很多时候使用相对引用会更好,因为这样也许会减少你修改代码的工作量。

比如,你在表单上放了一个optiongroup,同时放了一个commandbutton,在点击这个button时,在click代码中需要访问optiongroup的值。

如果是绝对引用,应该这样写:thisform.optiongroup1.Value
而如果是相对引用,则应该这样写:this.Parent.optiongroup1.Value

看起来相对引用代码要长,这样写究竟好不好?

我们来分析一下。
如果你用的是绝对引用,那么,当你在表单上创建了一个Pageframe,并且把optiongroup和commandbutton的位置调整到了Pageframe的page1上,这个时候,你button的click代码就有错误了,需要改成:
thisform.pageframe1.page1.optiongroup1.Value
这样,才能从源头开始正确的找到optiongroup1.Value。

而如果你用的是相对引用,那么我可以高兴的告诉你,当你把optiongroup和commandbutton的位置调整到了Pageframe的page1上,这个时候,你button的click代码不需要做任何修改,依然是
this.Parent.optiongroup1.Value

这就是使用相对路径的好处。

看明白了么?

回答2:

表单是一个容器,那么里面的控件引用就得用到它
如果表单有个文本框 thisform.text1...
如果表单中有个容器控件container1
而容器控件里又加了一个文本框(是在容器控件编辑状态下添加的),若要对文本框设为不可用则命令为 thisform.container1.text1.enabled=.f.
上面的命令是写在表单的事件中如init里的,若要写在文本框的init事件中的话
可以这样写,也可以用相对引用如this.enabled=.f.

回答3:

thisform.text1.value="123"
设置当前表单中 text1 的值为 123
thisform.refresh
刷新当前表单
thisform.release
释放当前表单“内存”