okay, damit jeder der im Forum stöbert auf die bzw. meine Lösung kommt, um ihm/ihr damit zu helfen:
Man muss die Form kurz ausschalten (form1.visible:=false) und kurz danach wieder einschalten.
Geht prima, wenn man das aber auf nen Knopf legt, also die beiden Befehle direkt hintereinander gibts ein Problem
EInfache Lösung: Zeitliche Versetzung. Ein Timer wird dann Gleich von Knopf aufgerufen, der nach der eingestellen zeitlichen Verzögerung das ganze also wieder anzeigt (und sich danach selber wieder abschaltet!)
Der Timer sollte einen Wert haben, dass jeder PC eine CHance hat die Form auszuschalten und neu zu zeichnen.
(ich erinner mich an meinen 386, wo ne stinknormale Form unter 95 bis zu 5 Sekunden braucht *g*)
Das ganze also wie folgt:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.FormCreate(Sender: TObject); begin Form1.Brush.Style:=bsClear; Form1.BorderStyle:=bsNone;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject); begin
form1.Visible:=false; timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject); begin
form1.Visible:=true; timer1.Enabled:=false; end; |
Ach so, am besten ersetzt ihr den Knopf durch den Trigger der aufgerufen wird, wenn die Anwendung neu gezeichnet (onPaint macht sich schlecht muss ich gerade feststellen *g* )bzw. aktiviert wird.
Wenn die ANwendung kurz nicht mehr die Hauptanwendung war (anderes Programm / irgendein Ordner) und danach wieder aufgerufen wird. Dann sieht es meist so verzogen aus.
Für alle kommenden Delphi-Generationen
Greeny