Einzelnen Beitrag anzeigen

Robert Marquardt
(Gast)

n/a Beiträge
 
#15

Re: Abgel. graf. Komponente aktualisiert nicht

  Alt 17. Aug 2005, 09:44
Delphi-Quellcode:
procedure TCustomCard.setCardOpen(aCardOpen : Boolean);
Begin
  if aCardOpen <> fCardOpen Then
  Begin
    fCardOpen := aCardOpen;
    Invalidate;
  End;
End;
Man ruft nicht Paint sondern Invalidate.
Invalidate markiert das Fenster als zum Neumalen vorgesehen. Windows loest daher eine WM_PAINT Nachricht aus.
Das resultiert letztlich in einem Paint-Aufruf.
Der Vorteil ist, das Windows mehrere Invalidates zusammenfasst und nur ein WM_PAINT schickt. Das bringt Speed.
setCardOpen optimiert ja schon das nur bei der Aenderung der Property ueberhaupt ein Neumalen ausgeloest wird.
Bei komplizierteren Aenderungen, bei denen mehrere Properties sich gegenseitig aendern, resultiert das in nur einem Neuzeichnen der Komponente.
  Mit Zitat antworten Zitat