TButton数组 - 如何控制它们

时间:2016-12-21 16:40:40

标签: delphi delphi-7 pascal

我目前正在制作“noughts and crosses”作为家庭作业。我生成了一个10x10的TButton个对象数组,但我不知道它们是如何调用的,以及如何控制它们:

Form1: TForm1;
  pole: array[1 .. 10, 1 .. 10] of TButton;
  h:TButton;

for i:=1 to 10 do
  for j:=1 to 10 do
  begin
    h:=TButton.Create(Self);
    h.Parent:=Self;
    h.Width:=50;
    h.Height:=50;
    h.Left:=((i+1)*50)-100;
    h.top:=((j+1)*50)-100;
    h.OnClick := hClick;
  end;

我的按钮是否在该阵列中?我必须说我在这里有点困惑。

2 个答案:

答案 0 :(得分:8)

您必须将每个新创建的按钮对象分配给适当的数组条目。

另一个重要的事情 - 在公共事件处理程序内部,您可能想要确定按下了什么按钮。可能的方法 - 使用对象字段标记

for i:=1 to 10 do
  for j:=1 to 10 do  begin
   h:=TButton.Create(Self);
   pole[i, j] := h;
   ... 
   h.OnClick := hClick;
   h.Tag := 10 * i + j; //store both row and column
end;


procedure ...hClick(Sender: TObject);
var
  i, j: integer;
begin
   i := (Sender as TButton).Tag div 10;  // extract row and column
   j := (Sender as TButton).Tag mod 10; 
   ...
end;

答案 1 :(得分:2)

在for-loop add结束时

pole[i][j] := h;

因为每次迭代都只是覆盖变量' h'没有任何东西被添加到数组中。