Oh Lars, what do you think about:
for i := 0 to ChildForms.Count - 1 do
ShowWindow(ChildsForms[i].Handle, SW_MINIMIZE);
--
Vladimir Yushko
http://yarrowsoft.com/ applications for Outlook Express
----- Original Message -----
From: "lars_stahre" < lst%40lse.se">lst
lse.se>
To: < delphi-en%40yahoogroups.com">delphi-en
yahoogroups.com>
Sent: Thursday, September 27, 2007 12:06 AM
Subject: [delphi-en] Solved: How can I make a form globally "topmost"
without having a taskbar button
> Many thanks Vladimir. That solved my task. Great!!!
>
> However, I have one more related problem left:
>
> My application may create several child forms in runtime. I want to
> make them topmost too.
> Setting WndParent:=0 displays a button for the child form which I
> don't want.
> Making the child form a ToolWindow causes a thinner caption bar which
> I don't want neither.
>
> By setting WndParent:=MainForm.Handle I can almost make it work, but
> the child forms do not minimize when the mainform is minimized.
>
> Is there any simple solution to this or do I have to iterate through
> the child windows in the WMSysCommand message handler and use
> ShowWindow() in a similar way as for the mainForm?
>
> BR,
> Lars
>
>
> --- In delphi-en%40yahoogroups.com">delphi-en
yahoogroups.com, "Vladimir Yushko" <yahoo
...> wrote:
> >
> > Hi,
> > You should override following methods:
> >
> > procedure WMSysCommand(var Message: TWMSysCommand); message
> > WM_SYSCOMMAND;
> >
> > procedure TTaskForm.WMSysCommand(var Message: TWMSysCommand);
> > begin
> > case (Message.cmdtype and $FFF0) of
> > SC_MINIMIZE:
> > begin
> > ShowWindow(handle, SW_MINIMIZE);
> > Message.result := 0;
> > end;
> > SC_RESTORE:
> > begin
> > ShowWindow(handle, SW_RESTORE);
> > Message.result := 0;
> > end;
> > else
> > inherited;
> > end;
> > end;
> >
> > procedure TTaskForm.CreateParams(var Params: TCreateParams);
> > begin
> > inherited CreateParams(Params);
> > //Show a button for the main form
> > with Params do begin
> > ExStyle := ExStyle or WS_EX_APPWINDOW and not WS_EX_TOOLWINDOW;
> > WndParent := 0;
> > end;
> > end;
> >
> > procedure TTaskForm.DoClose(var Action: TCloseAction);
> > begin
> > inherited;
> > Action := caFree;
> > end;
> >
> > --
> > Vladimir Yushko
> > http://yarrowsoft.com/ solutions for Outlook Express
> >
> > ----- Original Message -----
> > From: "lars_stahre" <lst
...>
> > To: < delphi-en%40yahoogroups.com">delphi-en
yahoogroups.com>
> > Sent: Tuesday, September 25, 2007 1:37 AM
> > Subject: [delphi-en] Re: How can I make a form globally "topmost"
> without
> > having a taskbar button
> >
> >
> > > Hello my friends and thank you for your quick suggestions.
> > > My appologize for responding slowly. -I have been unavailable for
> > > some while.
> > >
> > > Vladimir - Your suggestions definitely makes the window topmost
> if I
> > > also set the desktop as the window owner (instead of the
> application).
> > > However, when I hide the extra button the button that is left
> still
> > > does not work properly. The maximize and minimize choices doesn't
> > > work.
> > > Does anyone know how to correct this?
> > >
> > > BR,
> > > Lars
> > >
> > >
> > >
> > > --- In delphi-en%40yahoogroups.com">delphi-en
yahoogroups.com, "Vladimir Yushko" <yahoo
>
> > > wrote:
> > > >
> > > > Hi!
> > > > First hide the button created by Delphi for the Application:
> > > >
> > > > ShowWindow(Application.Handle, SW_HIDE);
> > > > SetWindowLong(Application.Handle, GWL_EXSTYLE,
> > > > GetWindowLong(Application.Handle, GWL_EXSTYLE) or
> > > > WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
> > > > ShowWindow(Application.Handle, SW_SHOW);
> > > >
> > > > --
> > > > Vladimir Yushko
> > > > http://yarrowsoft.com/
> > > >
> > > > ---
> > > >
> > >
> > >
> > >
> > >
> > > -----------------------------------------------------
> > > Home page: http://groups.yahoo.com/group/delphi-en/
> > > To unsubscribe: delphi-en-unsubscribe%40yahoogroups.com">delphi-en-unsubscribe
yahoogroups.com
> > > Yahoo! Groups Links
> > >