Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Änderung der Eigenschaft "Visible" hat keine A

  Alt 24. Aug 2004, 18:13
Zitat von Whissi:
Zitat:
dadurch das danach noch anweisungen kommen wird noch kein repaint ausgelöst.
Könntest du das ausführen? Denn eigentlich geht er doch Schritt für Schritt alles ab und nicht erst alles durch...

BTW: "Application.ProcessMessages;" hat geholfen...
Das Problem ist ja gerade, dass alles Schritt für Schritt durchgegangen wird . Ein Setzen von Visible:=false ist ja zunächst mal nur eine Änderung einer Variablen. Damit aber eine sichtbare Veränderung eintritt muss zusätzlich noch neugezeichnet werden, und das muss explizit veranlasst werden, da die Zuweisung an die Visible-Eigenschaft dies nicht für dich mit erledigt.
Für gewöhnlich wird ein Control immer neugezeichnet, wenn es selbst, oder eines der Unter-Controls geändert wird - aber das passiert per Message an das entsprechende Control. So lange wie in deinem Programm aber noch etwas passiert, werden keine weiteren Messages verarbeitet, und kommen in eine Warteschlange. Der Aufruf von Application.ProcessMessages veranlasst dein Programm die anstehende Warteschlange abzuarbeiten, und dann erst weiterzumachen.
In diesem Fall werden allerdings alle anstehenden Messages versorgt, also auch Mausclicks, Tastatureingaben etc.pp. Wenn du nur neuzeichnen willst, dann ist (auch schneller) TControl.Repaint bzw. .Refresh dein Kandidat. Dabei wird explizit ein erneutes Zeichnen veranlasst, ohne dass sich um die Message-Queue gekümmert wird.

gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat