![]() |
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:
..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.
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; Wäre für Tips sehr dankbar! :thumb: lg, Thorsten |
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 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz