Autor Beitrag
worm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 135


D6 Prof
BeitragVerfasst: Do 08.08.02 23:03 
Hallo!

Ich habe eine Form mit BorderStyle bsNone. Auf der Form befindet sich ein Button, um das Programm zu minimieren. Der Code:
ausblenden Quelltext
1:
2:
  Form1.WindowState := wsMinimized; //für die Animation
  Application.Minimize; //für's minimieren

Wenn ich jetzt in der Taskbar auf das Programm klicke, sollte es mit Animation wieder restored werden. Wo muss ich dafür welchen Code einfügen? Habe schon verschiedenes probiert, es aber nicht hinbekommen. :cry:
Im Moment sieht man das Fenster einfach überhaupt nicht, wenn man in der Taskbar draufklickt (weil WindowState noch auf wsMinimized gesetzt ist). Setzt man den WindowState nicht auf wsMinimized, klappt das minimieren und restoren zwar, aber eben ohne Animation.

Danke schonmal für eure Hilfe!

_________________
In the beginning, the universe was created. This has made a lot of people very angry, and is generally considered to have been a bad move.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 08.08.02 23:27 
Hi!

Bei Delphi 6 gibt es in der Kategorie "Additional" eine Komponente "ApplicationEvents". Dort kannst du beim OnRestore-Ereignis Form1.Windowsate wieder zurücksetzen.

Wenn es diese Kompo bei Dir nicht gibt, musst Du (z.B. beim Formcreate) die Ereignisbehandlung Application.OnRestore auf eine von Dir geschriebene Prozedur setzen. Wichtig: die Funktion muss (glaube ich) zur Form gehörig definiert werden und muss wie folgt aussehen:

TForm1.wiederherstellen(Sender : TObject);

Natürlich darfst Du alles bis auf Sender umbenennen, wie es in dein Projekt passt.

MfG,
Peter

P.S.: Die Antwort ist doch sowieso 42!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
worm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 135


D6 Prof
BeitragVerfasst: Fr 09.08.02 00:06 
Titel: schon probiert, aber komischer Fehler
Hi!

Erstmal danke für die schnelle Antwort.
Also genau das hatte ich schon probiert. Habe es jetzt mal in ein neues Programm mit nur diesem Button drin eingebaut und da funktioniert es einwandfrei.
Aber in meinem Projekt wird nach jedem restoren die Form doppelt so breit! Deshalb hab ich erstmal im Forum nachgefragt, ob's 'ne andre Möglichkeit gibt. Ich werde nochmal alles durchsuchen nach irgendeinem logischen Fehler, der mir noch nicht aufgefallen ist. Zumindest weiß ich ja jetzt, dass ich auf dem richtigen Weg war.

Cya, Worm

PS: aber wie lautet bloß die Frage?

_________________
In the beginning, the universe was created. This has made a lot of people very angry, and is generally considered to have been a bad move.
worm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 135


D6 Prof
BeitragVerfasst: Fr 09.08.02 00:22 
Titel: Fehler gefunden und gefixed
Fehler gefunden. :D
Dass sich die Formularbreite änderte, lag daran, dass bei der Form AutoSize auf True gesetzt ist und sich auf der Form ein Label mit Align = alTop befindet. Warum genau das zu dem Fehler führt, weiß ich nicht, aber um das zu umgehen, ändere ich AutoSize immer vor'm Minimieren und nach'm Restoren:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Code des Minimieren-Buttons
  Form1.AutoSize := False;
  Form1.WindowState := wsMinimized;
  Application.Minimize;
end;

procedure TForm1.AppRestore(Sender: TObject);
begin
  //Prozedur für's Restoren
  //Die Prozedur muss im public-Teil von Form1
  //deklariert werden
  Form1.WindowState := wsNormal;
  Form1.AutoSize := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //der Vollständigkeit halber:
  //So weist man die Prozedur dem Ereignis der Application zu
  Application.OnRestore := AppRestore;
end;


Cya, Worm

_________________
In the beginning, the universe was created. This has made a lot of people very angry, and is generally considered to have been a bad move.