Форум: "Начинающим";
Текущий архив: 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.078 c