Главная страница
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.018 c
7-7250
SoBr-A
2001-12-03 08:22
2002.06.03
пароль на файл в win


3-6907
Timka
2002-05-11 11:49
2002.06.03
HELP!!!!


3-6948
Voldemar
2002-04-30 03:28
2002.06.03
Отображение результатов запроса...


4-7256
John Forest
2002-03-26 09:34
2002.06.03
Как отправить клавиатурную комбинацию другому процессу... перерыл форум но так и не нашел ответа...


1-7103
Misha
2002-05-22 15:12
2002.06.03
Перестала чего то ставиться точка останова