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

Вниз

Каково максимально-гарантированное время доставки message?   Найти похожие ветки 

 
Ega23 ©   (2004-01-06 14:29) [0]

Ситуация следующая.

1. Есть некий класс TDialogPanel. Суть его такова, что по собственному языку он строит динамические диалоги с разным набором контролов. Например, в одном случае это 2 TEdit"а, в другом - TEdit, TComboBox и TCheckBox и т.п. По событию OnExit каждого из контролов генерируется собственный message и отправляется по MainForm.Handle.
2. В главной форме в обработчике этого message происходит попытка обращения к отправителю за какой-то информацией.
3. Опять же в главной форме имеется TTreeView, передвигаясь по узлам которого убивается старый объект класса TDialogPanel и создаётся новый.

Какова вероятность того, что в обработчике события я буду обращаться к уже "убитому" объекту класса?


 
Юрий Федоров ©   (2004-01-06 14:39) [1]

Как отравляется сообщение
если SendMessage - вероятность нулевая, так как это аналогично
вызову метода - управление будет передно немедленно

если PostMessage - сообщение встанет в конец очереди сообщений окна и будет отработно только тогда, когда все предыдущие будут отработаны.


 
Ega23 ©   (2004-01-06 14:42) [2]


> если SendMessage - вероятность нулевая, так как это аналогично
> вызову метода - управление будет передно немедленно

Т.е., как я понимаю, сообщение сгенерили через SendMessage, мгновенно провалились в обработчик события, вернулись обратно - и объект "убился", так?


 
Романов Р.В. ©   (2004-01-06 14:44) [3]

Если сообщения посылаешь через SendMessage или Perform, то будет выполнятся обработка сообщений, а потом продолжится выполнение программы со следующей строки.
Если сообщения посылаешь через PostMessage обработка сообщения будет после выхода из процедуры, когда приложеие начнет обрабатывать очередь сообщений. Вероятность обращения к убитому объекту в этом случае очень велика.


 
Романов Р.В. ©   (2004-01-06 14:46) [4]


> вернулись обратно - и объект "убился", так?

Сам он не убъется его убивать нужно. А суть ты понял равильно


 
Ega23 ©   (2004-01-06 14:56) [5]

Хорошо, сейчас попробую. Я через Post делал.
А Event сдесь помочь может?


 
Романов Р.В. ©   (2004-01-06 15:04) [6]

А Event тут причем?
Не путай сообщения с событиями.


 
Ega23 ©   (2004-01-06 15:09) [7]

Всем спасибо за советы, всё замечательно заработало.



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
1-49540
DimaK
2003-12-29 12:02
2004.01.16
Два вопросика по FastReport


14-49719
MV
2003-12-25 11:44
2004.01.16
---|Ветка была без названия|---


1-49506
Эли
2004-01-02 10:42
2004.01.16
Вернуть активность собственной форме


3-49426
VicSel
2003-12-17 20:10
2004.01.16
Упаковка таблицы dbf


3-49447
DimonNew
2003-12-18 11:34
2004.01.16
DBWINUS0 и ancyrr