Вниз
Скачать: 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 вся ветка

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



Память: 0.45 MB
Время: 0.027 c
1-1108827395
AlexDid
2005-02-19 18:36
2005.03.06
IP-адрес компутера


3-1107286457
3APA3A
2005-02-01 22:34
2005.03.06
Узнать версию FB с клиента...


1-1108559757
mr-jack
2005-02-16 16:15
2005.03.06
PrintDialog и конструкция try...end;


1-1108636515
snake_r
2005-02-17 13:35
2005.03.06
размер коментария в Excel


3-1107795797
Vantage-10
2005-02-07 20:03
2005.03.06
Врменная таблийа в Access




   Наверх