Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.022 c
2-1189278252
Fin
2007-09-08 23:04
2007.10.07
Как узнать код символа в юникоде.


15-1189408708
vasIZmax
2007-09-10 11:18
2007.10.07
Органайзер-инспектор


2-1189098457
Progr
2007-09-06 21:07
2007.10.07
Вопрос по БД


6-1170949405
AllDontFire
2007-02-08 18:43
2007.10.07
Как реализовать 3х уровневое приложение?


3-1180579906
@dim
2007-05-31 06:51
2007.10.07
Блокировки в MS SQL