Текущий архив: 2004.04.11;
Скачать: CL | DM;
Вниззакрытие MDI-формы Найти похожие ветки
← →
моё_имя (2004-04-22 18:39) [0]Идея такая: одна форма MDIForm и несколько MDIChild. Формы MDIChild создаются динамически:
...
AnyForm := TAnyForm.Create(Self);
AnyForm.Show;
...
Всё нормально. Всё работает. А при закрытии MDIChild"ов они ни хрена ни закрываются: то сворачиваются, то вообще не реагируют. Может это такая фича MDI-интерфейса, но всё-таки кто-нить может сказать как эти MDIChild"ы закрывать?
← →
моё_имя (2004-04-22 18:39) [0]Идея такая: одна форма MDIForm и несколько MDIChild. Формы MDIChild создаются динамически:
...
AnyForm := TAnyForm.Create(Self);
AnyForm.Show;
...
Всё нормально. Всё работает. А при закрытии MDIChild"ов они ни хрена ни закрываются: то сворачиваются, то вообще не реагируют. Может это такая фича MDI-интерфейса, но всё-таки кто-нить может сказать как эти MDIChild"ы закрывать?
← →
WebErr © (2004-04-22 18:42) [1]В OnClose сделайте следующее:
Action := caFree.
← →
WebErr © (2004-04-22 18:42) [1]В OnClose сделайте следующее:
Action := caFree.
← →
ASMiD © (2004-04-22 18:42) [2]А OnClose с caFree хоть есть?
← →
ASMiD © (2004-04-22 18:42) [2]А OnClose с caFree хоть есть?
← →
WebErr © (2004-04-22 18:43) [3]Я тоже не сразу понял, что это за бякость! :))))
← →
WebErr © (2004-04-22 18:43) [3]Я тоже не сразу понял, что это за бякость! :))))
← →
моё_имя (2004-04-22 18:43) [4]и, кстати, событие OnClose на этих формах превосходно возникает...
← →
моё_имя (2004-04-22 18:43) [4]и, кстати, событие OnClose на этих формах превосходно возникает...
← →
моё_имя (2004-04-22 18:44) [5]спасибо.. заработало с caFree.. Первый раз MDI пишу.
← →
моё_имя (2004-04-22 18:44) [5]спасибо.. заработало с caFree.. Первый раз MDI пишу.
← →
WebErr © (2004-04-22 18:46) [6]
> и, кстати, событие OnClose на этих формах превосходно возникает...
Разумеется, а вот OnDestroy будет вызвано только при уничтожении главной MDI формы.
procedure TBasicForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
← →
WebErr © (2004-04-22 18:46) [6]
> и, кстати, событие OnClose на этих формах превосходно возникает...
Разумеется, а вот OnDestroy будет вызвано только при уничтожении главной MDI формы.
procedure TBasicForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
← →
Andzej (2004-04-24 20:00) [7]Ну а вот у меня немного другая поблема.
Имеется форма MDI и в ней 3 формы MDIChild. Да вот уже долго мучаюсь не могу понять в чем дело:
один раз все формы открыкаются хорошо и закрываются тоже нормально, но в третий, в восьмой или в одинадцатый раз (рано или поздно) при открывании возникает ошибка или вообще формы путаются: при открытии, к примеру form2 реагирует form3 или form1(если форма 1,3 открыта) передается фокус одной из открытой формы, а не создается нужная.
If (not Assigned(Form3))or(not Form3.Showing ) then
begin
Form3:=TForm3.Create(Self);
Form3.Top:=0;
Form3.Left:=450;
Form3.Width:=Form1.Width-462;
Form3.Height:=Form1.Height-77;
end
else
begin
Form3.Show;
Form3.WindowState:=wsNormal;
end;
У других формах тот же код.
Когда было две формы вроде бы небыло проблем, но как добавил третью так и начялся этот гиморой.
Неподскажите в чем дело? Заранее благодарен.
← →
Andzej (2004-04-24 20:00) [7]Ну а вот у меня немного другая поблема.
Имеется форма MDI и в ней 3 формы MDIChild. Да вот уже долго мучаюсь не могу понять в чем дело:
один раз все формы открыкаются хорошо и закрываются тоже нормально, но в третий, в восьмой или в одинадцатый раз (рано или поздно) при открывании возникает ошибка или вообще формы путаются: при открытии, к примеру form2 реагирует form3 или form1(если форма 1,3 открыта) передается фокус одной из открытой формы, а не создается нужная.
If (not Assigned(Form3))or(not Form3.Showing ) then
begin
Form3:=TForm3.Create(Self);
Form3.Top:=0;
Form3.Left:=450;
Form3.Width:=Form1.Width-462;
Form3.Height:=Form1.Height-77;
end
else
begin
Form3.Show;
Form3.WindowState:=wsNormal;
end;
У других формах тот же код.
Когда было две формы вроде бы небыло проблем, но как добавил третью так и начялся этот гиморой.
Неподскажите в чем дело? Заранее благодарен.
← →
Игорь Шевченко © (2004-04-24 20:26) [8]
> Разумеется, а вот OnDestroy будет вызвано только при уничтожении
> главной MDI формы.
Архангельского начитался ?
← →
Игорь Шевченко © (2004-04-24 20:26) [8]
> Разумеется, а вот OnDestroy будет вызвано только при уничтожении
> главной MDI формы.
Архангельского начитался ?
← →
Andzej (2004-04-24 23:54) [9]Ну, блин, наконец-то этот долбаный гиморой загоньчился.
Теперь вроде все ОК, работает :)))))).
А кому интересно пишу, может когда нибудь и пригодится:If Form2=nil then
begin
Form2:=TForm2.Create(Application);
Form2.Width:=450; // Это необязательно
Form2.Height:=(Form1.Height div 2)-38; // Это тоже можно пропустить
end
else
begin
Form2.Show;
Form2.WindowState:=wsNormal;
end;
А при закрытии формы:procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2:=nil;
Action:=caFree;
end;
Такая фигня а пол днья на то ушло.
← →
Andzej (2004-04-24 23:54) [9]Ну, блин, наконец-то этот долбаный гиморой загоньчился.
Теперь вроде все ОК, работает :)))))).
А кому интересно пишу, может когда нибудь и пригодится:If Form2=nil then
begin
Form2:=TForm2.Create(Application);
Form2.Width:=450; // Это необязательно
Form2.Height:=(Form1.Height div 2)-38; // Это тоже можно пропустить
end
else
begin
Form2.Show;
Form2.WindowState:=wsNormal;
end;
А при закрытии формы:procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2:=nil;
Action:=caFree;
end;
Такая фигня а пол днья на то ушло.
Страницы: 1 вся ветка
Текущий архив: 2004.04.11;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.038 c