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