Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Вниз

Опять про Mdi формы, теперь проблема с открытием   Найти похожие ветки 

 
maxim2   (2002-06-07 13:30) [0]

Привет опять!
Благодаря человеку с ником Kaif разобрался как закрывать MdiChild. Но у меня до этого было всего две формы одна MDIForm а другая MdiChild и вызывалась только она а теперь у меня их несколько и как вызвать нужную я непонял.
Помогите кто еще не устал.


 
Fiend   (2002-06-07 13:41) [1]

шо значит вызвать нужную?
У тя теперь Несколько классов MDI окон?

TMDIForm1=class .....

TMDIForm2=class .....

TMDIForm3=class .....


по нажатии батона делается
TMDIForm1.Create(Application)

или TMDIForm2.Create(Application)

а какое окно создавать, я думаю ты сам решиш?!


 
kaif   (2002-06-07 13:42) [2]

Любая форма в приложении может быть fsMDIChild. Для этого нужно только вписать обработчик OnClose, как уже говорилось и установить свойство этой формы FormStyle = fsMDIChild. Желательно еще убрать ее из списка AutoCreated Forms проекта, чтобы это окно не появлялось сразу внутри главного при запуске программы.
Чтобы потом его создать RunTime я лично использую такой подход. Добавляю в главное меню пункт и в его обработчик вписываю:

if Application.FindComponent("MyForm") <> nil then
MyForm.Show
else
MyForm := TMyForm.Create(Application);

Тогда, если это окно уже существует, то оно выйдет на передний план, а если его нет - то будет создано.

Если же нужно штамповать одинаковые окна одного типа, например, TMyForm, то нужно придумать, как их отличать друг от друга. Можно после создания каждого в процессе работы программы назначать ему какое-то имя (Name) и потом искать точно так же с помощью Application.FindComponent(<имя>). А можно перебирать список MDIChildren[i] главного окна и, приводя элементы к классу формы TMyForm, анализировать их свойства, хотя бы то же Name.


 
maxim2   (2002-06-07 13:50) [3]

Не у меня готовые формы на них всякие DbGrid и т.д их не нужно создавать программно их просто нужно показать а типа Form2.show не работает выдает ошибку.


 
kaif   (2002-06-07 14:14) [4]

Показывать формы в MDI это и есть создавать их экземпляры. Пока не создашь - не покажутся. В случае обычного (не MDI) проекта, окно может быть невидимым, хотя и созданным при запуске проекта. Тогда его показывают методом Show. А в MDI если окно не видно - значит его экземляра вообще не существует, так как MDIChild окно невозможно скрыть. Посмотри сам файл .dpr через Project|View Source. Это сама программа как таковая. Если там окна не создаются, то их нужно создавать руками с помощью методов Create.



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

Форум: "Базы";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
14-1197
Song
2002-05-31 15:40
2002.07.01
Ребят, как вам вид творчества?


14-1175
BJValentine
2002-05-29 14:47
2002.07.01
NoteBook Toshiba


1-1036
XShura
2002-06-18 14:22
2002.07.01
Вопрос по потокам


3-903
DKalinin
2002-06-07 14:36
2002.07.01
Помогите! Какую ошибку перехватывать при открытии ADOquery надо?


1-1006
Dennn_is
2002-06-18 08:49
2002.07.01
КАК?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский