Blue
Red
Green
Orange
Voilet
Slate
Dark

能否用字符串代替控件名称?例如:a:="edit1",a.text:="hello";(50分)

W

winall

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi 还没提供此功能
不过你可以用
edit1.name:='nam';
nam.text:=???
 

阿器

Unregistered / Unconfirmed
GUEST, unregistred user!
乱说:
使用对象指针,a:^Tedit
我想可以实现,不过不是把string变成某种控件
而是已分配了此控件,只不过用string来指定此控件
在想想
 
I

iie

Unregistered / Unconfirmed
GUEST, unregistred user!
1,不要把数据库原语拿来跟pascal比较
2,尽可能忘掉数据库编程时学来的那些技巧
3,pascal实现宏代换也很容易
4,delphi的VCL也提供了一个符号代换的资源:TAG
5,delphi中的宏代换可以简单地逆向实现:
case AComponent.Tag of
Id1: ...;
Id2: ...;
else
...;
end;
 
B

barton

Unregistered / Unconfirmed
GUEST, unregistred user!
字符串替换控件的方法以上shangcm和hpretty讲得都可以.不过在实际应用中用处并不大.
代替函数也不是不行.只是需要变通.把你要使用的所有函数用一个dll封装,然后用LoadLibrary
装入内存,用GetProcAddress来取地址运行.基本上Fox能做的事Delphi都能做.只是没有那么
方便罢了.
面向对象肯定比面向过程优越.你还需要转这个大弯.你转过这个弯就会发现你的思路稍有点
问题.现在都到COM时代了,就别再追究什么函数或字符串了.
 
Z

zhao0707

Unregistered / Unconfirmed
GUEST, unregistred user!
行,只要把A定义为TEDIT类型
 
Z

zhongpu

Unregistered / Unconfirmed
GUEST, unregistred user!
得了,用简单的替换在delphi里肯定是不行的。
要在运行时实现字符串对应控件或函数(如在InputEdit(TEdit)中输入'lable1'或'sin(x)'),只能变相的
用FindComponent,Components.Name=InputdEdit.Text,...的方法。
而对函数或过程,要用手工代码识别,做编译程序完成的工作。
 
J

jnleis

Unregistered / Unconfirmed
GUEST, unregistred user!
干吗舍近求远呢??
 
K

kccp

Unregistered / Unconfirmed
GUEST, unregistred user!
没这个必要。
 
H

htw

Unregistered / Unconfirmed
GUEST, unregistred user!
没事找事做!
 

程云

Unregistered / Unconfirmed
GUEST, unregistred user!
可以这样,
a:='edit1';
TEdit(FindComponent(a)).text:='asdfasdf';
 
F

fresh

Unregistered / Unconfirmed
GUEST, unregistred user!
在类已注册的情况下
是可以用字符串来定位的
 

栋栋

Unregistered / Unconfirmed
GUEST, unregistred user!
有必要研究吗?
 
Z

zhengzhijia

Unregistered / Unconfirmed
GUEST, unregistred user!
程云的方法挺简单。
其实,这个问题的提出没有太多的实用价值。
对不起!个人认为。
 

程云

Unregistered / Unconfirmed
GUEST, unregistred user!
这个只在有大量动态生成的对象时,
如需要引用这些对象,
哪就只有这样作了,
一般是用不着的。
 
J

joyman

Unregistered / Unconfirmed
GUEST, unregistred user!
你最好加个判断:
if (FindComponent('edit'+inttostr(i)) is TEdit) then

FindComponent('edit'+inttostr(i)).text:='asdfasdf';
这样在动态的时候保险多啦,要不就会出错。。。。。
 
L

Liyue

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
770
import
I
I
回复
0
查看
538
import
I
顶部 底部