![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MDIChild [D5, D7, Win95/98, WinME, NT4, Win2k, WinXP]
Dr.Karter © (2004-06-26 07:24:00)Вот по мере изучения Дельфи, и написания на ней программ, столкнулся с проблемой:
Есть окно MDIForm и ряд других обычных окон.
Я методом тыка нашел выход по открытию их ввиде MDIChild
Form2.FormStyle:=fsMDIChild;
Form2.Show;
Все замечательно, только закрывать не получается!!!
Я это делаю пока (пока вы не подскажете как это делать правильно)
спомощью
Событие OnClose Form2.Destroy;
Но соответственно я открыть это окно больше не могу
Подскажите как это сделать правильно
1 (2004-06-26 17:52:00) [1]Action:=caFree;
Form2:=nil;
Dr.Karter (2004-06-26 13:17:00) [2]Все! :D теперь СУПЕР! Спасибо огромное!
YurikGL (2004-06-26 13:02:00) [3]меню Project-options- убери нужные формы из auto-create
Dr.Karter (2004-06-26 12:53:00) [4]Так все здорово работает! Только Child-форма на передний план вываливается при запуске программы (т.е запускается параллельно MDIForm), а таких форм у меня много.
Что сделать надо для этого?
Я делал превращение из Normal формы в MDIChild при обработке события нажатия на кнопку, но у меня получалось выводить это окно один раз.
Что делать чтобы эта(и) формы при запуске не отображались?
YurikGL (2004-06-26 09:54:00) [5]1) задаем то, что окно MDIChild сразу в Инспекторе
2) в OnClose action:=cafree
3) Если необходимо отразить MDIChild-форму пишем FkbDetal:=TFkbDetal.create(application)
Dr.Karter (2004-06-26 09:52:00) [6]Получилось так:
При том что форма в панеле контроля задана уже как MDIChild
procedure TFMain.nDetalClick(Sender: TObject);
begin
TFkbDetal.Create(Application);
end;
А если как в моем случае, что форма по началу имеет вид Normal, а уже в программе я меняю на MDIChild
Или тогда выход из ситуации что при запуске программы сразу открываются Child окна?
Dr.Karter (2004-06-26 09:37:00) [7]Суть я понял! Я спрашиваю как эту суть в программный код конвертировать? :)
(: -А суть-то где?
-А суть они сюда...прямо в песок! :)
Т.е где этот FkbDetal.Create(Application);
писать? (В обработчик нажатии на кнопку или OnCreate той формы)
Покажите плиз. код создания формы (То что у меня было я привел в Dr.Karter (26.06.04 09:18) [7] )
YurikGL (2004-06-26 09:19:00) [8]
> Dr.Karter (26.06.04 09:08) [6]
Суть в том, что заранее в инспекторе задать MDI окно или нет, потом при необходимости его отразить, - создавать его заново. А при закрытии - удалять
Dr.Karter (2004-06-26 09:18:00) [9]Если можно войдите в ситуацию:
вот что я написал: (это обработка кнопки)
procedure TFMain.nDetalClick(Sender: TObject);
begin
// Это до получения информации про FkbDetal.Create(Application);
FkbDetal.FormStyle:=fsMDIChild;
Fkbdetal.Show;
end;
КУда теперь нужно впихнуть этот FkbDetal.Create(Application);
???
Dr.Karter (2004-06-26 09:08:00) [10]C Закрытием формы разобрался! Спасибо!
Как быть с
> jb (26.06.04 07:54) [3]
> Вообще, MDIChild окно, следует создавать заново, при каждом
> создании (или открытии) документа, на то он и MDI.
тихий вовочка (2004-06-26 09:07:00) [11]Обобщаю все вышесказанное.
Перед каждым выводом MDI-окна его надо создавать, например так:
TForm2.Create(Application), а для того, чтобы окошко у тебя закрывалось, а не минимизировалось, в обработчике TForm2.OnClose указывай Action := caFree;
Dr.Karter (2004-06-26 08:56:00) [12]Если можно напишите код для создания(открытия формы), а то я писал так:
Form2.FormStyle:=fsMDIChild; (FormStyle до этого был Normal)
Form2.Show;
И закрытия формы.
На каманду action:=cafree в OnClose
!Выдает ошибку Incompatible types: 'TBasicAction' and 'TCloseAction'
jb (2004-06-26 07:54:00) [13]Вообще, MDIChild окно, следует создавать заново, при каждом создании (или открытии) документа, на то он и MDI.
YurikGL (2004-06-26 07:38:00) [14]в OnClose action:=cafree а в следующий раз надо будет его создавать заново.
Dr.Karter (2004-06-26 07:32:00) [15]В FAQе я нашел эту функцию только как её реализовать у меня не получилось компилятор Выдает ошибку