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

Вниз

MDI Child форма   Найти похожие ветки 

 
matvey   (2002-05-30 13:37) [0]

Подскажите, как мне закрыть MDI Child форму,
в событии onClose - Action:=caFree, но
form1.close - выдаёт ощибку!


 
Внук   (2002-05-30 13:46) [1]

Как сказал бы Анатолий Подгорецкий - ошибка в 17-ой строке


 
matvey   (2002-05-30 13:50) [2]

что-то не особо понял...


 
Игорь Шевченко   (2002-05-30 13:51) [3]

А ее не надо close...


 
matvey   (2002-05-30 13:57) [4]

ну конечно надо, иначе бы не спрашивал... когда закрываешь обычным "крестиком" всё работает, а мне надо программно!


 
Игорь Шевченко   (2002-05-30 14:00) [5]

release.
К примеру, закрытие всех окон:

procedure TfMain.CloseAllMDIChilds;
begin
while ActiveMDIChild <> nil do begin
ActiveMDIChild.Release();
Application.ProcessMessages();
end;
end;





 
kaif   (2002-05-30 14:13) [6]

2 Игорь Шевченко © (30.05.02 14:00)
Гениально!
А я всегда по инерции делал
for i := MDIChildCount - 1 downto 0 do
MDIChildren[i].Close;


 
matvey   (2002-05-30 14:13) [7]

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


 
Игорь Шевченко   (2002-05-30 14:28) [8]

Тогда неработающий код - в студию


 
Внук   (2002-05-30 14:39) [9]

>>Игорь Шевченко ©
Я же с этого и начал :-)

Как бы автор сам ответил на такой вопрос: "У меня не работает программа. Что делать?"


 
matvey   (2002-05-30 21:20) [10]

да вот собственно что я делал:

procedure TForm2.Button1Click(Sender: TObjet);
begin
Form2.Close;
TForm3.Create(Self);
end;

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

обе формы - MDIChild.

а вот что выдаёт:
Project Project1.exe raised exception class EAccesessViolation whith message "Accsess violation at address 0045CC75 in module "Project1.exe"



 
Внук   (2002-05-31 09:20) [11]

>>matvey (30.05.02 21:20)
Да, сурово. Фактически, уничтожение формы происходит из ее же собственного метода. Добрее надо быть :)
Во-первых, здесь надо использовать TForm.Release (см. Игорь Шевченко © (30.05.02 14:00)), или PostMessage(...WM_CLOSE...) как вариант.
Во-вторых. При создании формы типа TForm3 ее владельцем назначается экземпляр формы типа TForm2, который к тому моменту уже уничтожен. Здесь надо что-то вроде TForm3.Create(Application);


 
nedden   (2002-05-31 10:54) [12]

я извращался так:

В основной форме :

procedure TfrmMain.FormShow(Sender: TObject);
var i : integer;
begin
for i :=0 to MDIChildCount-1 do MDIChildren[i].Close;
end;

в дочке :

procedure TfrmLog.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action :=caNone;
ShowWindow(Handle,SW_HIDE);
end;

при инициализации дочки :
ShowWindow(frmLog.Handle,SW_MAXIMIZE);



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

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

Наверх




Память: 0.46 MB
Время: 0.069 c
1-30807
Андр
2002-05-31 12:42
2002.06.10
Иммитация Esc


1-30846
ded_di
2002-05-28 17:24
2002.06.10
Image в TChart


14-30979
Kozhanov
2002-05-06 12:07
2002.06.10
Help-файлы


1-30802
Янушка
2002-05-31 11:44
2002.06.10
Как изменить цвет у заголовка окна формы


1-30765
Bosss20000
2002-05-30 17:39
2002.06.10
Использование диалога PasswordDlg





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский