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

Вниз

вызов форм   Найти похожие ветки 

 
anatolyk ©   (2003-06-22 19:51) [0]

Всем привет. Помогите разобраться в следующем вопросе.
Есть необходимость написать что-то вроде этого

Procedure TForm1.OpenSomeForm(SomeForm:TForm);
var
i: integer;
FormFound: Boolean;
begin
FormFound := False;
for i:=0 to Screen.FormCount - 1 do begin
try
if Screen.Forms[i].Caption = SomeForm.Caption then begin
FormFound := True;
Form1.SendToBack; //Form1 - menu
break;
end
except
end;
end;
if FormFound then SomeForm.SetFocus
else Application.CreateForm(TForm2, SomeForm);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// Класс в CreateForm: TForm2, TForm3, ... в зависимости
// от имени SomeForm, и всегда будет соответствовать "T"+ имя SomeForm
//
end;

Можно, конечно, написать все это для каждого пункта меню, но хотелось бы ограничится подобной процедурой, чтобы вызов был
типа
OpenSomeForm(Form1); и т.д.


 
Ученик ©   (2003-06-22 19:58) [1]

Почему не SomeForm.BringToFront ?


 
anatolyk ©   (2003-06-22 20:09) [2]

Если форма создана, то да. А если еще нет. Разве BringToFront создаст ее?. Хотя, замечание полезное. Спасибо.


 
Ученик ©   (2003-06-22 20:20) [3]

>anatolyk © (22.06.03 20:09)
Каким образом устанавливается соответствие пункт меню - класс формы ?


 
anatolyk ©   (2003-06-22 20:26) [4]

Да никаким. Просто есть, скажем, меню из 3 пунктов. Есть 3 формы: Form2 (TForm2), Form3 (TForm3), Form4 (TForm4).

вот и приходится для кажного пункта меню на OnClick писать тот же кусок кода, но менять в нем 2 на 3, 3 на 4. Гемор, да и красивее было бы одной строчкой.


 
Ученик ©   (2003-06-22 20:43) [5]

Чуть сокращенный вариант :-)

if Form1 = nil then
Applcation.CreateForm(TForm1, Form1)
else
Form1.BringToFront

В TForm1.OnDestroy
Form1 := nil


 
VMcL ©   (2003-06-22 22:25) [6]

>Ученик © (22.06.03 20:43)
>В TForm1.OnDestroy
> Form1 := nil

Это не всегда правильно.


 
Ученик ©   (2003-06-22 22:33) [7]

>VMcL © (22.06.03 22:25)
В данном случае, надеюсь, правильно ?



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
1-7542
Mishenka
2003-06-22 15:04
2003.07.03
Как получить стандартные иконки файлов?


3-7295
Rem
2003-06-08 20:16
2003.07.03
Конкатенация строк в SQL-запросе, если одна из них NULL


14-7634
RelaXXX
2003-06-14 00:41
2003.07.03
Oracle???


14-7682
ilyasim
2003-06-06 03:48
2003.07.03
OpenGL(Open, open... :D)


1-7390
Oleksiy
2003-06-20 11:34
2003.07.03
Передача строки в DLL