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

Вниз

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

 
ASH ©   (2005-02-23 13:55) [0]

Добрый день, уважаемые мастера. Подскажите такую вещь. Что бы создать MDI-parent окно оно должно быть главной формой в нашей Application. Свойство Application.MainForm доступно только для чтения. Как быть если мне нужно сделать так что бы MDI-parent форма открывалась с другой модальной формы, которая является MainForm?


 
Юрий Зотов ©   (2005-02-23 15:03) [1]

================== 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;


 
Юрий Зотов ©   (2005-02-23 15:37) [2]

Забыл добавить - форма 1 автосоздаваемая, а формы 2 и 3 из списка автосоздаваемых надо убрать.



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

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

Наверх




Память: 0.47 MB
Время: 0.024 c
1-1108812295
Михаил_
2005-02-19 14:24
2005.03.06
Подскажите, где можно найти описание реальных имен функций Win AP


14-1107990820
Piter
2005-02-10 02:13
2005.03.06
Кто-нибудь слушал новый альбом Агаты Кристи?


14-1108366803
Sapsi
2005-02-14 10:40
2005.03.06
Уровень общей культуры в России и других странах


1-1108613768
Dyusha
2005-02-17 07:16
2005.03.06
FAT 16


1-1108560759
Kubic
2005-02-16 16:32
2005.03.06
Округление числа с заданной точностью