Главная страница
    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.024 c
3-1078463714
-Evgeney -
2004-03-05 08:15
2004.04.04
Как добать базу данных в EXE файл


8-1070651618
News
2003-12-05 22:13
2004.04.04
Эффект для мыши


3-1078839844
Ross
2004-03-09 16:44
2004.04.04
Как добраться до значения Footer колонки в DBGrideh


7-1074492835
Dmitriy_G
2004-01-19 09:13
2004.04.04
Как мне проверить наличие сигнала CTS, в COM


1-1079369260
Eagle Owl
2004-03-15 19:47
2004.04.04
Ресурсы в DLL





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