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

Вниз

Есть форма F1 на которой есть CheсkBox1и F2 на которой есть   Найти похожие ветки 

 
Garry_c   (2005-01-21 12:36) [0]

CheсkBox2. Обработчики событий onclick у этих CheckBox-ов одинаковые. Не хочется иметь два одинаковых участка кода.
Как вариант, можно, конечно, написать отдельно третью процедуру и ее вызывать из обеих обработчиков. Но может быть есть способ как из тела обработчика F1.CheсkBox1.OnClick вызвать процедуру
F2.CheсkBox2.OnClick пробовал напрямую, но не пойму что писать вместо TObject в параметрах процедуры.


 
GuAV ©   (2005-01-21 13:18) [1]

Можно назначить обработчик другой формы во время выполнения F1.CheсkBox1.OnClick := F2.CheсkBox2.OnClick;


> Но может быть есть способ как из тела обработчика
>F1.CheсkBox1.OnClick вызвать процедуру
> F2.CheсkBox2.OnClick пробовал напрямую, но не пойму
> что писать вместо TObject в параметрах процедуры.


Можно и напрямую вызвать. Sender - это объект, вызвавший обработчик события, т.е. CheсkBox2, он же Sender в вызывающем обработчики. Если sender не используется можно передать что угодно, хоть nil.

Перед вызовом обработчика следует поверять назначен ли он if Assigned(F2.CheсkBox2.OnClick).

И ещё - не используется ли Self (явно или неявно) ? Дело в том что в обработчике F1.CheсkBox1.OnClick Self будет равен F1, даже если он вызван из F2.

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



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

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

Наверх




Память: 0.47 MB
Время: 0.255 c
9-1099481937
ilopX
2004-11-03 14:38
2005.02.06
Скажите где найти хорошую инфу по DelphiX_d7.


1-1106332670
Bobby Digital
2005-01-21 21:37
2005.02.06
StringGird pt4


1-1106714824
AbramovVi
2005-01-26 07:47
2005.02.06
от Variant к обьекту


4-1103632703
Artem_
2004-12-21 15:38
2005.02.06
Загрузка процессора


14-1105981206
мазербо)
2005-01-17 20:00
2005.02.06
простой пример на с++