比如说:Tlabel有Caption、name属性等。
我从TSockServer上传来了4个字符串:'Caption','bb','name','aa',并把'Caption'赋给字符串ABC,ABC:='Caption';把'bb'赋给字符串EE,EE:='bb';
当我要把Label1的Caption赋值'bb'时,能不能帮Label1.Caption取个“别名”Label1.ABC?则这样用:Label1.ABC:=EE;

解决方案 »

  1.   

    uses typinfo;SetPropValue(Label1, ABC, EE);前提是第二个参数所代表的属性存在,否则出错
      

  2.   

    我测试了一下:
    SetPropValue(Label1,caption,'EE');
    label1.EE:='a';第一句可以跑
    第二句就跑不过了:undeclared identifier:'EE'。
    请再赐教???
      

  3.   

    -_-#SetPropValue(Label1, ABC, EE); //这就是相当于给属性Caption(别名ABC)赋值为EE(实际为'bb')了……
      

  4.   

    实际上Delphi并没有别名这一说法,但是通过类似的这些函数用字符串的形式来访问或者修改属性
      

  5.   

    SetPropValue(Label1, ABC, EE);
    //我这个回答是根据你问题的ABC := 'Caption'; EE := 'bb'来做的,你可以仔细看看SetPropValue实现代码中的参数名称就可以明白各个参数所代表的意义了
      

  6.   

    我跑了一下,SetPropValue(Label1, 'caption', 'EE');
    能行,效果相当于,Label1.Caption:='EE';
    不过可能我没有讲明白意思,我想的是,能不能把属性Caption换个名字EE?
    要这样用,Label1.EE:='aaass';相当于Label1.Caption:='aaass';
    ????
      

  7.   

    给个思路
    TALabel=class(TLable,IDispatch)
    end;a: variant;
    begin
    a := TALable.Create;
    a.EE := 'ddd';
    end;