![]() |
(Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Moin.
Wie kann ich erreichen, das eine (dynamisch erzeugte) Form immer im Vordergrund dargestellt wird? Mit diesem Code wird die Form nicht mehr im Vordergrund dargestellt wenn ich den Fokus auf einen andere Applikation setze:
Delphi-Quellcode:
Wer weiß Rat?FPasswordForm := TPasswordForm.Create(self); FPasswordForm.FormStyle := fsStayOnTop; ret := FPasswordForm.ShowModal; Vielen Dank |
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Hi,
hier ein bisschen Code um diese StayOnTop-Feature ein und auszuschalten.
Delphi-Quellcode:
procedure TForm_Main.spbStayOnTopClick(Sender: TObject);
begin if spbStayOnTop.Down then begin SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); end else begin SetWindowPos(Handle, HWND_NOTOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); end; end; |
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Oder etwas kürzer:
Delphi-Quellcode:
procedure TForm_Main.spbStayOnTopClick(Sender: TObject);
const IsDown: array[Boolean] of Cardinal = (HWND_NOTOPMOST, HWND_TOPMOST); begin SetWindowPos(Handle, IsDown[spbStayOnTop.Down], Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); end; |
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Das funktioniert leider nicht :(
So hab ich es versucht:
Delphi-Quellcode:
Was (interessanterweise) teilweise funktioniert, ist der code den ich unter #1 gepostet habe und wenn ich in der Form folgendes mache:
FPasswordForm := TPasswordForm.Create(self);
SetWindowPos(FPasswordForm.Handle,HWND_TOPMOST,Left, Top, Width, Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); ret := FPasswordForm.ShowModal;
Delphi-Quellcode:
Wenn ich allerdings folgendes hinzufüge bzw. den Fokus zu Laufzeit mit der Maus auf das Edit setzte, bleibt das Fenster nicht mehr im Vordergrund :shock:
procedure TPasswordForm.FormActivate(Sender: TObject);
begin Position := poScreenCenter; end;
Delphi-Quellcode:
procedure TPasswordForm.FormShow(Sender: TObject);
begin EditPassword.SetFocus; end; |
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Pack doch mal den SetWindowPos-Aufruf mit ins FormActive des Passwortforms, das sollte helfen.
|
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Zitat:
|
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Hilft leider auch nicht.
Habe das in FormShow, FormActivate und FormCreate versucht. |
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Zitat:
|
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
Komisch, ich habe das eben ausprobiert, bei mir geht das :gruebel:
[edit] @GPRSNerd: Solange SWP_NOMOVE und SWP_NOSIZE gesetzt sind, ist es vollkommen wurscht, wie die Koordinaten belegt sind, da sie schlicht ignoriert werden. [/edit] |
AW: (Dynamisch erzeugte) Form immer im Vordergrund dargestellen
@DeddyH: Ich werde mal ein Minimal Beispiel machen und das posten. Wird aber wahrscheinlich erst morgen früh was werden :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz