Замена стандартных обработчиков формы своими

Здравствуйте, подскажите пожалуйста, как сделать правильно. У меня есть два режима работы программы. В 1 выполняются стандартные обработчики формы, в 2 мои. Однако, во 2 режиме вместе с моими выполняется код стандартных обработчиков. Подскажите, как сделать так,чтобы выполнялись только мои. Код писать за меня не надо. Прошу подкинуть идей как сделать,чтобы работали только мои. Замену обработчиков выполняю простым присваиванием. Отказать от стандартных обработчиков не могу.
9 ответов

а что такое стандартные обработчики ?


Те, которые создаются у формы в момент, когда на вкладке events щелкаешь по событию, FormClick при щелчке по OnClick, например.


Вызываешь стандартный, а внутри вызываешь свой обработчик. Если твои обработчики не отличаются от TNotifyEvent, то можно вообще в событиях свои указать.


Дык запоминай в переменную типа TNotifyEvent или другого в соответствии с типом обработчика события тот же OnClick. Цепляй на него OnClick свой обработчик. По выходу восстанавливай старое значение
var lOldOnClick: TNotifyEvent;
...
lOldOnClick:=MyControl.OnCick;
MyControl.OnCick:=NewMyControlClick;
...
procedure TForm2.NewMyControlClick(Sender: TObject);
begin
 if Assigned(lOldOnClick) then lOldOnClick(Sender); // если нужно чтобы старый отработал
...
end;


Замену обработчиков выполняю простым присваиванием.
после присвоения ваших обработчиков, именно они и будут выполнятся. "стандартные" не будут!p.s. в связи с тем, что в пустом проекте никаких "стандартных" обработчиков НЕТ, то возникает подозрение, что либо Вы не всё рассказываете, либо совсем не то делаете...


Те, которые создаются у формы в момент, когда на вкладке events щелкаешь по событию
ну они такие же стандартные как Человек_Борща папа римский.


Прошу прощения, тупанул, для проверки "работает/не работает" брал не те обработчики. Заменял одни,а проверял выполнение тех, которые не трогал. Те и выполнялись...


ОК. тему закрываем?


Да, конечно, всем спасибо))