动态控件的标志(100分)

  • 主题发起人 主题发起人 向红林
  • 开始时间 开始时间

向红林

Unregistered / Unconfirmed
GUEST, unregistred user!
20个动态控件的事件是同一个CLICK 过程。
怎么判断是哪个动态控件触发的。
 
控件创建之时,给它的Tag属性写入一个编号,然后在CLICK过程中case其Tag值即可.
Tag本来就是一个无用的变量,但此时却有用了.
 
xiangya说得很对,Tag变量看似无关紧要,其实用处是很大的.
 
其实 Sender 就是干这个的,但由于不好判断,所以用 tag 来代替
不过 tag 还有其他用途的。
 
两种方式可以处理,其一是宣告数组方式用循环Run出是哪一个数组的指针,其二用上叙的方法依Tag的值。
 
不行呀。我的程序
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
lblPick: TButton;
begin
for i := 0 to 19 do
begin
lblPick:=TButton.Create(form1);
lblPick.Parent := form1; //注意将其Parent置为容器(一般为Form)
lblPick.Left :=74*(i div 5);
lblPick.Top := (i mod 5)*24;
lblPick.Caption := IntToStr(i+1);
lblPick.Hint :=IntToStr(i+1);
lblPick.Tag:=i;
lblPick.ShowHint :=true;
lblPick.OnClick:=Button2Click;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var ai:integer;
begin
//怎么判断哪个lblPick的Click。
Ai:=lblPick.Tag;//
caption:=inttostr(ai);//返回19。不是我要的。

end;



 
ShowMessage(TButton(Sender).Caption);
 
多人接受答案了。
 
后退
顶部