Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.01;
Скачать: CL | DM;

Вниз

Опять про 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
14-1184
Sejatel
2002-05-27 04:08
2002.07.01
Не


6-1119
Georg
2002-04-19 17:04
2002.07.01
Вопрос по прокси-серверам.


14-1192
skiph
2002-05-30 05:26
2002.07.01
Посоветуйте компоненту


14-1135
Внук
2002-05-28 10:33
2002.07.01
Функция wvsprintf


6-1126
Просто чел
2002-04-19 02:36
2002.07.01
NMHTTP немного о его работе и ошибках соединения