Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-7511
A
2003-06-21 16:54
2003.07.03
Свойство компонента ListBox


14-7662
JibSkeart
2003-06-15 18:17
2003.07.03
При включении компа кричит Bios check sum error


4-7766
sunwheel1
2003-04-28 12:38
2003.07.03
Помогите с WaitForSingleObject


14-7636
Schummi
2003-06-14 18:02
2003.07.03
Как заработать деньги?


3-7302
Alexei
2003-06-09 03:49
2003.07.03
Как cоздать команду... в Db





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский