Опять про формы в Builder'е

KInG 01.06.2004 - 16:21 | Есть главная форма MainForm, есть некая форма сообщения MessageForm. У MessageForm->FormStyle = fsStayOnTop. Если приложение не свернуто, то все хорошо, т.е. MessageForm находится поверх всех окон. Если свернуть главную форму (MainForm) приложения то MessageForm просто исчезает. Вопрос: можно ли сделать так, чтобы при сворачивании приложения форма MessageForm не исчезала? Буду очень признателен за любую помощь.
Deflorator 1 - 01.06.2004 - 20:51 | она не сичезает, а сворачивается вместе с главной формой. попробуйте это: private { Private declarations } procedure CreateParams(VAR Params: TCreateParams);override; public { Public declarations } end; var Msg: TMsg; implementation {$R *.dfm} {------------------------------------------------------------------------} procedure TMsg.CreateParams(VAR Params: TCreateParams); begin inherited CreateParams(Params); with Params do ExStyle := ExStyle or WS_EX_APPWINDOW; end; тогда Ваша форма будет иметь кнопку на панели задач как будто отдельное приложение и, вероятно, не будет сворячиваться, хотя, вряд ли, но попробуйте - метод тыка очень удобен :)
KInG 2 - 02.06.2004 - 10:21 | Кнопка на панели задач для второй формы не спасает, при минимизации приложения форма все равно прячется. Однако вы натолкнули меня на идею. Если получится - сообщу.
Deflorator 3 - 02.06.2004 - 10:36 | *cидит довольный*
KInG 4 - 02.06.2004 - 16:10 | Получилось (почти :). Суть в том, чтобы не минимизировать приложение а прятать главную форму...вернее форма престает быть главной. Получилось примерно следующее. 1) Создаешь пустую форму и делаешь ее главной формой приложения (устанавливаешь Visible = false); 2) В приложении устанавливаешь Application->ShowMainForm = false; 3) У бывшей гланой формы делаешь кнопочку для таскбара (как посоветовл г-н Deflorator); 4) Для бывшей главной формы перехватываешь событие WM_SYSCOMMAND с параметром SC_MINIMIZE и просто прячешь форму (вместо того чтобы сворачивать ее, а то она остается в углу); 5) В обработчике OnMinimize приложения пишем: Application->Restore(); MainForm->Visible = !MainForm->Visible; (для управления видимостью из таскбара).

>>