当我有20个组件的数组,可以从代码中以编程方式创建,并向所有组件添加相同的onClick过程时,是否可以通过Sender变量获取组件的数组索引步骤?
我知道我可以通过(Sender as TComponentType).Property访问其他属性,但这几乎就是我想到的与Sender变量有关的所有内容。
例:
var Button: array [0..9] of TButton;
for i := 0 to 9 do
begin
Button[i]:=TButton.Create(Self);
Button[i].OnClick:=ButtonClick;
end;
procedure ButtonClick(Sender: TObject);
begin
// Here I'd like to get the "i" of the sender Button[i]
end
最佳答案
为了清楚起见,将不同的答案发布为社区Wiki(对我来说没有投票),因为没有人出于某些奇怪的原因愿意发布它们
您可以从TButton创建自定义后代,然后向其中添加自己的字段:
type
TMyButton = class(TButton)
public
Tag2: Integer;
end;
for i := 0 to 9 do
begin
Button[i] := TMyButton.Create(Self);
Button[i].OnClick := ButtonClick;
Button[i].Tag2 := i;
end;
procedure ButtonClick(Sender: TObject);
var
i: Integer;
begin
// get the "i" of the sender Button from Tag
i := TMyButton(Sender).Tag2;
end;
关于delphi - 在Delphi中获取发送方组件的数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28422710/