Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Form mit BorderStyle bsNone; Animation beim minimieren
worm - Do 08.08.02 23:03
Titel: Form mit BorderStyle bsNone; Animation beim minimieren
Hallo!
Ich habe eine Form mit BorderStyle bsNone. Auf der Form befindet sich ein Button, um das Programm zu minimieren. Der Code:
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!
Christian S. - 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!
worm - 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?
worm - 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:
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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!