Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Вниз

Уничтожение формы при ее закрытии.   Найти похожие ветки 

 
И. Павел ©   (2010-09-30 09:42) [0]

Здравствуйте.

procedure TShowEvForm.BitBtn1Click(Sender: TObject);
begin
 Close;
 Free;
end;


Подскажите, пожалуйста, такой код допустим, или все же лучше посылать сообщение, прехватывать его в главной форме и уничтожать форму ShowEvForm?

Заранее спасибо.


 
И. Павел ©   (2010-09-30 09:53) [1]

Все, access violation поскочили - значит так нельзя :)


 
Игорь Шевченко ©   (2010-09-30 10:23) [2]

RTFM: TCustomForm.Release


 
И. Павел ©   (2010-09-30 10:36) [3]

> Игорь Шевченко ©

Большое спасибо!


 
TApplication   (2010-09-30 12:59) [4]

А если пользователь закроет форму крестиком в заголовке или Alt-F4?

procedure TShowEvForm.BitBtn1Click();
begin
 Close;
end;

procedure TShowEvForm.OnCloseQuery();
begin
 Action := caFree;
end;


 
И. Павел ©   (2010-09-30 13:03) [5]

> А если пользователь закроет форму крестиком в заголовке или Alt-F4?

Я уже прописал в OnClose вызов Release.
Но способ интересный, спасибо.


 
TApplication   (2010-09-30 13:08) [6]

Но способ интересный

Способ не интересный, а стандартный, для указания, что делать форме при попытке ее закрыть. Там не только caFree, там и другие действия присутствуют.


 
Anatoly Podgoretsky ©   (2010-09-30 15:31) [7]

И. Павел ©   (30.09.10 09:42)  
Плюнь на все советы, кроме случая когда форма не модальная, а попробуй сменить дизайн, OnCloseQuery в первую очередь для не модальных форм.


 
И. Павел ©   (2010-09-30 15:33) [8]

> Плюнь на все советы, кроме случая когда форма не модальная,
> а попробуй сменить дизайн, OnCloseQuery в первую очередь
> для не модальных форм.

У меня как раз форма не модальная. Эта форма может появляться в большом числе экземпляров во время работы программы (это окошки с напоминаниями пользователю). Была бы модальная форма, я бы удалял ее после ShowModal.


 
Anatoly Podgoretsky ©   (2010-09-30 16:06) [9]

> И. Павел  (30.09.2010 15:33:08)  [8]

А что же ты молчал, когда задавал вопрос?
Ну тогда событие для тебя.


 
Юрий Зотов ©   (2010-09-30 17:16) [10]


> И. Павел ©   (30.09.10 13:03) [5]
> Но способ интересный, спасибо.

Это ПРАВИЛЬНЫЙ способ. Его и используйте.


 
Leonid Troyanovsky ©   (2010-10-01 08:00) [11]


> И. Павел ©   (30.09.10 15:33) [8]

> в большом числе экземпляров во время работы программы


type
 TFormX = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   procedure DoClose(var Action: TCloseAction); override;
 end;

implementation

{$R *.dfm}

procedure TFormX.DoClose;
begin
  inherited;
  Action := caFree;
end;

--
Regards, LVT.



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

Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
15-1284558926
xayam
2010-09-15 17:55
2010.12.26
Интеграция тематических поисковиков


2-1285888495
v_a_belousov
2010-10-01 03:14
2010.12.26
Проблема с процедурой


2-1285687422
invincible_11
2010-09-28 19:23
2010.12.26
Проблема С Базой


2-1286186824
Overclocker
2010-10-04 14:07
2010.12.26
Работа с файлами


15-1284496168
Юрий
2010-09-15 00:29
2010.12.26
С днем рождения ! 15 сентября 2010 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский