Hallo zusammen,
ich versuche in die erste Spalte einer ListView einen Kreis mit folgendem Code zu zeichnen:
Delphi-Quellcode:
procedure TfrmGraphics.lvMeasurementsAdvancedCustomDraw(
Sender: TCustomListView; const ARect: TRect; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
var rect: TRect;
i, j: integer;
begin
if Stage=cdPostPaint then
begin
for i:=0 to lvMeasurements.Items.Count-1 do //lvMeasurements ist das ListView
begin
for j:=0 to high(arr) do //arr ist ein Array von Objekten eigener Klassen
begin
if arr[j].Name=lvMeasurements.Items.Item[i].SubItems.Strings[0]
then
begin
case arr[j].MType of
abc:
begin
lvMeasurements.Canvas.Pen.Color:=clgreen;
lvMeasurements.Canvas.Brush.Color:=clgreen;
end;
efg:
begin
lvMeasurements.Canvas.Pen.Color:=clred;
lvMeasurements.Canvas.Brush.Color:=clred;
end;
hij:
begin
lvMeasurements.Canvas.Pen.Color:=clblack;
lvMeasurements.Canvas.Brush.Color:=clblack;
end;
end;
lvMeasurements.Canvas.Brush.Style:=bssolid;
lvMeasurements.Canvas.Pen.Style:=pssolid;
rect:=lvMeasurements.Items.Item[i].DisplayRect(drBounds);
lvMeasurements.Canvas.Ellipse(rect.Left+18, rect.Top, rect.Left+32, rect.Top+14);
end;
end;
end;
end;
end;
Das Problem, das ich nun habe, ist, dass die Ellipsen zwar gezeichnet werden, jedoch die Brush.Color immer vom ersten Element stammt. Komischerweise. Denn wenn ich durchgehen mit dem Debugger, zeigt er mir den gleichen Farbwert an, wie für die Pen.Color, die komischerweise korrekt ist.
Habt ihr 'ne Idee, woran's hapert?
Beste Grüße,
Sven M.