Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как узнать из какой кнопки была вызвана процедура


Автор: NightWolf 9.11.2005, 19:27
Есть массив кнопок создаваемых динамически, скажем Buttons: array of TButton; после создания кнопки я пишу Buttons.OnClick:=ButtonClick; описываю процедуру ButtonClick и тут вопрос, как узнать из какой кнопки была вызвана процедура, так как кликая на любую из них я попадаю в эту процедуру, или же предложите иной метод реализации

Автор: Alex 9.11.2005, 19:32
В качестве входного параметра OnClick передается Sender по нему и можно узнать какой компонент вызвал событие. Как вы хотите различать кнопки? Вы даете им разные имена или присваивате свойство Tag?

Автор: NightWolf 9.11.2005, 19:37
Код
SetLength(Buttons,n)
For i:= 0 to n-1 do
begin
  Buttons[i]:=TButton.Create(Self);
  Buttons[i].Parent:=Form1;
  Buttons[i].Caption:=Form1;
  Buttons[i].Left:=20;
  Buttons[i].Top:=10+i*30;
end;


примерно так =)
значит делаю проверку типа if Sender = Buttons[i] then я правильно понял?

Автор: _hunter 9.11.2005, 20:10
проще при создании заполнять Tag:
Buttons[i].Tag = i;
потом приводить Sender к TComponent и смотреть этот Tag

Автор: Alex 13.11.2005, 17:04
NightWolf, как сказал _hunter присваивайте свойству Tag уникальный номер кнопки, а потом в OnClick вы можете получить значение свойства Tag:
Код

TComponent(Sender).Tag

Автор: Marriage 14.11.2005, 15:56
Если нужно производит операции над кнопкой , тогда просто
TButton(Sender) чем плох ???

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)