Вниз
Скачать: 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.025 c
14-1108623827
WondeRu
2005-02-17 10:03
2005.03.06
Как построить кривую Безье?


14-1108057467
juice
2005-02-10 20:44
2005.03.06
Как в BCB работать с процедурным типом?


14-1108375786
Dimedrol
2005-02-14 13:09
2005.03.06
Windows XP, boot = чорный экран + мышь


3-1107843307
bon
2005-02-08 09:15
2005.03.06
fastreport & autocad


11-1089967844
Falcon
2004-07-16 12:50
2005.03.06
ImageList и динамическая загрузка.




   Наверх