Форум: "Основная";
Текущий архив: 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.044 c