![]() |
Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Hier ein Beispiel das ich in einem Unterverzeichnis fand. Das hat irgendwer geschrieben und anscheinend habe ich es mal genutzt. Es geht um das Zeichnen in ListView Zellen. Jetzt habe ich es wiedergefunden und verstehe zwei Zeilen nicht. Zuerst der Code
Delphi-Quellcode:
Den Sinn verstehe ich nicht bei:
procedure TForm1.ListView1AdvancedCustomDrawSubItem(
Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean); var R: TRect; begin if Stage = cdPrePaint then case SubItem of 1: begin DefaultDraw:= false; CommCtrl.ListView_GetSubItemRect(Sender.Handle, Item.Index, SubItem, LVIR_BOUNDS, @R); Sender.Canvas.Brush.Color := clRed; Sender.Canvas.Rectangle(r.Left + 20 + Item.Index* 10, r.Top + 2, r.Right, r.Bottom - 2); end; 2..10: begin Sender.Canvas.Brush.Color:= Sender.Canvas.Brush.Color + 1; Sender.Canvas.Brush.Color:= Sender.Canvas.Brush.Color - 1; end; end; end;
Delphi-Quellcode:
Ich weiß was es bewirkt. Ohne die Zeilen wird der Canvas, also Font und Farben für die nachfolgenden SubItems verändert. Mit den Zeilen bleiben die Einstellungen bestehen.
Sender.Canvas.Brush.Color:= Sender.Canvas.Brush.Color + 1;
Sender.Canvas.Brush.Color:= Sender.Canvas.Brush.Color - 1; Was bewirken also diese Zeilen nun intern? |
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Das kann ich mir nur so erklären, dass aus irgendwelchen Gründen der Setter von TBrush.Color durchlaufen werden soll.
|
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Da hoffen wir mal nicht, dass dann irgendwann eine Optimierung im Compiler kommt, welche die beiden Zeilen dann wegoptimiert ;)
|
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Vielleicht wusste da jemand nicht, wie man ein Repaint auslöst?
Oftmals werden Zuweisungen ignoriert, wenn der Wert gleich ist. [edit] siehe DeddyH Und der Code ändert den Farbwert mal ganz kurz, ein winziges bissl. |
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Das ist dann Pech. Ich habe vor einiger Zeit einen Source von mir aus 1999 gefunden, da hatte ich auch so eine bekloppte Zeile drin, weil ich mir damals nicht anders zu helfen wusste.
|
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Ach was, das schafft der nie. Er optimiert ja nichtmal ein
Delphi-Quellcode:
weg. :stupid:
if i = 0 then ;
|
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Aber vielleicht der next-next gen
|
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Ist das nicht der Gedankengesteuerte, der das macht, was man wirklich will und nicht was man sich denkt wie es gemacht werden soll?
|
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Nein der, der genau das macht, wass er nicht soll :stupid:
|
AW: Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?
Bei der Menge an Code, die hinter TBrush.SetColor() hängt, kann man nichts wegoptimieren. Zumindest nicht allein auf Basis der o.g. zwei Zeilen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz