Die Frage hört sich etwas simpel an. Ich möchte herausfinden, ob mein Programm minimiert ist. Wenn es das beim Beenden ist, möchte ich das in einer INI speichern und beim nächsten Mal minimiert starten. Bei folgendem Code wird nie angezeigt, wenn ich auf die "Minimieren"-Schaltfläche in der Titelleiste klicke:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
State: String;
begin
case Form1.WindowState of
wsMinimized: State := '*** minimized ***';
wsNormal: State := 'normal';
wsMaximized: State := 'maximized';
else
State := '*** dunno ***';
end;
if IsIconic(Form1.Handle) then
State := State + ', *** is iconic ***'
else
State := State + ', not iconic';
if IsZoomed(Form1.Handle) then
State := State + ', is zoomed'
else
State := State + ', not zoomed';
ListBox1.Items.Add(State);
ListBox1.ItemIndex := ListBox1.Items.Count - 1;
end;
Ein maximierter Zustand wird angezeigt. Den minimierten Zustand bekomme ich erst, wenn ich einen Button mit der folgenden Funktion versehe:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
WindowState := wsMinimized;
end;
Dann allerdings ist das Fenster nicht in der Taskleiste, sondern auf Titelleisten-Größe geschrumpft über der Taskleiste.
Muss ich jetzt auf die Messages, die den Zustand des Fensters verändern reagieren und eine eigene Variable dafür verwenden?