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

Вниз

"Самоубийство" в runtime наследников НЕ TCustomForm.   Найти похожие ветки 

 
Maks Realov   (2004-04-27 17:12) [0]

Здравствуйте.
У меня такая ситуация:
фреймы в ран тайме создаю и убиваю. Освобождаю  я их imho коряво немного: из ф-ии обработчика нажатия на клавишу закрытия фрейма посылаю асинхронное сообщение главному окну программы, а процедура обработки этого сообщения делает FreeAndNil данному фрэйму. OnClose и CloseAction"а у фреймов нет, однако, а самому Release вызывать нельзя. ВОт я и боюсь, вдруг FreeAndNil сработает раньше, чем я выйду из ф-ии в фрейме, из которой запрос на эту FreeAndNil был вызван (т.е. откуда я SendMessage послал). Т.к. эта ф-ия - есть OnClick на кнопку на фрейме, то если случиться то, что я описал, то получим AV при попытке обработать событие поднятия кнопки мыши, т.к. ссылка на класс нулевая будет. Либо успокойте меня тем, что такая ситуация не возможна, потому что не возможна в принципе, либо научите как освобождать контролы из "них самих", если нет возможности Action:= caFree; сделать, как у форм.
Такой вот вопросец.


 
MBo ©   (2004-04-27 17:18) [1]

если посылать PostMessage - все будет нормально.


 
Maks Realov   (2004-04-27 17:23) [2]

ну я и имел ввиду PostMessage :)
про SendMessage - это опечатка.

Но точно не проскочит FreeAndNil раньше?

...
//main unit
...
procedure TForm.Test(var Msg: TMessage);
begin
FreeAndNil(IncommingFrame);
end;
...

//frame unit
...
procedure TFrame.ButtonClick(Sender: TObject);
begin
...
 PostMessage(Handle, WM_MYMESSAGE, 0, 0);
end;
...


 
Jack128 ©   (2004-04-27 17:25) [3]

можно создать TMyFrame - реализовать  в нем Realease (кода - 3 строчки) и все свои фреймы наследовать от TMyFrame


 
Jack128 ©   (2004-04-27 17:26) [4]


> Но точно не проскочит FreeAndNil раньше?
абсолютно точно. А том как реализованна очередь сообщений читай у Рихтера..



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

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

Наверх




Память: 0.47 MB
Время: 0.052 c
1-1085583210
Barsky
2004-05-26 18:53
2004.06.06
Как файлу поставить атрибут "скрытый"?


3-1083799703
miwa
2004-05-06 03:28
2004.06.06
При компиляции приложения закрываются все IBDataSet?


1-1085231594
volkodav
2004-05-22 17:13
2004.06.06
Экранные координаты точки


4-1083163044
Delphist
2004-04-28 18:37
2004.06.06
NtQuerySystemInformation, Как работает?


1-1085119264
Виталя
2004-05-21 10:01
2004.06.06
Подскажите, пожалуйста UML - оболочку, с поддержкой Delphi