Tag 属性的使用(60分)

  • 主题发起人 主题发起人 W1979
  • 开始时间 开始时间
W

W1979

Unregistered / Unconfirmed
GUEST, unregistred user!
窗体上放有一堆edit,我想在程序中访问其中某一个,我用
TEdit(form1.components.text):=str;
我想知道
* 用Edit的Tag属性如何象这样一行解决?
* 虽然用出来了,实际我还不太懂,形如TEdit(...)的写法是
什么意思?
 
>TEdit(form1.components.text):=str;
应该是TEdit(form1.components).text:=str;
TEdit()是强制类型转换!
如果用Tag:longint 可以在Tag中存放字符串的地址指针
 
说清楚些。
 
SSS:是全局变量!如果定义为局部变量,用完将释放,TAG中的地址指针再也找不到
她了。
.....
var
Form1: TForm1;
SSS:string;
implementation
{$R *.DFM}
procedure TForm1.Button3Click(Sender: TObject);
//首先给SSS赋值
begin
sss:=edit2.text;
end;

procedure TForm1.Button1Click(Sender: TObject);
//给Tag们赋值
begin
edit1.Tag:=longint(addr(s));
edit2.tag:=longint(addr(edit1));
end;

procedure TForm1.Button2Click(Sender: TObject);//显示他们
begin
showmessage('sss='+string(ptr(edit1.tag)^));
Showmessage('edit1.text==='+Tedit(ptr(edit2.tag)^).text);
end;

 
好像写错了吧!
应该是
TEdit(Form1.Component).Text := Str;

TEdit(xxxx)是强制性转化的语言
一般如果要找控件的话可以这样
1、特定的名称的可以用FindComponent(控件名)找到控件
2、如果用Tag的话,就是在一开始就在初始化的时候加上
with Edit[x]do
begin
inc(i);
Tag := i;
end;
然后寻找的时候只要寻找Tag = 特定值的控件
也可以用As操作符,这是比较规范的,强制转换会有的时候出问题
如果用As要这样写
with Component as TEditdo
begin
Text := Str;
end;
 
多人接受答案了。
 
后退
顶部