Форум: "Прочее";
Текущий архив: 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.068 c