![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть несколько кнопок у которых в событие OnClick прописана одна [D5, WinME]
Кен © (2002-10-31 05:05:00)и таже процедура Button1Click. А как в этой процедуре определить какая кнопка была нажата?
Вроде бы на то какая кнопка нажата должен указывать Sender , но он указывает на Form1, а не на кнопку. Как же определить ?
Есть вариант делать так :
procedure TForm1.N2Click(Sender: TObject);
begin
if ( Button1.Focused = true ) then ...
if ( Button2.Focused = true ) then ...
if ( Button3.Focused = true ) then ...
if ( Button4.Focused = true ) then ...
if ( Button5.Focused = true ) then ...
end;
но не у всех кнопок есть Focused. И вообще это какой то левый способ. Нет ли другого, попроще ?
skiph (2002-10-31 05:20:00) [21]Можно сделать так:
procedure TForm1.N2Click(Sender: TObject);
begin
if (Sender as TButton).Name="Button1" then ...
....
end;
Но есть другой вариант. Для каждой кнопкиопределяешь уникальное значение Tag (если в программе он тебе не нужен), т.е. для Button1.Tag=1, Button2.Tag=2 и т.д. И тогда процедума будет иметь более "красивый" вид:
procedure TForm1.N2Click(Sender: TObject);
begin
case (Sender as TButton).Tag of
1:...
2:...
3:...
....
end;
end;