В настоящее время у меня есть этот массив этих кнопок, и я пытаюсь установить событие onclick для процедуры и передать индексам x и y этой кнопки процедуру, чтобы она могла скрыть правильную кнопку.
Вы не сможете напрямую передать эту информацию в обработчик событий OnClick
, используя входные параметры.Событие объявляется как TNotifyEvent
, поэтому единственным входным параметром, который он может принять, является TObject
для объекта, инициирующего событие.
Однако этот объект является нажатиемTButton
сам, так что вы можете просто использовать его как есть:
procedure TMainPage.buttonClicked(Sender: TObject);
begin
TButton(Sender).Visible := False;
end;
Если по какой-то причине вам действительно нужны индексы XY в массиве, вам придется передать эти значения в событиеобработчик косвенно , например, со свойством кнопки Tag
:
buttons[x,y].Tag := Integer(SmallPoint(x, y));
...
procedure TMainPage.buttonClicked(Sender: TObject);
var
pt: TSmallPoint;
begin
pt := TSmallPoint(TButton(Sender).Tag);
// use pt.x and pt.y as needed...
end;
Хотя более безопасным вариантом будет просто получить новый класс из TButton
, а затемможете добавить к нему все, что захотите:
type
TMyButton = class(TButton)
public
ArrayX, ArrayY: Integer;
end;
...
buttons[x,y] := TMyButton.Create(...);
buttons[x,y].ArrayX := x;
buttons[x,y].ArrayY := y;
...
procedure TMainPage.buttonClicked(Sender: TObject);
var
Btn: TMyButton;
begin
Btn := TMyButton(Sender);
// use Btn.ArrayX and Btn.ArrayY as needed...
end;