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

Вниз

Приложение N в одном.   Найти похожие ветки 

 
Дмитрий С ©   (2010-03-15 08:12) [0]

Стоило ветку назвать "Хочу странного", но все же.
Хочу, чтобы у приложения было несколько главных форм, у каждой своя кнопка на панели задач, каждая независимо от других сворачивается и разворачивается. Когда все главные формы закрыты - приложение закрывается.
Сделал так:
     
     Application.MainFormOnTaskbar := False;
     Application.ShowMainForm := False;
     Application.Title := "...";
     Application.CreateForm(TWinMan, WinMan);
     WinMan.ShowWindow(WN_MainForm);

Где TWinMan - пустая форма, которая никогда не показывается. В ней реализован простой менеджер главных форм.
WinMan.ShowWindow(WN_MainForm); - создает экземпляр класса TMainForm и вызывает метод Show.
WN_MainForm - это числовая константа, по которой метод узнает какую форму нужно создать и показать.
При закрытии каждой главной формы вызывается такой код:
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := caNone;
 WinMan.HideWindow(WN_MainForm);
end;


Для того, чтобы у форм были кнопки на панели задач делаю так для каждой из них:
procedure TMainForm.CreateParams(var Params: TCreateParams);
begin
 inherited;
 with Params do
   ExStyle := ExStyle or WS_EX_APPWINDOW;
end;


Работает как надо, кроме модальных форм.
Если одна из главных форм показывает модальную - то, как и положено, замирают все остальные формы, но эти замершие формы можно поместить на передний план с помощью кнопки на панели задач - это минус.
Как от него избавится?

В идеале хочу, чтобы можно было открывать несколько модальных окон - у каждой главной формы свой модальный стек. Но, имхо, это нереально сделать с VCL.

Если не рассматривать то, что в идеале, остается еще один вариант - mdi приложение - но, есть мнение, что их использовать не рекомендует даже ms.

Есть еще вариант - несколько процессов, но пока тоже хочется обойтись без него.

Надеюсь я понятно объяснил.


 
tesseract ©   (2010-03-15 10:43) [1]


> каждая независимо от других сворачивается и разворачивается.
>  Когда все главные формы закрыты - приложение закрывается.
>


SDI ? http://ru.wikipedia.org/wiki/Single_document_interface


 
Дмитрий С ©   (2010-03-15 12:58) [2]


> tesseract ©   (15.03.10 10:43) [1]
>
>

SDI выходит. Только в SDI все окна однородные, а у меня нет, вся разница.


 
oldman ©   (2010-03-15 13:05) [3]


> В идеале хочу, чтобы можно было открывать несколько модальных
> окон


Действительно - странного хочешь.


 
Dimka Maslov ©   (2010-03-15 13:23) [4]

Что мешает открывать несколько экземпляров приложения, которые связаны посредством известных механизмов межпроцессового взаимодействия?


 
Дмитрий С ©   (2010-03-15 13:42) [5]


> Dimka Maslov ©   (15.03.10 13:23) [4]
>
> Что мешает открывать несколько экземпляров приложения, которые
> связаны посредством известных механизмов межпроцессового
> взаимодействия?

Так и сделал в итоге. Взаимодействие с помощью оконных сообщений.



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

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

Наверх




Память: 0.46 MB
Время: 0.06 c
15-1271695731
Sergey Masloff
2010-04-19 20:48
2010.08.27
Мобильный без камеры нужен (известно же что тут лучший поисковик)


15-1274560189
Юрий
2010-05-23 00:29
2010.08.27
С днем рождения ! 23 мая 2010 воскресенье


2-1273815100
tippa
2010-05-14 09:31
2010.08.27
алгоритм удаления дубликатов из списка


8-1205515629
nuflin
2008-03-14 20:27
2010.08.27
шейдеры


2-1265467771
tippa
2010-02-06 17:49
2010.08.27
моделирование логики программы





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