[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    (* Always on Top *)

    {I had a hard time finding out how to ensure a form always remains on top
    of all other forms. fsAlwaysOnTop only affects the z-order within the
    current application. To ensure that it remains on top of other forms from
    other programs as well, one needs to use the Windows API.

    Including the following in a form's OnCreate event will designate it as a
    topmost window.}

         procedure TYourForm.FormCreate(Sender: TObject);
         begin
              SetWindowPos(YourForm.Handle,
              HWND_TOPMOST,
              0, 0, 0, 0,
              SWP_NOMOVE OR
              SWP_NOACTIVATE OR
              SWP_NOSIZE);
         end;

    {However, you need to keep reminding Windows to restore your window to the
    top of the z-order ahead of any other topmost windows by adding the
    following to the form's OnPaint event. Otherwise, other programs that
    modify the z-order can paint over yours.}

         procedure TYourForm.FormPaint(Sender: TObject);
         begin
              SetZOrder(True);
         end;

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]