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

Вниз

Метод   Найти похожие ветки 

 
Fantos ©   (2002-05-16 11:52) [40]

Позволю заметить, что ПРИНЦИПИАЛЬНОЕ различие в использовании FREE или RELEASE я прочувствовал на собственных "граблях". И заключались они (грабли) в следующем:
- программа подключала DLL-ку (динамически, в отдельном потоке) с вызовом формы из нее (не модально!). В этом модуле шла работа с устройствами через COM-порты... Так вот, если в интерфейсной процедуре из DLL-ки (вы понимаете о чем я?) ставилось удаление формы через FREE, то основная программа ПРИ или ПОСЛЕ выполнения FREELIBRERY - частенько И НЕ ЗАКОНОМЕРНО вываливала ошибку AV ! Причина -- банальное ОТСУТСТВИЕ обработчика очереди сообщений...форма то уже УДАЛЕНА!
А вот когда FREE была заменена на RELEASE, вот тогда все стало нормально работать и закрываться...
Вот Вам и разница, как говорится - "на пальцах"...

Поэтому, для "выписки рецепта" необходимо, сначала, "обдумать" всю связку удаляемых форм и основного модуля(или формы, если хотите)...


 
Tonie ©   (2002-05-16 12:55) [41]

To KSergey © (15.05.02 16:11)

>PostMessage(Handle, CM_RELEASE, 0, 0);

Ну так в этом и смысл, сообщение CM_RELEASE будет помещено после уже имеющихся в очереди, поэтому и TCustomForm.CMRelease произойдет после того как все оставшиеся сообщения будут обработаны

Кстати Close вызывает Release, поэтому использование Close вместе c ... Action := caFree вполне корректно



procedure TCustomForm.Close;
var
CloseAction: TCloseAction;
begin
if fsModal in FFormState then
ModalResult := mrCancel
else
if CloseQuery then
begin
if FormStyle = fsMDIChild then
if biMinimize in BorderIcons then
CloseAction := caMinimize else
CloseAction := caNone
else
CloseAction := caHide;
DoClose(CloseAction);
if CloseAction <> caNone then
if Application.MainForm = Self then Application.Terminate
else if CloseAction = caHide then Hide
else if CloseAction = caMinimize then WindowState := wsMinimized
else
Release;
end;
end;


 
VetMIg ©   (2002-05-21 14:34) [42]

Спасибо друзья... Я вдоволь начитался. Обязательно попробую ваши советы. И еще раз спасибо :-))))))



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

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

Наверх




Память: 0.54 MB
Время: 0.017 c
14-7166
Sergo
2002-04-24 13:35
2002.06.03
eBay


14-7212
Agent Smith
2002-04-27 10:59
2002.06.03
Плагиат


14-7201
lipskiy
2002-04-23 12:18
2002.06.03
Суперсложная задачка для мастеров!


1-6954
Georg
2002-05-22 15:43
2002.06.03
QReport


1-7001
jonik pegas
2002-05-23 10:16
2002.06.03
Asm вставка и паскалевские функции