Вниз
Скачать: CL | DM;

не создавать дочернюю форму   Найти похожие ветки 

← →
_Gras_   (2006-09-04 18:08) [0]

Привет всем!!! Такой вопрос: фот создал MDI-форму, создал дочернюю, убрал из списка автосоздания. При нажатии на кнопку выполняется код Form:=TForm.Create(self);
И каждый раз создается новое дочернее окно, а как сделать так, чтобы при нажатии на кнопку дочернее окно создавалось только 1 раз и если доченряя форма создана, то при последубщем нажатии на кнопку ничего не создавалось?


← →
Ega23 ©   (2006-09-04 18:12) [1]

if Form<>nil then ......
Только на удаление не забыть
Form.Free;
Form:=nil;


← →
Рустем ©   (2006-09-04 18:13) [2]

Добавь в свое приложение следующую функцию:

function TMDIForm.OpenForm(FormClass: TFormClass): Boolean;
begin
 Result:=True;
 Screen.Cursor := crHourGlass;
 try
   FindShowForm(FormClass, "");
 finally
   Screen.Cursor := crDefault;
 end;
end;

и дочернюю форму открывай так:

 OpenForm(TChildForm);


← →
Loginov Dmitry ©   (2006-09-04 18:44) [3]


procedure TForm1.Button6Click(Sender: TObject);
begin
 if Form2 = nil then
   Form2 := TForm2.Create(Application);
end;


← →
Рустем ©   (2006-09-04 20:34) [4]

Прошу прощения, в [2] функция должна выглядеть так:

function TMDIForm.OpenForm(FormClass: TFormClass): Boolean;
var
 MyForm: TForm;
 i: Integer;
begin
 Result:=True;
 MyForm := nil;
 Screen.Cursor := crHourGlass;
 try
   for i := 0 to Screen.FormCount - 1 do
   begin
     if Screen.Forms[i] is FormClass then
     begin
       MyForm := Screen.Forms[i];
       Break;
     end;
   end;
   if MyForm = nil then Application.CreateForm(FormClass, MyForm);
   with MyForm do
   begin
     if WindowState = wsMinimized then WindowState := wsNormal;
     Show;
   end;
 finally
   Screen.Cursor := crDefault;
 end;
end;

Данный метод имеет свой плюс при использовании нескольких дочерних форм.

P.S. Повзаимствовано из библиотеки RxLib...


← →
Loginov Dmitry ©   (2006-09-04 21:33) [5]

> if Screen.Forms[i] is FormClass then


Не нравится мне эта строка. Лучше уж

if Screen.Forms[i].ClassType = FormClass.ClassType then

имхо



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

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



Память: 0.46 MB
Время: 0.031 c
15-1157633263
syte_ser78
2006-09-07 16:47
2006.09.24
функция date


15-1157539204
Mozart
2006-09-06 14:40
2006.09.24
Как собрать информацию о компьютерах в своей сети удаленно?


15-1157000425
begin...end
2006-08-31 09:00
2006.09.24
31 августа. С Днём рождения!


6-1146908689
Officeman
2006-05-06 13:44
2006.09.24
NMFTP ListItem


15-1157131916
Dbn
2006-09-01 21:31
2006.09.24
Проблема с компом, точнее с подключеним в интернет.




   Наверх