Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Labels einer ListView zuordnen - aber wie? (https://www.delphipraxis.net/117759-labels-einer-listview-zuordnen-aber-wie.html)

Alfonso3 24. Jul 2008 10:10


Labels einer ListView zuordnen - aber wie?
 
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! :thumb:

lg, Thorsten

extrem 25. Jul 2008 08:10

Re: Labels einer ListView zuordnen - aber wie?
 
Hi,

warum benutzt du überhaupt ein TLabel, könntest du den Text nicht zeichnen?

Ansonsten kannst du auch ein Objekt oder Record Item.Data zuweisen.
Delphi-Quellcode:
type
  TMyObject = class
    pb1, pb2 : TLabel;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz