Вниз
Скачать: 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 вся ветка

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



Память: 0.46 MB
Время: 0.011 c
14-7698
vidiv
2003-06-16 10:31
2003.07.03
Где лучше хранить данные в INI или во многих TXT.


1-7430
Aleksandr
2003-06-23 12:22
2003.07.03
Как расшифровать содержимое TWMKey?


14-7597
Крот
2003-06-18 09:24
2003.07.03
Кто нужен в Н-ске.


3-7343
Sakses
2003-06-07 16:34
2003.07.03
параметры


14-7718
uw
2003-06-17 16:49
2003.07.03
Чудо на Садовом




   Наверх