Einzelnen Beitrag anzeigen

Alfonso3

Registriert seit: 14. Jul 2008
26 Beiträge
 
#1

Bestimmte Spalten in ListView bemalen

  Alt 14. Jul 2008, 17:12
Hallo!

bin zwar erst neu registriert, lese aber schon länger hilfreiche Themen in eurem Forum mit.

Nun zu meinem Problem:

Ich möchte in einer Listview eine gewisse Spalte abhängig vom Wert färben.

Ich habe zware eine Lösung, nur finde ich diese nicht zufriedenstellend, anbei der Code:

Delphi-Quellcode:
procedure TfmLohnartB.lvDataAdvancedCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var
 posPlan : TPoint;
 indItem : integer;
 subIt : TStrings;
 oldColor : TColor;
 r : TRect;
begin
  inherited;
  if (sender.Column[SubItem].Caption = 'Plan') then begin

    //DefaultDraw := False;
    r := Item.DisplayRect(drBounds);
    r.Left := r.Left + ListView_GetColumnWidth(lvData.Handle, 0) +
              ListView_GetColumnWidth(lvData.Handle, 1) +
              ListView_GetColumnWidth(lvData.Handle, 2) +
              ListView_GetColumnWidth(lvData.Handle, 3) +
              ListView_GetColumnWidth(lvData.Handle, 4) +
              ListView_GetColumnWidth(lvData.Handle, 5) +
              ListView_GetColumnWidth(lvData.Handle, 6);

    r.Right := r.Left + ListView_GetColumnWidth(lvData.Handle, 7);
    try
      oldColor := Sender.Canvas.Brush.Color;
      Sender.Canvas.Brush.Color := clRed;


      Sender.Canvas.Rectangle(r);
    finally
      Sender.Canvas.Brush.Color := oldColor;
    end;
  end;
geht das nicht irgendwie eleganter...so möchte ich es eigentlich nicht lassen, da es leicht flimmert usw..!

lg,
thorsten
  Mit Zitat antworten Zitat