Einzelnen Beitrag anzeigen

Alfonso3

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

Labels einer ListView zuordnen - aber wie?

  Alt 24. Jul 2008, 10:10
Hallo,

ich habe die Anforderung in einer ListView für jede Zeile in einer Spalte zwei Farben anzeigen zu müssen. Es ist kein Problem jedem Item ein Label via TListView.Data zuzuordnen, doch wie funktioniert das bei zwei oder mehr Elementen.

Hier sieht mein Code für das Anzeigen eines Labels in einer Spalte für jedes Item in einer ListView aus:

Delphi-Quellcode:
procedure TfmLohnartB.lvDataAdvancedCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  Stage: TCustomDrawStage; var DefaultDraw: Boolean);
const
  pbColumnIndex = 1;
  pbMax = 100;
var
  pb : TLabel;
  pbRect : TRect;
  la : TLohnart;
  i: Integer;
  b : integer;
begin
  inherited;
  if (sender.Column[SubItem].Caption = 'Plan') then begin
    la := TLohnart(lvData.mkScroll.records[Item.Index]);
    pb := TLabel(Item.Data);
    if not Assigned(pb) then begin
      pb := TLabel.Create(self);
      pb.Parent := Sender;
      Item.Data := pb;
    end;
    {
    if Assigned(Item.Data) then begin
      pb := TLabel(Item.Data);
      pb.visible := false;
    end; }

    //pb := TLabel.Create(self);
    pb.Transparent := false;
    pb.Color := TColor(la.PlanFarbe);
    //Item.Data := pb;//
    pbRect := Item.DisplayRect(drBounds);
    pbRect.Left := pbRect.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) + 15;

    pbRect.Right := pbRect.Left + ListView_GetColumnWidth(lvData.Handle, 7)-30;
    pbRect.Top := pbRect.Top + 1;
    pbRect.Bottom := pbRect.Bottom - 2;
    pb.BoundsRect := pbRect;
 // pb.Free;
  end;
..funktioniert soweit wunderbar, doch ich habe das Problem, dass ich kein zweites Label dem ListItem zuordnen kann?!?! und so nicht weiß, wie ich das zweite Label anzeigen soll.

Wäre für Tips sehr dankbar!

lg, Thorsten
  Mit Zitat antworten Zitat