Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.047 c
14-1091837479
Xerx
2004-08-07 04:11
2004.08.29
Doom3


1-1092302440
BillyJeans
2004-08-12 13:20
2004.08.29
WordWrap для TListView в режиме vsReport это возможно?


3-1091557575
Elast
2004-08-03 22:26
2004.08.29
Проблема с кириллицей


3-1091608608
dtm
2004-08-04 12:36
2004.08.29
Европейские языки в базе данных.


3-1091551873
jenbond
2004-08-03 20:51
2004.08.29
Контроль подключения к БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский