Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi FMX tListview - TextButton für einige Listitems ausblenden (https://www.delphipraxis.net/208127-fmx-tlistview-textbutton-fuer-einige-listitems-ausblenden.html)

michaelg 15. Jun 2021 11:04

FMX tListview - TextButton für einige Listitems ausblenden
 
Moin,

ich habe ein FMX-tListview und möchte zehn Listitems dort anzeigen. Unter bestimmten Umständen soll in einem Eintrag ein Textbutton zu sehen sein. Die Appearance ist bewusst "ImageListItemBottomDetailRightButton" gewählt, also keine Dynamic oder Custom.

Ich hoffte mit dieser Funktion den Button pro ListviewItem einstellen zu können, funzt aber nicht. Hat jemand einen Tipp ohne Dynamic zu arbeiten?

Diese Zeile hat keine Auswirkung result.Objects.TextButton.Visible:=aButtonText<>'' ;.


Code:
  function AddItem(aText:String;aDetail:String;aImageIndex:Integer=-1;aButtonText:String='';aKontext:String='';aKontextWert:String=''):tListviewItem;
    begin
      result:=lv.Items.Add;
      result.text:=aText;
      result.Detail:=aDetail;
      result.imageIndex:=aImageIndex;

      result.Objects.TextButton.Visible:=aButtonText<>'';
      result.ButtonText:=aButtonText;

      result.Data['Kontext']:=aKontext;
      result.Data['KontextWert']:=aKontextWert;
    end;
Diese Zeile hat keine Auswirkung result.Objects.TextButton.Visible:=aButtonText<>'' ;.

michaelg 15. Jun 2021 11:34

AW: FMX tListview - TextButton für einige Listitems ausblenden
 
Ich glaube, ich hab schon eine Lösung gefunden mit dem Event UpdateObjects.

Code:
procedure TForm1.lvUpdateObjects(const Sender: TObject;
  const AItem: TListViewItem);
begin
  if aItem.Objects.TextButton=nil then exit;
 
  aItem.Objects.TextButton.Visible:=aItem.ButtonText<>'';
end;
Allerdings wundert es mich, dass man das Textbutton-Object auf NIL prüfen muss. Sonst bekommt man eine saubere Zugriffsverletzung.

Aber so funktioniert es, und die Buttons sind nur dort, wo ich auch welche sehen möchte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 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