有没有类似eval的函数,可以返回动态变量和对象? ( 积分: 50 )

  • 主题发起人 主题发起人 dingsword
  • 开始时间 开始时间
D

dingsword

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在有三个按钮(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 := 'bt' +id
//这个函数并不对
end


举上面的例子,并不是单纯的想解决这个问题。

我做flash程序时,flash里有个eval函数可以返回相应对象,变量,但delphi里没有找到,不值谁知道?
 
先将多个BUTTON设置同一个方法如下
procedure TForm1.Button1Click(Sender: TObject);
begin
TButton(Sender).Caption:='SetCaption'+IntToStr(TButton(Sender).Tag);
end;
最后设置Button的TAG值就搞定了。
 
bbscom,非常感谢你的解答,不过我没看懂?我是想用一个函数来实现点击三个按钮时,设置相应label caption属性
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
// 全代码
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
MyCom:TComponent;
begin
if Sender is TButton then
begin
I:=TButton(Sender).Tag;
MyCom:=Self.FindComponent('Label'+IntToStr(I));
if MyCom <> nil then
TLabel(MyCom).Caption:='SetCaption('+IntToStr(I)+')';
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Tag:=1;
Button2.Tag:=2;
Button3.Tag:=3;
Button2.OnClick:=Button1Click;
Button3.OnClick:=Button1Click;
end;

end.
 
后退
顶部