字符串与控件属性问题!非常深奥! (100分)

  • 主题发起人 主题发起人 猜不透
  • 开始时间 开始时间

猜不透

Unregistered / Unconfirmed
GUEST, unregistred user!
[^]如何将字符串转换为控件属性?
例如:
i:string;
k:string;
label1.caption:='123';
i:='label1.caption';
这加入何语句可将k的值等于label1.caption的值123.
k:=i;//此句不能改。
即要使k:=label1.caption;
而非k:='label1.caption';
 
没有这样的。
 
i:=label1.cpation;在
k:=i;后
k就为'123'.
不行吗????
 
[:)]Easy!
Form上放一TEdit, TLabel加一TButton:

uses TypInfo;

procedure TForm1.Button1Click(Sender: TObject);
function GetValue(AStr: string): string;
var
ComName, PropName: string;
begin
ComName := Copy(AStr, 1, Pos('.', AStr) - 1);
PropName := Copy(AStr, Pos('.', AStr) + 1, Length(AStr));
Result := GetStrProp(FindComponent(ComName), PropName);
end;
var
S: string;
begin
S := 'label1.caption';
ShowMessage(GetValue(S));
S := 'Edit1.Text';
ShowMessage(GetValue(S));
end;


 
我为的是如何将字符串转换为控件属性,不是说调位置。
不过还是非常感谢!
 
调什么位置? 你执行我的代码没有实现你要的效果吗?
S := 'label1.caption';
ShowMessage(GetValue(S));//显示的就是Label1.Caption,即'Label1'
S := 'Edit1.Text';
ShowMessage(GetValue(S));//显示的是'Edit1',如果你改了就显示你改变的内容。
 
那句是对你楼上那位大哥说的。我还没试。对不起!
 
我去试试!谢谢你!xianjun,dongberlin。只是小弟分不多,不能重谢!
 
谢谢!希望大家继续发表。小弟有分时必定送上!
 
提供另外一个思路 :
Var
arrLabel :array [1..5] of Label ;
Begin
arrLabel[1] :=Label1 ;
arrLabel[2] :=Label2 ;
arrLabel[3] :=Label3 ;
arrLabel[4] :=Label4 ;
arrLabel[5] :=Label5 ;
arrLabel[1].Caption :='sdfsd';
......
End ;
也能对程序操作简单一点,也可以这样来的。
我的程序里也用好多这样的,很方便控制的。
 
谢谢你们指点。
如果是i:='label1.caption+label2.caption+'asdf'';
那又要怎么样?
 
照我的办法就是把Label1与Label2找出来,然后再把属性名称“Caption”分出来
 
后退
顶部