我正在使用Delphi XE5制作Firemonkey移动应用程序,并且有一个包含10个按钮的垂直滚动框。文本由用户添加,一旦所有按钮都有一些文本,就会使用以下代码为其他文本创建一个新按钮:
NewButton := TButton.Create(Self);
with NewButton do
begin
Parent := pnlWaiting;
Height := 40;
Width := 160;
Position.X := 20;
Position.Y := WaitingButtonY;
TextAlign := TTextAlign(1);
OnClick := WaitingButtonsClick;
Text := edtPlayerName.Text;
Enabled := True;
Visible := True;
Name := 'Waiting' + IntToStr(loop);
end;
WaitingButtons.AddObject(NewButton.Name, NewButton);
按钮创建正常,并显示在垂直滚动框内,但完全不可点击。我添加了一个循环来遍历WaitingButtons TStringList中包含的每个按钮,告诉我它是否已启用,它确实说它已启用。
一旦我添加了另一个按钮,使用与上面完全相同的代码,前一个按钮突然可以点击,但新按钮不是。
造成这种情况的原因是什么?!
答案 0 :(得分:0)
尝试添加TAG作为按钮的ID。然后当调用onClick方法处理它时:
procedure TForm1.WaitingButtonsClick(Sender: TObject);
var
id:Integer;
begin
id := TButton(Sender).tag;
end;
并查看此帖子,了解有关如何添加动态组件的更多信息:https://stackoverflow.com/a/20837752/2728408