Thema: Delphi ListView - Text auslesen

Einzelnen Beitrag anzeigen

Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#39

AW: ListView - Text auslesen

  Alt 3. Okt 2017, 12:55
Fals du noch nicht weitergekommen bist. Subitems gibt es in der FMX ListView nicht,
jedenfalls nicht in der selben Begrifflichkeit wie in VCL. Ist ein bischen aufwendiger das Ganze, aber dafür individualisierbarer.

Ich hoffe ich gebe das richtig wieder, aber in FMX gibt es nicht nur DAS Item in einer Listview,
sondern ein Hauptobjekt das als Container dient aber selbst keine Daten zur Anzeige bereithält und
beliebig viele andere Objekte mit den einzelnen Bedürfnissen (Buttons, Text, Bilder usw.).

Laut deinem Screenshot hast du das ja schon mit Text1, Text2, Text3 als DynamicAppearance unter ItemAppearance eingestellt,
sonst würde es da ja glaub ich nicht so drin stehen (können).

Ansonsten hier nochmal vom Schöpfer: DynamicAppearance.

Anbei das einfachste Hinzufügen und Auslesen der Items. Gibt bestimmt noch unzählige andere Wege damit zu arbeiten.

Hinzufügen:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
  item: TListViewItem;
  textItem: TListItemText;
begin
  item := ListView1.Items.Add;
  textItem := item.Objects.FindObjectT<TListItemText>('Text1');
  textItem.Text := 'Item 1 Hallo 1';

  textItem := item.Objects.FindObjectT<TListItemText>('Text2');
  textItem.Text := 'Item 1 Hallo 2';

  textItem := item.Objects.FindObjectT<TListItemText>('Text3');
  textItem.Text := 'Item 1 Hallo 3';

  item := ListView1.Items.Add;
  textItem := item.Objects.FindObjectT<TListItemText>('Text1');
  textItem.Text := 'Item 2 Hallo 1';

  textItem := item.Objects.FindObjectT<TListItemText>('Text2');
  textItem.Text := 'Item 2 Hallo 2';

  textItem := item.Objects.FindObjectT<TListItemText>('Text3');
  textItem.Text := 'Item 2 Hallo 3';
end;
2x Auslesen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to ListView1.Items.Count - 1 do
  begin
    ShowMessage(ListView1.Items[i].Objects.FindObjectT<TListItemText>('Text3').Text);
  end;
end;
Delphi-Quellcode:
procedure TForm1.ListView1ItemClick(const Sender: TObject;
  const AItem: TListViewItem);
begin
  ShowMessage(AItem.Objects.FindObjectT<TListItemText>('Text3').Text);
end;
Thomas
  Mit Zitat antworten Zitat