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

Вниз

MDI-форма, но не главная форма!!!   Найти похожие ветки 

 
BigDAN   (2004-12-14 17:05) [0]

Вопрос такой: может ли существовать сабж? Нужно реализовать режим, где MDI-форма была бы только одним из режим работы программы, и вообще в идеале создавалась динамически.


 
Игорь Шевченко ©   (2004-12-14 21:27) [1]


> Вопрос такой: может ли существовать сабж?


При использовании VCL не может.


> Нужно реализовать режим, где MDI-форма была бы только одним
> из режим работы программы


А подробнее можно ?

С уважением,


 
Piter ©   (2004-12-14 22:08) [2]

А что мешает создавать MDI форму динамически? и при этом можно создавать другие окна (НЕ MDIChild). Можно создавать другие формы в присутствии MDI формы, можно создавать в отсутствии ее.

В чем вопрос?

P.S. И что, собственно, нельзя проверить что ли на практике?


 
Игорь Шевченко ©   (2004-12-14 23:08) [3]

Piter ©   (14.12.04 22:08) [2]

Первая созданная форма по Application.CreateForm (и только так) до Application.Run должна иметь стиль fsMDIForm, чтобы можно было создавать дочерние MDI-формы.
Иначе не получится.

С уважением,


 
Piter ©   (2004-12-14 23:23) [4]

Игорь Шевченко ©   (14.12.04 23:08) [3]
Первая созданная форма по Application.CreateForm (и только так) до Application.Run должна иметь стиль fsMDIForm, чтобы можно было создавать дочерние MDI-формы.


не знал...


 
Игорь Шевченко ©   (2004-12-14 23:54) [5]


> не знал...


На мой взгляд такое поведение заложено для того, чтобы всегда можно было создать дочернюю MDI-форму, не заботясь о том, какая форма является родительской и даже нигде ее не упоминая. При отказе от VCL разумеется можно сделать и неглавную форму MDI-фреймом, и даже две полноправные MDI-формы, каждая со совими дочерними. Но стоит ли овчинка выделки...

С уважением,


 
Экспериментатор   (2004-12-15 13:53) [6]

Думаю что можно сие реализовать и довольно нехитрым способом
1. Перед Application.Run
главной форме указывать FormStyle

2. В остальный формах сделать другой конструктор в котором определять FormStyle главной формы
если главная форма MDI то FormStyle:=fsMDIChild
иначе fsNormal
По идее должно работать, хотя первый пункт скорей всего по другому придется сделать
а второй пункт железно работает - сам пользуюсь (правда не в такой реализации) - иногда дочерние формы нужно показывать диалогами или просто не дочерними


 
DiamondShark ©   (2004-12-15 14:02) [7]


> При отказе от VCL разумеется можно сделать и неглавную форму
> MDI-фреймом, и даже две полноправные MDI-формы, каждая со
> совими дочерними. Но стоит ли овчинка выделки...

Зачем отказ от VCL?
Всего-то переписать CreateWindowHandle.


 
Экспериментатор   (2004-12-15 14:06) [8]

А зачем это нужно вообще:
дань моде что-ли?


 
TUser ©   (2004-12-15 14:17) [9]

Держи
unit Unit1;

...

implementation
uses unit2, unit3;

{$R *.dfm}
var Styled:boolean = false;

procedure TForm1.Button1Click(Sender: TObject);
begin
 form2.Visible:=not form2.Visible;
 if form2.Visible  and not Styled then begin
   Styled:=true;
   SetWindowLong(form2.Handle,GWL_EXSTYLE,GetWindowLong(form2.Handle,GWL_EXSTYLE) or WS_EX_OVERLAPPEDWINDOW);
   end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 with TForm3.Create(Application) do begin
   Parent:=Form2;
   Show;
   end;
end;

end.

Только в коде проекта не забудем написать

begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);
//  Application.CreateForm(TForm3, Form3);
 Application.Run;
end.


 
DiamondShark ©   (2004-12-15 14:25) [10]

Хе-х :) Самопальный MDI -- это круто.


 
BigDAN ©   (2004-12-21 11:22) [11]

2 TUser
Вариант установки Parent`а рассматривался. Вот только при этом дочерние формы не отображаются как активные.

Спасибо всем за ответы!!!
Сам я схитрил следующим образом
в проекте главная форма - fsMDIForm но не показывается.
(в проекте указываю)
 Application.ShowMainForm:= False;
А вот следующая создаваемая форма уже отображается, и из нее производится управление видимостью главной. Смысл в том чтобы по закрытию "второй" формы убивать и главную тоже.
Несколько извращенно, но работает.



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

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

Наверх





Память: 0.47 MB
Время: 0.036 c
3-1102614287
oxigen
2004-12-09 20:44
2005.01.09
Как выполнить скрипт IB


1-1103729391
atruhin
2004-12-22 18:29
2005.01.09
Многострочный MessageBox


1-1103565717
SilverDragon
2004-12-20 21:01
2005.01.09
Работа с диномическими обьектами


14-1103634756
Gorlum
2004-12-21 16:12
2005.01.09
Задачи при приёме на работу


9-1095542569
Jack
2004-09-19 01:22
2005.01.09
Вопрос по GLScene





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