用create方法创建了一个几个动态按钮怎么相应?
各位达人:
用create方法创建了一个几个动态按钮怎么相应?
......
var
button:TButton;
begin
for i:=1 to 5 do
begin
button:=TButton.Create(nil);
......
end;
end;
请问:
这里创建了5个按钮控件
1 怎么来编写代码相应鼠标的单击事件?
2 这5个按钮,他们的名字是什么?
谢谢!
[解决办法]
var
button:TButton;
begin
for i:=1 to 5 do
begin
button:=TButton.Create(nil);
button.name := 'a'+ inttostr(i); //这样给控件个名字
case i of
1: Button.OnClick:=MyButton1Click; //这样给按钮给个事件
2: Button.OnClick:=MyButton2Click; //这样给按钮给个事件
.
.
.
end;
......
end;
end;
[解决办法]
private { Private declarations } procedure ButtonClick(Sender: TObject); public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ButtonClick(Sender: TObject);begin //end;procedure TForm1.Button2Click(Sender: TObject);varbutton:TButton;I:Integer;begin for i:=1 to 5 do begin button:=TButton.Create(nil); .... button.Tag:=I; button.OnClick:=ButtonClick; end;end;
[解决办法]
100的比方是我说的,怎么我成了楼主?
我是说 hmzgz81 的例子不怎么好
case i of
1: Button.OnClick:=MyButton1Click; //这样给按钮给个事件
2: Button.OnClick:=MyButton2Click; //这样给按钮给个事件
end;
[解决办法]
第1点“ccdarkness”的方法就很不错。
第2点如果你创建的时候没有给它们命名,它们就没有名字。
[解决办法]
4楼的方式才是比较好用的
共用处理过程写法:
procedure TForm1.ButtonClick(Sender: TObject);begin //.. case (Sender as TButton).Tag of 1: doFunc1(); 2: doFunc2(); ... n: end;end;