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

Вниз

закрытие 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.042 c
4-1079183758
name voe
2004-03-13 16:15
2004.05.09
Сроччно определить handle desktop


3-1081682338
Frozzen
2004-04-11 15:18
2004.05.09
КАК лучше данные из DBGrid перекинуть в ComboBox?


1-1082374017
cort33
2004-04-19 15:26
2004.05.09
Разбитие текста


11-1068056483
BelchonokH
2003-11-05 21:21
2004.05.09
Регионы + D5


6-1079223072
Vitaliy
2004-03-14 03:11
2004.05.09
Как вытащить в ссылки из html документа





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