Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#1

Was bewirkt dieser Code in der Prozedur ListViewAdvancedCustomDrawSubItem?

  Alt 14. Apr 2015, 14:48
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?
  Mit Zitat antworten Zitat