Форум: "Основная";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Внизвызов форм Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c