有没有类似eval的函数,可以返回动态变量和对象?我现在有三个按钮(bt1,bt2,bt3),我想写个函数使得一个标签(Label) caption值为 所点击按钮 的 名字如:我点击了bt1,则label的caption值为bt1我是这么想的bt1 的click 为 SetCaption(1);
bt2 的click 为 SetCaption(2);
bt3 的click 为 SetCaption(3);
procedure SetCaption(id:String);
begin
       label[id].captin := id;
end;举上面的例子,并不是单纯的想解决这个问题。我做flash程序时,flash里有个eval函数可以返回相应对象,变量,但delphi里没有找到,不值谁知道?

解决方案 »

  1.   


    procedure   SetCaption(id:String); 
    begin 
                  label[id].captin   :=   id; 
    end; 
    忘说了这个函数并不对
      

  2.   

    d 的反射机制目前知道的只有 rtti。你的问题用以下方法实现不知道是否满足要求。procedure TFmXXX.OnSetCaption(sender: TObject);
    begin
      if sender is TButton then lblLabel.Caption := TButton(sender).Caption;
    end;初始化:btn1.OnClick := OnSetCaption;
    btn2.OnClick := OnSetCaption;
    btn3.OnClick := OnSetCaption;
      

  3.   

    非常感谢lynmison 的解答,我试了你的方法,可以用. 要是换成三个Label(即点击bt1,设置label1),还能用这种方法吗?
      

  4.   

    sender   
    Delphi中的这种方式用得很多,一种组件可以处理同一个事件,节省代码,呵呵。
      

  5.   

    看到了。
    我想问的是当点击三个按钮中的其中一个,怎么通过一个函数将所点击按钮的id号与Label值连起来构成一个对象,然后对其进行控制,flash中可以用eval("Label"+id)返回label1(假如id为1)这个对象