![]() |
Fenster im Vordergrund halten
Hallo,
Ich habe mir einen Einstellungsdialog gebastellt, wo der Benutzer unteranderem die Funktion wählen kann, dass das Programm immer im Vordergrund ist. Ich speicher die Einstellung in einer INI-Datei.
Delphi-Quellcode:
Das funktioniert auch perfekt. Jetzt möchte ich aber auch, dass das Programm nach einem erneuten starten direkt wieder im Vordergrund ist. Also habe ich im OnCreate von Form1 geschrieben:
//Procedure in Form1
procedure TForm1.Vordergrund(s: string); begin if s='up' then SetWindowPos(Self.Handle ,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); if s='down' then SetWindowPos(Self.Handle ,HWND_NOTOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); end; //Procedure in Form2 if checkbox3.Checked=true then begin ini02.WriteString('einstellungen','imvor','true'); //einstellung speichen Form1.Vordergrund('up'); //einstellungs sezten end else begin ini02.WriteString('einstellungen','imvor','false'); //einstellung speichen Form1.Vordergrund('down'); //einstellung setzten end;
Delphi-Quellcode:
Aber beim starten ist Form1 nicht im Vordergrund. Wo ist denn da mein Denkfehler?
if ini01.ReadString('einstellungen','imvor','false')='true' then
Form1.Vordergrund('up'); |
Re: Fenster im Vordergrund halten
1. Wieso benutzt Du nicht ReadBool/WriteBool, anstatt mit Strings herumzuhantieren?
2. Du schreibst in ini02 und liest aus ini01. Stimmt das so? |
Re: Fenster im Vordergrund halten
zu1) mhh weiß auch nicht, dass hab ich mir mal so angewöhnt.... geht doch auch, oder nicht?
zu2) ja das stimmt so, jedes form hat seine eigene INI-Variable |
Re: Fenster im Vordergrund halten
Ich würde es noch einfacher machen:
Delphi-Quellcode:
Aufruf mit:
procedure TForm1.Vordergrund(WindowPos: Integer);
begin SetWindowPos(Self.Handle, WindowPos, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); end;
Delphi-Quellcode:
Und dann entsprechend mit Read- / WriteInteger lesen bzw. schreiben.
Vordegrund(HWND_TOPMOST);
|
Re: Fenster im Vordergrund halten
Zeig mal die komplette Create-Methode von Form1. Außerdem finde ich den String-Parameter etwas verfehlt ;)
|
Re: Fenster im Vordergrund halten
Ok, dann baue ich das nochmal ein bisschen um :-)
Um die Fensterposition dann wieder normal zu machen, müsste ich doch dann schreiben:
Delphi-Quellcode:
Oder?
Vordergrund(HWND_NOTOPMOST);
|
Re: Fenster im Vordergrund halten
Jupp, aber sowas könntest du dir durch Ausprobieren auch selbst beantworten. ;)
|
Re: Fenster im Vordergrund halten
ahhhh, ich hab den fehler gefunden. Ich wollte die Form im OnCreate in den Vordergrund setzten, aber das geht natürlich nicht, denn die Form ist doch an dem Punkt noch gar nicht aufgebaut.
Naja danke für eure Hilfe, jetzt ist meine Procedure immerhin schön suber programmiert ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 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-2025 by Thomas Breitkreuz