Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

MDIChild   Найти похожие ветки 

 
Dr.Karter   (2004-06-26 07:24) [0]

Вот по мере изучения Дельфи, и написания на ней программ, столкнулся с проблемой:

Есть окно MDIForm и ряд других обычных окон.
Я методом тыка нашел выход по открытию их ввиде MDIChild

  Form2.FormStyle:=fsMDIChild;
  Form2.Show;
Все замечательно, только закрывать не получается!!!
Я это делаю пока (пока вы не подскажете как это делать правильно)
спомощью
Событие OnClose     Form2.Destroy;
Но соответственно я открыть это окно больше не могу

Подскажите как это сделать правильно


 
Dr.Karter   (2004-06-26 07:32) [1]

В FAQе я нашел эту функцию только как её реализовать у меня не получилось компилятор Выдает ошибку


 
YurikGL ©   (2004-06-26 07:38) [2]

в OnClose action:=cafree а в следующий раз надо будет его создавать заново.


 
jb   (2004-06-26 07:54) [3]

Вообще, MDIChild окно, следует создавать заново, при каждом создании (или открытии) документа, на то он и MDI.


 
Dr.Karter   (2004-06-26 08:56) [4]

Если можно напишите код для создания(открытия формы), а то я писал так:

Form2.FormStyle:=fsMDIChild; (FormStyle до этого был Normal)
Form2.Show;

И закрытия формы.

На каманду action:=cafree в OnClose

!Выдает ошибку Incompatible types: "TBasicAction" and "TCloseAction"


 
тихий вовочка ©   (2004-06-26 09:07) [5]

Обобщаю все вышесказанное.
Перед каждым выводом MDI-окна его надо создавать, например так:
TForm2.Create(Application), а для того, чтобы окошко у тебя закрывалось, а не минимизировалось, в обработчике TForm2.OnClose указывай Action := caFree;


 
Dr.Karter   (2004-06-26 09:08) [6]

C Закрытием формы разобрался! Спасибо!
Как быть с

> jb   (26.06.04 07:54) [3]
> Вообще, MDIChild окно, следует создавать заново, при каждом
> создании (или открытии) документа, на то он и MDI.


 
Dr.Karter   (2004-06-26 09:18) [7]

Если можно войдите в ситуацию:
вот что я написал: (это обработка кнопки)

procedure TFMain.nDetalClick(Sender: TObject);
begin
// Это до получения информации про    FkbDetal.Create(Application);

  FkbDetal.FormStyle:=fsMDIChild;
  Fkbdetal.Show;

end;

КУда теперь нужно впихнуть этот    FkbDetal.Create(Application);
???


 
YurikGL ©   (2004-06-26 09:19) [8]


> Dr.Karter   (26.06.04 09:08) [6]

Суть в том, что заранее в инспекторе задать MDI окно или нет, потом при необходимости его отразить, - создавать его заново. А при закрытии - удалять


 
Dr.Karter   (2004-06-26 09:37) [9]

Суть я понял! Я спрашиваю как эту суть в программный код конвертировать? :)
(: -А суть-то где?
  -А суть они сюда...прямо в песок! :)

Т.е где этот FkbDetal.Create(Application);
писать? (В обработчик нажатии на кнопку или OnCreate той формы)

Покажите плиз. код создания формы (То что у меня было я привел в Dr.Karter   (26.06.04 09:18) [7] )


 
Dr.Karter   (2004-06-26 09:52) [10]

Получилось так:

При том что форма в панеле контроля задана уже как MDIChild

procedure TFMain.nDetalClick(Sender: TObject);
begin
  TFkbDetal.Create(Application);
end;

А если как в моем случае, что форма по началу имеет вид Normal, а уже в программе я меняю на MDIChild
Или тогда выход из ситуации что при запуске программы сразу открываются Child окна?


 
YurikGL ©   (2004-06-26 09:54) [11]

1) задаем то, что окно MDIChild сразу в Инспекторе
2) в OnClose action:=cafree
3) Если необходимо отразить MDIChild-форму пишем FkbDetal:=TFkbDetal.create(application)


 
Dr.Karter   (2004-06-26 12:53) [12]

Так все здорово работает! Только Child-форма на передний план вываливается при запуске программы (т.е запускается параллельно MDIForm), а таких форм у меня много.
Что сделать надо для этого?

Я делал превращение из Normal формы в MDIChild при обработке события нажатия на кнопку, но у меня получалось выводить это окно один раз.

Что делать чтобы эта(и) формы при запуске не отображались?


 
YurikGL ©   (2004-06-26 13:02) [13]

меню Project-options- убери нужные формы из auto-create


 
Dr.Karter   (2004-06-26 13:17) [14]

Все! :D теперь СУПЕР! Спасибо огромное!


 
1   (2004-06-26 17:52) [15]

Action:=caFree;
Form2:=nil;



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

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
3-1087390988
1008
2004-06-16 17:03
2004.07.11
Проверка возможности подключения и наличия базы.


10-1018514439
comwad
2002-04-11 12:40
2004.07.11
Принцип построения сервера CORBA в VisiBroker 4.1 DELPHI 6


3-1087370937
Inkarik
2004-06-16 11:28
2004.07.11
Ошибка SQL Builder


14-1087994457
гурам
2004-06-23 16:40
2004.07.11
инсталятор


3-1087278583
Andrey
2004-06-15 09:49
2004.07.11
Программно добавить ODBC DSN