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

Вниз

Непростое MDI-приложение   Найти похожие ветки 

 
fadeyev ©   (2004-01-20 20:00) [0]

Задача: приложение, у которого главная форма НЕ MDI, должно по одному из пунктов меню вызывать MDI-форму, в которой можно открыть несколько MDI-child"ов.
Пример: главная форма управляет вводом данных в таблицы и запускает расчет. Расчет выбрасывает кучу однотипных файлов, для просмотра которых хорошо подходит MDI-концепция. Такой вот MDI-просмотровщик хорошо работает отдельно, но после прицепления к основному проекту не может создать ни одного дочернего окна.

Проблема: TCustomForm при создании окна со стилем fsMDIChild пытается прицепить его к Application.MainForm.ClientHandle - то есть требует от MDI-формы быть главной. Но в MS SDK черным по белому написано: приложение может иметь сколько угодно окон верхнего уровня, содержащих Child-окошки. Запрещена только вложенность.

Вопрос: как обойти такое прискорбное ограничение VCL?


 
YuRock ©   (2004-01-20 21:45) [1]

> прискорбное ограничение VCL

Это прискорбное ограничение Windows


 
fadeyev ©   (2004-01-20 21:51) [2]

Нет, именно VCL!
<--------------cut>
PSS ID Number: Q74041

Authored 11-Jul-1991   Last modified 19-May-1995

The information in this article applies to:

- Microsoft Windows Software Development Kit (SDK) versions 3.1 and 3.0
- Microsoft Win32 SDK versions 3.5, 3.51, and 4.0

SUMMARY

The Microsoft Windows implementation of the multiple document
interface (MDI) does not support nested MDI client windows. In other
words, neither an MDI client window nor an MDI child window can have
an MDI client window as a child.

MORE INFORMATION

A Windows MDI client window is a member of the MDIClient window class,
and the Windows MDI model assumes that the parent of an MDIClient
window is a top-level frame window with a valid menu bar. This
assumption is necessary to implement the basic functionality defined
by the MDI interface, and it precludes the possibility of using nested
MDIClient windows. However, an application can have multiple top-level
windows, and each top-level window can have a separate MDIClient

window as a child.

Additional reference words: 3.00 3.10 3.50 3.51 4.00 95
KBCategory: kbprg
KBSubcategory: UsrMdi
<--------------cut>


 
YuRock ©   (2004-01-20 22:25) [3]

А можно перевести ключевые места?
> fadeyev ©   (20.01.04 21:51) [2]


 
Digitman ©   (2004-01-21 08:58) [4]

изменить св-во Application.MainForm можно след.образом :

Application.CreateForm(TNormalForm, NormalForm); //создание самой первой формы, она стала главной
...
Application.ControlDestroyed(MainForm); //FMainForm := nil;
Application.CreateForm(TMDIForm1, MDIForm1); //теперь MDI-форма MDIForm1 стала главной и св-во MainForm отныне = MDIForm1


 
fadeyev ©   (2004-01-21 19:11) [5]

Спасибо за советы!
Уже реализовал почти MDI из обычных окошек, правда правда пришлось ручками делать Cascade, Tile и т.п.
Еще раз спасибо, тема закрыта.



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

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

Наверх





Память: 0.45 MB
Время: 0.031 c
7-1074576275
2ac
2004-01-20 08:24
2004.04.04
Как из программы разорвать соединение с интернетом?


14-1078935501
juiceman
2004-03-10 19:18
2004.04.04
справочник WinApi


14-1077015669
Alex_Bredin
2004-02-17 14:01
2004.04.04
Локомотив - Монако 24 февраля


8-1069862972
Pa5ha
2003-11-26 19:09
2004.04.04
Direct3D Resize


3-1078741588
Serg777
2004-03-08 13:26
2004.04.04
Существует ли DBGrid с нормальной реализацией полосы прокрутки





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