Текущий архив: 2007.10.07;
Скачать: CL | DM;
Вниз
Многодокументальное прило жение . Создание новой нестан. формы Найти похожие ветки
← →
NKT (2007-07-25 10:18) [0]Всем добрый день ! Пробую создать многодокументальное прило жение . Решила создать новую форму - Form1 , указала в св-ве
Formstyle = MDIChild , при вызове формы :
Form1 := TForm1.Create(Application);
Form1.Show;
MainMenu1.Merge(Form1.MainMenu1);
на операторе Form1 := TForm1.Create(Application); ругается :
Cannot create form . No MDI forms are currently active .
Нужна нестандартная форма и не одна . Как правильно создать нестандартные формы .
Всем спасибо .
← →
Loginov Dmitry © (2007-07-25 10:39) [1]Главная форма должна иметь Formstyle = MDIForm и создаваться она должна раньше, чем создается дочерняя форма.
> Form1.Show;
Show тут лишнее. Дочерние формы появляются автоматически после выполнения Create.
← →
MsGuns © (2007-07-25 10:52) [2]Динамичски создаваемую "дочку" надр убрать из списка автосоздаваемых (Project->Options->Forms)
← →
NKT (2007-07-25 11:32) [3]> Динамичски создаваемую "дочку" надр убрать из списка автосоздаваемых (Project->Options->Forms) - сделано .
Убрала Show - эффект тот же .
← →
Плохиш © (2007-07-25 11:38) [4]
> NKT (25.07.07 11:32) [3]
А первое предложение в [1] по какой причине было не замечено?
Пора уже и почитать чего...
← →
NKT (2007-07-25 11:44) [5]И первое предложение сделано .
Может быть в MDI нельзя создавать нестандартные формы , а можно работать только как описано в литературе ?
Пробовала шаблон проекта SDI , менялa стиль форм на Formstyle = MDIForm и
Formstyle = MDICHildForm , эффект тот же .
Или так нельзя или где-то не учтена какая-то мелочь , вопрос - какая .
← →
Плохиш © (2007-07-25 11:59) [6]
> Пробовала шаблон проекта SDI , менялa стиль форм на Formstyle
> = MDIForm и Formstyle = MDICHildForm
Да, вижу, вам читать ещё рано...
← →
sniknik © (2007-07-25 12:03) [7]> А первое предложение в [1] по какой причине было не замечено?
имхо, причина(оно же правило) у них всех одна - все что не понимается то игнорируется.
> Или так нельзя или где-то не учтена какая-то мелочь , вопрос - какая .
образование.
← →
Плохиш © (2007-07-25 12:04) [8]
> Может быть в MDI нельзя создавать нестандартные формы
Что-такое в вашем понимании "нестандартная форма"
> а можно работать только как описано в литературе ?
MDI - это интерфейс пользователя, работа которого подчиняется определённому алгоритму, который за много лет очень подробно описан во всякой документации...
← →
MsGuns © (2007-07-25 12:32) [9]Метод Show для MDI интерфейса работает "несколько" иначе, чем у обычного (SDI)
В основе лежит "скрытный" объект TClientArea, который собственно и управляет прорисовкой "дочек" - именно через него "мама" керует "дочками". Непонимание этого часто приводит к недоразумениям у неопытных программистов.
У "мамы" есть два св-ва: ActiveMDIChild и MDIChildCount и коллекция MDIChildren, с помощью который собственно и нужно "управлять" дочками.
← →
Игорь Шевченко © (2007-07-25 14:13) [10]
> Метод Show для MDI интерфейса работает "несколько" иначе,
> чем у обычного (SDI)
Вроде точно также...
← →
clickmaker © (2007-07-25 14:50) [11]
> "скрытный" объект TClientArea
это где такой?
и в методе SetWindowToMonitor нет никакой проверки на fsMDIForm
Только в WM_ACTIVATE если есть активная "дочка", фокус ей передается
← →
NKT (2007-07-25 15:47) [12]Проблема была в том , что первой формой я вызывала заставку (ABoutBox) .
Удалила заставку . первой стала вызываться главная форма и все получилось , дочерняя форма создается и вызывается как положено , и метод Show не нужен .
Всем спасибо за советы .
← →
Юрий Зотов © (2007-07-25 17:16) [13]> NKT (25.07.07 15:47) [12]
Проблема была не в этом, а в том, что форма заставки создавалась неверно (через Application.CreateForm) и поэтому становилась главной. А чтобы она главной не становилась, создавайте ее так:
FormAboutBox = TFormAboutBox.Create(Application);
Страницы: 1 вся ветка
Текущий архив: 2007.10.07;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.031 c