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

Вниз

Присвоение метода во время выполнения программы   Найти похожие ветки 

 
jonik_sj   (2004-08-16 16:03) [0]

Мне необходимо присвоить некоторым компонентам на форме одинаковое событие на OnExit. Я пробегая по массиву Componetns
нахожу по условию нужные мне компоненты, затем делаю присваивание

TEdit(Frm.Components[i]).OnExit := Моя процедура;

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


 
Гаврила ©   (2004-08-16 16:11) [1]

Во первых, обязательно надо проверить на наследованность от TWinControl.
Во вторых, лучше все таки объявить своего первого потомка от TWinControl и типизировать под него


 
Семен Сорокин ©   (2004-08-16 16:11) [2]

проверяй перед этим на
if Frm.Components[i] is TEdit then


 
Анонимщик ©   (2004-08-16 16:24) [3]

Можно делать потому, что твой не-наследник TEdit"а - все равно, видимо, наследник TWinControl"а. Поэтому адреса поля FOnExit все равно совпадают. В этом случае никаких последствий не будет.


 
jonik_sj   (2004-08-16 16:29) [4]

Семен Сорокин

А мне не надо проверять на принадлежность классу TEdit. Как проверять я знаю

Гаврила

Проверку я делаю. Они все наследники TWinontrol.

Наверное не точно написал, компоненты не мои, я их не писал.

На форме есть объекты трех типов: Образно тип TxxxDBEdit, TxxxDBDateEdit, TxxxLookupEdit. Наследниками TEdit они не являются .

Меня интересует вопрос какие последствия может иметь такое присваивание метода?


 
jonik_sj   (2004-08-16 16:31) [5]

Анонимщик - спасибо


 
s999   (2004-08-16 16:32) [6]

Да не волнуйся, никаких последствий не будет. Хоть метод от TObject-а им присваивай.


 
Гаврила ©   (2004-08-16 16:35) [7]


> Анонимщик ©   (16.08.04 16:24) [3]


В принципе да, адреса будут совпадать. Но как то все таки кривовато это выглядит - под TEdit.


> jonik_sj   (16.08.04 16:29) [4]

Это скорее вопрос стиля.
Я имел в виду такую запись
TWinControlAccess = class(TWinControl);

{В том же модуле, чтобы был доступ к protected свойствам}
А далее
TWinControlAccess(Frm.Components[i]).OnExit := Моя процедура;


 
jonik_sj   (2004-08-16 17:41) [8]

Гаврила

Спасибо, возьмем на заметку.



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

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

Наверх




Память: 0.48 MB
Время: 0.059 c
14-1092116695
Rule
2004-08-10 09:44
2004.08.29
Вот спорю с коллегой на работе, подскажите есть ли множественное


1-1092073269
KOMbI4
2004-08-09 21:41
2004.08.29
Встроенный Ассемблер


14-1092299325
Странник
2004-08-12 12:28
2004.08.29
Туркменбаши приказал построить рядом с Ашхабадом дворец из льда


1-1092307659
shc
2004-08-12 14:47
2004.08.29
Docking Panel


3-1091476876
snake1977
2004-08-03 00:01
2004.08.29
JOIN & ORACLE