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

Вниз

Как создать только один экземляр MDIChild   Найти похожие ветки 

 
Dark Man ©   (2004-03-11 04:52) [0]

За ранее благодарен!


 
Defunct ©   (2004-03-11 05:41) [1]

В модуле где описана MDIChild форма, храним ссылку на первый созданный экземпляр, в этом же модуде пишем функцию создания MDIChild формы:

 TMDIChild = class(TForm)
   ...
 End;

 Function CreateAChild(AOwner:TComponent):TMDIChild;

implementation

{$R *.dfm}
Var Form : TMDIChild = Nil;

Function CreateAChild(AOwner:TComponent):TMDIChild;
Begin
 If Not Assigned(Form) Then Form := TMDIChild.Create(AOwner);
 Result := Form;
End;


Далее, в главной форме по событию OnActivate используем функцию CreateAChild для создания MDIChild.

procedure TMainForm.FormActivate(Sender: TObject);
begin
 OnActivate := Nil; // И снимаем обработчик, или устанавливаем другой
 CreateAChild(Application)
end;


 
Defunct ©   (2004-03-11 05:48) [2]

Для надежной работы перекройте Destructor MDIChild формы, так чтобы отчищалась лок переменная:


TMDIChild = class(TForm)
  ...
  Destrcutor Destroy;Override;
End;

Function CreateAChild(AOwner:TComponent):TMDIChild;

implementation

{$R *.dfm}
Var Form : TMDIChild = Nil;

Function CreateAChild(AOwner:TComponent):TMDIChild;
Begin
If Not Assigned(Form) Then Form := TMDIChild.Create(AOwner);
Result := Form;
End;

Destrcutor TMDIChild.Destroy;
Begin
 Form := Nil;
 Inherited;
End;


 
VMcL ©   (2004-03-11 07:10) [3]

>>Dark Man ©  (11.03.04 04:52)
>За ранее благодарен!

А [1] и [2] - чисто сердечный ответ.



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

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

Наверх




Память: 0.47 MB
Время: 0.034 c
11-1056811295
Юрий Ж.
2003-06-28 18:41
2004.03.28
Как задать шрифт RichEdit?


1-1078995931
Dmitrij_K
2004-03-11 12:05
2004.03.28
Mastera помогите!!! MS Word as Delphi


3-1077983552
ZSergey
2004-02-28 18:52
2004.03.28
Помогите пожалуйста правильно составить SQL-запрос!


4-1073901124
keymaster
2004-01-12 12:52
2004.03.28
hibernate программно


1-1078763502
sentinel
2004-03-08 19:31
2004.03.28
Номер строки исходника