Einzelnen Beitrag anzeigen

Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#1

TListView.Canvas.Brush.Color - Problem!

  Alt 26. Mai 2009, 11:41
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.
  Mit Zitat antworten Zitat