Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Обработчик нажатия нескольких кнопок


Дмитрий   (06.07.17 21:29

Доброго времени суток, Уважаемые.
Может не совсем ясно сформулировал в теме...
На форме на разных панелях есть TButton (допустим их 20). Перед обработкой нажатия кнопки нужно проверить одно и то же условие. Если оно выполняется - обработать нажатие, то есть вызывать 20 разных процедур в зависимости от нажатой кнопки. Вставлять в каждый обработчик проверку условия - не подходит по некоторым причинам. Предполагаю, что можно назначить один OnClick на все кнопки, в обработчике OnClick проверить условие и при помощи Win API каким-нибудь образом идентифицировать, какая кнопка была нажата. Подозреваю что при помощи хэндлов. Только вот как ?


rrrrrr ©   (06.07.17 23:04[1]

не, винапи здесь не справится, нужны нейронные сети и cuda
чтобы понять
что нажатая кнопка прилетает как sender в онклик


Дмитрий   (06.07.17 23:15[2]

Ход вашей мысли понял. Значит будем использовать нейронные сети.


icWasya ©   (07.07.17 10:11[3]

Sender - это та самая нажатая кнопка
Можно, например, назначить разный Tag вашим кнопкам, а затем назначить всем такой обработчик:

procedure TCommonForm.CommonButtonClick(Sender:TObject);
begin
  if not (Sender is TButton) then
    Exit;
  with TButton(Sender) do begin
     case Tag of
        1:, 2:, 5: procedure_1_2_5(); // нужные константы и процедуры - по вкусу
        3:, 6: procedure_3_6();
        4:, 7: procedure_4_7();
     end;
  end;
end;


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо