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:
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;
Den Sinn verstehe ich nicht bei:
Delphi-Quellcode:
Sender.Canvas.Brush.Color:= Sender.Canvas.Brush.Color + 1;
Sender.Canvas.Brush.Color:= Sender.Canvas.Brush.Color - 1;
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.
Was bewirken also diese Zeilen nun intern?