Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2017, 14:01   #11
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

А если к примеру определить
procedure Button1Click(Sender: TObject);virtual; abstract; как вируальный абстрактный.
А в отдельном классе определить метод
procedure Button1Click(Sender: TObject); override;
Такой конструкцией честно сам не пользовался, но МБ прокатит.
Хотя если честно событие переопределить как абстрактный метод , даже незнаю че выйдет из этого =)
Если будет исключительная абсрактного метода, то скорей всего надо копать в сторону как переопределить событие через абстрактные вещи.
Пишу много и развернуто

Последний раз редактировалось Heneken87; 17.07.2017 в 14:04.
Heneken87 вне форума Ответить с цитированием
Старый 17.07.2017, 14:53   #12
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
А в отдельном классе определить метод
procedure Button1Click(Sender: TObject); override;
каком классе? наследнике формы ? а кто его создаст, да так чтобы форма инициировалась корректно.
если все это да. то нет проблем.
кроме одной, в классическом наследнике (с использованием *.dfm) переопределение реакции на событие есть и так и даже с наследованием вызова.
и все эти телодвижения не нужны.

но если это к этому коду
Цитата:
Код:
if ........ then ActionProc1(........)
else if ...... then ActionProc2()
else ActionProcOther(.....);
, т.е. назначить "разные" обработки при разных условиях.

для событий установки условий пишем ЕДИНЫЙ обработчик( или же ВО ВСЕХ установках вызываем одну процедуру( или функцию) результатом которой будет програмнная установка "правильной" процедуры обработки.

Код:
// пишем функцию определения действий по заданным условиям 
function TFormX.GetMyAction: TNotifyEvent; 
begin
  if checkboxX.checked then result:=MyAction1
  else  if checckboxZ.checked then result:=MyAction3
  else result:=MyActionDefaut;
end;
все тот же if then else if then else; но в другом месте.

при наличии форм наследников и необходимости расширения(дополнения новыми действиями) делаем его virtual; + override; c обязательным вызовом родительской версии inherited;

Код:
// при событиях "изменении условий" вызываем нашу функцию "вычисления действия" и задаем нужное(вычисленное) действие.
procedure TformX.checkboxXChange(Sender: TObject);
begin
   buttonRun.OnCick:=GetMyAction;
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.07.2017 в 15:01.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение массива данных на части Евгений К. Microsoft Office Excel 2 03.06.2010 13:41
JS для скрытия части кода lukoie JavaScript, Ajax 3 29.01.2010 09:34
Замена части кода при отключённом JavaScript в браузере DJ Triton PHP 7 18.08.2009 19:47
разделение кода на состовляющие world12_tk Помощь студентам 3 04.04.2009 19:33
разделение формы на 4 части za4ot Общие вопросы Delphi 2 03.07.2008 12:12