Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.11.2010, 22:26
Аватар для Paskal
Paskal Paskal вне форума
Новичок
 
Регистрация: 28.09.2010
Сообщения: 93
Репутация: 12
Восклицание Не закрывается дочернее окно (mdi)

Друзья привет!
Помогите разобраться, есть приложение с множеством дочерних окон и нужно закрыть одно по умолчанию оно сворачивается пишу если от кнопки так...
Код:
MDIChildren[i].Close;
все равно сворачивается.
Потом с многочисленных источников последовал этому примеру (в моей интерпретации)
этот код я ставил в дочернюю форму

Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

При этом возникает исключение в строке выделенной жирным курсивом.
В чем моя ошибка?
Вроде и руки прямые и в голове не опилки
Заранее большое спасибо.

Последний раз редактировалось Paskal, 06.11.2010 в 22:29.
Ответить с цитированием
  #2  
Старый 06.11.2010, 23:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

И где строка, выделенная жирным курсивом?
Ответить с цитированием
  #3  
Старый 06.11.2010, 23:31
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Цитата:
Сообщение от Paskal
Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
Вот выделенная строка

На счет вопроса: попробуй вместо Close - Free использовать, то бишь просто уничтожай нужную форму, а когда надо ее заново показать - то создавай ее заново.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #4  
Старый 07.11.2010, 01:18
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Код:
type
 .....
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
.....
.....
.....

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;

Код:
procedure TForm1.CreateClick(Sender: TObject);
begin
TForm2.Create(self);
end;

procedure TForm1.CloseClick(Sender: TObject); //Закрыть все окна
begin
 for i:= 0 to MdiChildCount - 1 do
    MDIChildren[i].Close;
end;

Вот так вот - я сам проверил все пашет без проблем
__________________
Нет ничего не возможного. Вопрос только во времени...

Последний раз редактировалось Electronic_Arts, 07.11.2010 в 01:33.
Ответить с цитированием
  #5  
Старый 07.11.2010, 23:41
Аватар для Paskal
Paskal Paskal вне форума
Новичок
 
Регистрация: 28.09.2010
Сообщения: 93
Репутация: 12
Радость Большое спасибо! Electronic_Arts

Electronic_Arts Огромный поклон и великое спасибо! Помог
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:52.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025