Главная страница
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.025 c
4-1106240656
Arnold
2005-01-20 20:04
2005.03.06
Проблема с хуком WH_MOUSE


4-1106033614
volser
2005-01-18 10:33
2005.03.06
Как по хендлу SysListView32 получитьсписок всех его элементов?


3-1107419687
beginnn
2005-02-03 11:34
2005.03.06
Кол-во записей в таблице??


1-1108742803
сомневающийся
2005-02-18 19:06
2005.03.06
Hint на DBCtrlGrid


14-1108563517
Луарвик
2005-02-16 17:18
2005.03.06
Че за Faq странный???