Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.031 c
3-1102476143
dolphin
2004-12-08 06:22
2005.01.09
filter глюкует в инспекторе пашет а програмно нет


14-1103725095
oldman
2004-12-22 17:18
2005.01.09
Господа модераторы!


14-1103451382
tazik
2004-12-19 13:16
2005.01.09
На каком сайте можно достать нормальную графику для программы


3-1102081659
An
2004-12-03 16:47
2005.01.09
Отчёт в MS Word


4-1100691761
fester
2004-11-17 14:42
2005.01.09
Процесс запуска EXE-файла




   Наверх