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

Вниз

Как уничтожить форму из самой себя?   Найти похожие ветки 

 
awaken   (2002-06-24 15:37) [0]

я создаю форму в MDI-приложении в runtime,
таким образом (используя собственный конструктор):


try
ID := DBGrid1.SelectedField.AsInteger;
AE:=TAccountEditForm.CreateID(ID,Application);
AE.Show;
except on EEditException do
// игнорировать эксепшн
end;


сам конструктор устроен так:


constructor TAccountEditForm.CreateID(ID: Integer; Owner: TComponent);
begin
inherited Create(Owner);
if(Instance = nil) then
Instance := Self
else
raise EEditException.Create("Can""t create");
// далее открытие нужных рекордсетов
end;


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

в OnClose пытаюсь делать чтобы форма сама себя закрывала
ни Free ни Destroy толком не работают. точнее через раз после закрытия формы происходит Access Violation по такому-то адресу

как правильно сделать самоуничтожаюшуюся форму (не модальную)?


 
MBo ©   (2002-06-24 15:39) [1]

в OnClose что стоит? Action:=caFree;?


 
Александр Спелицин   (2002-06-25 10:43) [2]

Вы уничтожаете объект внутри одного из его методов. Это не есть очень хорошо.
Для корректного закрытия окна пошлите ему сообщение WM_CLOSE через PostMessage: PostMessage(AE.Handle, WM_CLOSE, 0, 0).
Правда, возможно что эта форма появится на экране на доли секунды и исчезнет. Поэтому лучше проверять наличие существующей формы ДО ее создания.



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

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

Наверх




Память: 0.47 MB
Время: 0.009 c
1-23658
Anton V
2002-06-26 11:00
2002.07.08
Вопрос про нити!!!!!


4-23838
KiberArt
2002-05-09 10:24
2002.07.08
---|Ветка была без названия|---


14-23760
Дмитрий_Б
2002-06-06 08:32
2002.07.08
Сказки вслух


6-23708
VS2001
2002-04-18 18:03
2002.07.08
Помогите ПЛИЗ !!! Проблема с удалением файла на ФТП сервере


14-23785
K-Sergey
2002-06-07 19:52
2002.07.08
Куда в реестре надо прописать прогу чтобы она запускалась .....