![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MDI окна [D5]
ASH © (2005-02-23 13:55:00)Добрый день, уважаемые мастера. Подскажите такую вещь. Что бы создать MDI-parent окно оно должно быть главной формой в нашей Application. Свойство Application.MainForm доступно только для чтения. Как быть если мне нужно сделать так что бы MDI-parent форма открывалась с другой модальной формы, которая является MainForm?
Юрий Зотов (2005-02-23 15:37:00) [1]Забыл добавить - форма 1 автосоздаваемая, а формы 2 и 3 из списка автосоздаваемых надо убрать.
Юрий Зотов (2005-02-23 15:03:00) [2]================== Unit1 (SDI-форма) ==================
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
var
Form1: TForm1;
procedure SetMainForm(Form: TForm);
implementation
{$R *.dfm}
uses
Unit2;
procedure SetMainForm(Form: TForm);
var
P: ^TForm;
begin
P := @Application.MainForm;
P^ := Form
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Application.MainForm = Self then
begin
SetMainForm(TForm2.Create(Application));
Application.MainForm.Show
end
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate
end;
================== Unit2 (MDI-форма) ==================
type
TForm2 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
New1: TMenuItem;
Exit1: TMenuItem;
procedure New1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
implementation
{$R *.dfm}
uses
Unit1, Unit3;
procedure TForm2.New1Click(Sender: TObject);
begin
TForm3.Create(Self)
end;
procedure TForm2.Exit1Click(Sender: TObject);
begin
Close
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SetMainForm(Form1);
Action := caFree
end;
================== Unit3 (Child-форма) ==================
type
TForm3 = class(TForm)
Memo1: TMemo; // Align = alClient
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
implementation
{$R *.dfm}
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree
end;