Announcement

Collapse
No announcement yet.

Formstyle "StayOnTop" nur mit Hauptformular ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formstyle "StayOnTop" nur mit Hauptformular ?

    Hallo,<br>
    ich versuche gerade, einem Fenster, das nicht das Hauptfenster meines<br>
    Programms ist, den FormStyle "StayOnTop" zu "verpassen", aber<br>
    leider funktioniert das nicht.<br>
    Das Fenster kann von anderen Fenstern überdeckt werden.<br>
    Weiß jemand eine Lösung?<br>
    Vielleicht eine Windows-Message, die signalisiert, das ein Bereich des<br> Fensters überzeichnet wurde ?<br>
    Sie müßte aber auch kommen, wenn das Fenster nicht den Focus hat.<br>

  • #2
    Hallo,

    versuche mal das Fenster "per Hand" zu erzeugen:

    var
    Form : TForm;

    begin
    Form := TForm.Create(nil);
    Form.Show();
    end;

    Wenn Dir das dann auch noch nicht reicht, kannst Du mit dem FormStyle nicht mehr arbeiten, sondern musst auf die WindowsAPI zurückgreifen:

    procedure StayOnTop (const Wnd : HWND; const bOnTop : boolean);
    begin
    if (bOnTop) then
    SetWindowPos (Wnd, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE or SWP_NOSIZE)
    else
    SetWindowPos (Wnd, HWND_NOTOPMOST, 0,0,0,0,SWP_NOMOVE or SWP_NOSIZE)
    end;

    PS: Sei mit dem Umschalten des FormStyles zur Laufzeit vorsichtig, den dadurch wird offensichtlich das gesamte Fenster neu erzeugt und es kann sein, dass Dir dann einiges "um die Ohren fliegt".

    Gruß, Marti

    Comment

    Working...
    X