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

Вниз

обработка сообщений и наследование   Найти похожие ветки 

 
msg   (2008-06-05 14:57) [0]

подскажите как должно быть на самом деле.
исходные данные:
mdi приложение.
главное окно - унаследовано от базовой формы.
в базовой форме есть обработчик wm_user + 1000;
при посылке сообщения наследнику (application.mainform) обработчик срабватывает.

mdi чайлды так же унаследованы от базового класса (отличного от базового класса главной формы). в базовом классе тоже есть обработчики wm_user + 1000.
Но когда в цикле перебираем mdi чайлды и шлем им wm_user + 1000 то никаких вызовов в наследниках не происходит.


 
ZENsan ©   (2008-06-05 15:09) [1]

Исходник можно чуток?


 
msg   (2008-06-05 15:25) [2]

for i := 0 to MdiChildCount - 1 do PostMessage(MdiChild[i].Handle,WM_USER+1000,0,0);

...

procedure TMyBaseMdiChildClass.OnMessage(var Msg : TMessage); message wm_user + 1000;
begin
CallMyVirtualMethod;
end;

После цикла в потомках не происходит вызова виртуального перекрытого CallMyVirtualMethod;


 
Игорь Шевченко ©   (2008-06-05 15:27) [3]

msg   (05.06.08 15:25) [2]

мало кода.


 
msg   (2008-06-05 15:35) [4]

мне просто интересно, должен ли сработать статический обработчик сообщения в предке, если сообщение послылается окну его наследника.
в наследнике обработчика нет.


 
Игорь Шевченко ©   (2008-06-05 15:40) [5]


> должен ли сработать статический обработчик сообщения в предке,
>  если сообщение послылается окну его наследника.
> в наследнике обработчика нет


Должен


 
msg   (2008-06-05 15:42) [6]

вот теперь все понятно. сенкс.


 
ZENsan ©   (2008-06-05 17:35) [7]

инхеритед...


 
ZENsan ©   (2008-06-05 17:36) [8]

вообще в потомках помоему и нельзя переопределять эту процедуру.
Лучше сделай виртуальнй метод который вызвать там будешь


 
Игорь Шевченко ©   (2008-06-05 17:39) [9]


> вообще в потомках помоему и нельзя переопределять эту процедуру.


можно


 
ZENsan ©   (2008-06-05 17:49) [10]

Погоди. Ради интереса.. А как это ты procedure OnSomeMSG(vat TMessage); message WM_SOMEMESSAGE; перекрывать будешь в потомках.
Мне интересно. Ведь описать их как виртуальную нелзя...


 
ZENsan ©   (2008-06-05 17:50) [11]

Или написав просто inherited ты это подразумевал..


 
Palladin ©   (2008-06-05 18:25) [12]

директива message уже подразумевает свойства полиморфизма у метода... и, кстати, в справке об этом однозначно дали понять...


 
ZENsan ©   (2008-06-05 19:48) [13]

Ну это не чистий полиморфизм конечно.. а емуляция его.


 
Игорь Шевченко ©   (2008-06-05 20:10) [14]


> Ну это не чистий полиморфизм конечно


это чистый полиморфизм


 
ZENsan ©   (2008-06-06 11:52) [15]

Да. Полностью согласен. Беру слова назад. Полиморфизм, правда с другой внутренней реализацией.



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

Форум: "Начинающим";
Текущий архив: 2008.07.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.059 c
2-1212920874
ply
2008-06-08 14:27
2008.07.06
где в БД хранить картинки?


9-1171566617
vlk32
2007-02-15 22:10
2008.07.06
Есть желающие принять участие в разработке игры?


15-1211516372
Knight
2008-05-23 08:19
2008.07.06
Есть ли свободные векторные карты с привязками?


2-1212997506
viperv
2008-06-09 11:45
2008.07.06
Компонент TWebBrowse


15-1211704569
Kostafey
2008-05-25 12:36
2008.07.06
С днем рождения ! 24 мая





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский