| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3409 人关注过本帖
标题:如何获取表单的内存变量名(表单对象变量的名称)?
只看楼主 加入收藏
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
我问的是:在命令窗口用什么指令或函数,找出屏幕上这个正在运行的表单的O型变量?这个指令或函数能告诉我,这个O型变量叫abc,我就可以用类似的指令去调用表单中的控件。

楼主,当你设置
abc 为全局变量,并且在运行了do form abc 后,就不要用什么指令或函数,就可以用类似的指令去调用表单中的控件。我经常用类似的指令。
2011-08-06 14:52
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
在表单内部,表单的所有控件,它们的引用,用它的 NAME .
在表单外部,某个表单的变量类似 abc .
在表单外部,某个表单内的控件的引用就类似
但是 abc 必须在运行 do form abc 前,先定义为全局变量。
2011-08-06 15:06
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
收藏
得分:0 
DO FORM 命令

运行一个用表单设计器创建的、编译过的表单或表单集。

 
DO FORM FormName | ? [NAME VarName [LINKED]] [WITH cParameterList]
   [TO VarName] [NOREAD] [NOSHOW]
 
参数
FormName

指定要运行的表单或表单集的名称。
? 

显示运行(Do)对话框,从中选择要运行的表单或表单集。

NAME VarName [LINKED]

指定一个用来引用表单或表单集的内存变量或数组元素。如果指定的内存变量不存在,Microsoft Visual FoxPro 将自动创建它。如果指定一个数组元素,则在执行 DO FORM 之前,该数组必须存在。如果指定的内存变量或数组元素已经存在,则改写原有内容。如果省略 NAME 子句,则 Visual FoxPro 创建一个与表单或表单集文件同名的对象型内存变量。包含 LINKED 可用来连接表单到相关联的内存变量,当变量超出作用域时释放表单。如果没有包含 LINKED,即使没有与表单相关联的内存变量,表单仍可以是活动的。

认真看书学习,弄通Fox主义。
2011-08-06 18:17
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
回复 11楼 panpende
本以为这个?_Screen.Forms(2).name 可以解决问题的
结果和要求不相符 我也期待这个答案

[ 本帖最后由 寻H不得 于 2011-8-6 20:57 编辑 ]
2011-08-06 20:42
xvfp
Rank: 2
等 级:论坛游民
帖 子:34
专家分:24
注 册:2011-4-13
收藏
得分:0 
10楼:“在程序内存中,VFP以xyz为对象依据,abc是没用的,它只是从磁盘中提取表单文件时使用的,映射回xyz。”不对。且正相反,xyz是没用的、abc是此表单容器的名字,可以用等等指令。
14楼已做过实验,发现了我同样的问题。请各位在vfp中实验一下,并
请各位读清楚我的问题:用指令或函数找出表单的O型变量
2011-08-06 23:40
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:20 
以下是引用xvfp在2011-8-6 09:38:37的发言:

例如:
一个表单的文件名为abc.scx;
do form abc后,就自动产生了该表单的内存变量名abc
该表单上有一个按钮,按下后,需要获取这个内存变量名,我找不到该用哪条指令或函数。
注:不是取表单的name属性。


? sys(1271,this)




SYS(1271) - Object's .SCX File  

Returns the name of the .SCX file in which the specified instantiated object is stored.
 
SYS(1271, oObjectName)

Parameters
oObjectName
Specifies the name of the object for which the .scx file is returned.

Return Value
Character, Logical

Remarks
SYS(1271) returns the name of the .scx file in which the specified instantiated object is stored.

SYS(1271) returns a logical false (.F.) if the object cannot be located in an .scx file (for example, if the object was created from the Command window).

2011-08-07 02:07
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
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
且正相反,xyz是没用的、abc是此表单容器的名字,可以用等等指令。

请各位读清楚我的问题:用指令或函数找出表单的O型变量

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

我在写控件的类文件。我仅知道,未来这个控件会放置于表单上,且要读取表单的O型变量名;我不可能知道未来的表单名是什么。
为了简化问题,便于坛子里的狐友快速理解,我才举例要找出abc。
另外,此控件也不能用this.parent, thisform等方式访问它所在的表单,因为它要访问屏幕上同时打开的其它表单(抱歉,不再更多解释,全写出来太费劲了)。
2011-08-07 08:50
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
哦,原来如此。那么SYS(1271, )也只能帮助你找到你的控件所在的表单的O型变量,对于同时打开的其它表单也帮不上忙,因为你说不可能知道未来的表单名是什么。
如果是这样的话,你或许要重新考虑如何设计这个控件。
2011-08-07 13:44
快速回复:如何获取表单的内存变量名(表单对象变量的名称)?
数据加载中...
 
   



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

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