Конференция "Начинающим" » Обработчик нажатия нескольких кнопок
 
  • Дмитрий (06.07.17 21:29) [0]
    Доброго времени суток, Уважаемые.
    Может не совсем ясно сформулировал в теме...
    На форме на разных панелях есть 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;
 
Конференция "Начинающим" » Обработчик нажатия нескольких кнопок
Есть новые Нет новых   [134430   +43][b:0][p:0]