Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

Много кнопок, один event   Найти похожие ветки 

 
DenKop ©   (2003-03-17 18:30) [0]

Имею много кнопок и назначил им один OnClick. Как узнать по передаваемому сендеру какая кнопка сгенерировала событие?


 
Anatoly Podgoretsky ©   (2003-03-17 18:30) [1]

Sender оно и есть


 
DenKop ©   (2003-03-17 18:33) [2]

procedure TMainForm.Button1Click(Sender: TObject);
var Str:string;
begin
{Как в Str получить TButton.Name}
end;


 
Dona ©   (2003-03-17 18:41) [3]

Str:= (Sender As TButton).Name ?

или
if (Sender AS TButton) is Button1 then Str:= "Button1";
if (Sender AS TButton) is Button2 then Str:= "Button2"; ...


 
Anatoly Podgoretsky ©   (2003-03-17 18:48) [4]

TButton(Sender).Name}
При необходимости сделать проверку на принадлежность к TButton


 
DenKop ©   (2003-03-17 22:44) [5]

Спасибо, врубился


 
Vasily_ ©   (2003-03-17 23:07) [6]

Я делаю так:
Назначаю разные свойства Tag для кнопок отличные от нуля ( нуль присвоен по умолчанию), а затем:

Case TButton(Sender).Tag of
1:begin
end;
2:begin
end;
3:begin
end;
.
.
.
n:begin
end;
end;

По моему проще запомнить номер TButton.Tag, чем его Name.


 
DenKop ©   (2003-03-18 23:00) [7]

>Vasily_

Согласен. Этот вариант мне больше нравится.


 
Anatoly Podgoretsky ©   (2003-03-18 23:29) [8]

Вариант с тегами грешит возможностями ошибки, а для того, что бы получить имя вообще ни теги не нужны, ни какие нибудь проверки, кроме соответстся Sender TButton и то не обязательно, можно генерировать ошибку.
Пример Dona © (17.03.03 18:41)



 
DenKop ©   (2003-03-19 21:08) [9]

>Anatoly Podgoretsky
Будем стараться следить за тегами. Кнопок очень много и проверять каждую очень громоздко, а с тегами это всего один Case of и всё.


 
VD601   (2003-03-19 22:00) [10]

А не думал о том, чтобы сравниваит указатели?

var
PBtn: ^TButton;
begin
PBtn := Sender as TButton;
if (PBtn = Button1) //просто беззнаковые целые!
...


 
DenKop ©   (2003-03-21 21:09) [11]

>VD601
Опять это громоздкий if...


 
Hecker ©   (2003-03-22 01:54) [12]

Как говорит Anatoly Podgoretsky - это оптимальный вариант в любом случае. Я таким образом проверял 101 кнопочку! :) и быстро и качественно!

С уважением, Hecker



Страницы: 1 вся ветка

Текущий архив: 2003.04.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
4-6867
AlexanderSK
2003-02-06 15:39
2003.04.03
Путь к DLL?


3-6335
zhizhko
2003-03-13 09:03
2003.04.03
Как программно выполнить переиндексацию (Paradox)?


7-6826
Prosta-GIO
2003-02-11 15:49
2003.04.03
Как приложению воспользоваться своими шрифтами? Без помощи пользо


4-6865
Lex_!
2003-02-03 13:42
2003.04.03
Сообщени е о перерисовки окна..


8-6625
_ncux_
2002-12-27 14:23
2003.04.03
GLUT не работает под Delphi 6