Главная страница
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.012 c
14-7676
alpine
2003-06-15 13:07
2003.07.03
Помогите с выбором !


1-7428
SPeller
2003-06-23 09:41
2003.07.03
Линковка .obj - файлов


3-7300
Viktoria
2003-06-07 20:15
2003.07.03
goThumbTracking и DBGrid


7-7748
Владимир3
2003-04-22 12:49
2003.07.03
как получить значение уровня громкости WAVE-устройств Windows?


14-7643
kull
2003-06-15 15:27
2003.07.03
Количественные оценки качества кода...