| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3409 人关注过本帖
标题:如何获取表单的内存变量名(表单对象变量的名称)?
取消只看楼主 加入收藏
xvfp
Rank: 2
等 级:论坛游民
帖 子:34
专家分:24
注 册:2011-4-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
如何获取表单的内存变量名(表单对象变量的名称)?
例如:
一个表单的文件名为abc.scx;
do form abc后,就自动产生了该表单的内存变量名abc;
该表单上有一个按钮,按下后,需要获取这个内存变量名,我找不到该用哪条指令或函数。
注:不是取表单的name属性。
搜索更多相关主题的帖子: 内存 如何 
2011-08-06 09:38
xvfp
Rank: 2
等 级:论坛游民
帖 子:34
专家分:24
注 册:2011-4-13
收藏
得分:0 
回应Tony:
对于表单中的控件,完全可以用这些控件的name属性去调用它们。但是,表单则不同:
1.表单的name可以在运行时、用程序去任意修改。如果用这个name去调用表单中的其他控件会报错,因为屏幕上可以同时存在多个表单、且它们的name属性可以相同。
2.表单在运行时,会产生这个表单唯一的内存变量名,且运行后不可更改。用这个变量名可以调用表单上的控件。屏幕上可以同时存在多个表单、且它们的变量名都不相同。

我问的是:
表单运行后,此表单上的一个控件需要取得此表单【唯一的内存变量名】。(尽管在编程时,我知道它的名字,就像1楼的abc,可是如何用程序去取这个变量,得到其内容为abc?)
2011-08-06 12:33
xvfp
Rank: 2
等 级:论坛游民
帖 子:34
专家分:24
注 册:2011-4-13
收藏
得分:0 
以下是引用TonyDeng在2011-8-6 13:21:24的发言:

你用MESSAGEBOX(ThisForm.Name)看看是不是"abc"?
不是的。
用vfp的表单设计器设计一个表单,默认name属性为form1,但在设计时,可以改成xyz;退出设计器时,会要求存盘,且可以取个名字叫abc;此时可以在硬盘上看到两个文件:abc.scx和abc.sct
do form abc后,MESSAGEBOX(ThisForm.Name),显示xyz,而内存中有一个O型变量abc。此时在命令窗口:
?可以执行(command1为这个表单上的一个按钮)
?不可以执行,报错。

我问的是:在命令窗口用什么指令或函数,找出屏幕上这个正在运行的表单的O型变量?这个指令或函数能告诉我,这个O型变量叫abc,我就可以用类似的指令去调用表单中的控件。
2011-08-06 13:53
xvfp
Rank: 2
等 级:论坛游民
帖 子:34
专家分:24
注 册:2011-4-13
收藏
得分:0 
10楼:“在程序内存中,VFP以xyz为对象依据,abc是没用的,它只是从磁盘中提取表单文件时使用的,映射回xyz。”不对。且正相反,xyz是没用的、abc是此表单容器的名字,可以用等等指令。
14楼已做过实验,发现了我同样的问题。请各位在vfp中实验一下,并
请各位读清楚我的问题:用指令或函数找出表单的O型变量
2011-08-06 23:40
xvfp
Rank: 2
等 级:论坛游民
帖 子:34
专家分:24
注 册:2011-4-13
收藏
得分:0 
回楼上:你知道我在找什么,你的方法目前可行:
cObjName=SYS(1271, thisform)
cObjName=SUBSTR(cObjName,1,AT('.scx',cObjName)-1)
DO WHILE AT('\',cObjName)>0
    cObjName=SUBSTR(cObjName,AT('\',cObjName)+1)
ENDDO
?cObjName  (显示abc)
如果没有更好的答案,你独得20分。

但是,应用系统编译后,安装到用户电脑上的exe文件恐怕不能运行了吧?因为用户电脑上没有abc.scx文件。
或许还有更好的答案...等待中

2011-08-07 07:20
xvfp
Rank: 2
等 级:论坛游民
帖 子:34
专家分:24
注 册:2011-4-13
收藏
得分:0 
回:楼主,其实不用费力用指令或函数找出表单的O型变量,就可以用等等指令。

我在写控件的类文件。我仅知道,未来这个控件会放置于表单上,且要读取表单的O型变量名;我不可能知道未来的表单名是什么。
为了简化问题,便于坛子里的狐友快速理解,我才举例要找出abc。
另外,此控件也不能用this.parent, thisform等方式访问它所在的表单,因为它要访问屏幕上同时打开的其它表单(抱歉,不再更多解释,全写出来太费劲了)。
2011-08-07 08:50
快速回复:如何获取表单的内存变量名(表单对象变量的名称)?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030565 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved