Главная страница
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.047 c
11-1089967844
Falcon
2004-07-16 12:50
2005.03.06
ImageList и динамическая загрузка.


9-1102258178
lifo
2004-12-05 17:49
2005.03.06
grp формат


1-1109094700
mr-jack
2005-02-22 20:51
2005.03.06
перестановка StringGrid


3-1107421267
kyn66
2005-02-03 12:01
2005.03.06
Создать таблицу DBase, чтобы понимал Foxpro


14-1108307294
Flext@r
2005-02-13 18:08
2005.03.06
Подскажите, как сохранить интерне-страницу на хард!