Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ListView - Text auslesen (https://www.delphipraxis.net/193957-listview-text-auslesen.html)

Gerri 28. Sep 2017 14:24

Delphi-Version: 10 Berlin

ListView - Text auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag zusammen,

Ich Kündige vorher an : ich bin ein absoluter Neuling was Delphi (RAD-Studio 10.1) angeht und habe auch schon die Suchfunktion benutzt-> leider bin ich nicht fündig geworden.

Es geht um folgendes:

Ich habe ein "ListView" Erstellt der mit Daten einer SQLite Datenbank bestückt wird.
Hierbei geht es um 3 "Spalten" pro "Item" [das habe ich einfach mit 3 Text Feldern innerhalb des Items realisiert]. -> siehe Screenshot1.

Frage : Nun muss ich aber an den Inhalt des 3ten Text Elements, der Aktuell ausgewählten Zeile rankommen und diesen abspeichern können - was brauche ich dafür?

Wenn ich irgendwelche Informationen Vergessen habe gebt mir einfach bescheid :)

Mein bisheriger (bester) Ansatz sah ca. so aus -> var := Listview1.Items[Listview1.Selected].Item[3].tostring


Ich danke euch jetzt schon einmal!

Grüße
Gerri

Glados 28. Sep 2017 14:27

AW: ListView - Text auslesen
 
Zitat:

Nun muss ich aber an den Inhalt des 3ten Text Elements, der Aktuell ausgewählten Zeile rankommen und diesen abspeichern können
Was genau meinst du mit Inhalt? Meinst du die/das Caption des Nodes?

Gerri 28. Sep 2017 14:33

AW: ListView - Text auslesen
 
Hi Glados,

Sorry wenn ich mich unklar ausgedrückt habe.

Würde das was ich brauche als den "wert" bezeichnen der dem Textfeld("Text3") hinterlegt ist.

Glados 28. Sep 2017 14:35

AW: ListView - Text auslesen
 
Du meinst aber nicht irgendwas innerhalb einer DB oder?

Wenn du die gelb markierten Dinger meinst, das nennt man Nodes oder Knoten.
Ich weiß jetzt nicht wie das Property bei der Komponente heißt. Aber "Text3" <= bei dem Ding spricht man in der Regel von Caption oder Text.

Ich habe das jetzt so verstanden, dass du den Text des Knotens haben willst?

Gerri 28. Sep 2017 14:37

AW: ListView - Text auslesen
 
Hört sich so an als würdest du das richtige verstanden haben.

Die DB hat damit nichts mehr zu tun, brauche dann von dem Node nur den Text.


Ich verbessere mich falls wir doch an einander vorbei reden :)


Gerri

Glados 28. Sep 2017 14:39

AW: ListView - Text auslesen
 
Guck dir das hier mal an >> http://www.delphipraxis.net/113201-l...-subitems.html

Eines verstehe ich nur nicht. Ich habe noch nie eine ListView mit Nodes gesehen?!
Sicher, dass deine Komponente einen TListView ist?

Bbommel 28. Sep 2017 14:43

AW: ListView - Text auslesen
 
Kann es sein, dass das ListView in Wahrheit ein TreeView ist? :-) :glaskugel:

Glados 28. Sep 2017 14:44

AW: ListView - Text auslesen
 
Wenn es um TreeViews jeglicher Art geht, dann ist der Profi hier im Forum Aviator. Sicherlich auch noch andere aber mir ist nur er bekannt.

Bbommel 28. Sep 2017 14:55

AW: ListView - Text auslesen
 
Wobei ich bei noch genauerem Hingucken glaube, dass das dort oben im Bild die "Struktur"-Anzeige aus der Delphi-IDE ist... :-)

Also vielleicht doch TListView. In dem Fall wäre "SubItems" das hoffentlich richtige Stichwort für den TE.

Jumpy 28. Sep 2017 14:57

AW: ListView - Text auslesen
 
Was man da sieht ist glaub ich nicht seine ListView oder eine TreeView sondern das Ding aus der IDE, weiß gerade nicht wie es heißt. Projekt-Explorer?
Davon ggf. nicht verwirren lasen.

Uwe Raabe 28. Sep 2017 15:03

AW: ListView - Text auslesen
 
Zitat:

Zitat von Glados (Beitrag 1382190)
Eines verstehe ich nur nicht. Ich habe noch nie eine ListView mit Nodes gesehen?!
Sicher, dass deine Komponente einen TListView ist?

Vermutlich die von FMX.

Gerri 28. Sep 2017 15:05

AW: ListView - Text auslesen
 
Hi Leute,

ist tatsächlich die Ansicht aus der IDE -> sollte aber ein listview sein !:)

Ich lese mich mal in das Subitem Thema ein und melde mich dann noch einmal :)


Gruß
Gerri

edit :jip ist von FMX @ Glados & Uwe

haentschman 28. Sep 2017 17:39

AW: ListView - Text auslesen
 
Hallöle...:P

Unabhängig von der verwendeten Komponente, ließt man die Werte nie aus dem visuellen Control sondern aus den Quelldataset. :thumb:

Glados 28. Sep 2017 18:21

AW: ListView - Text auslesen
 
Zitat:

Zitat von Gerri (Beitrag 1382185)
Ich Kündige vorher an : ich bin ein absoluter Neuling was Delphi (RAD-Studio 10.1) angeht und habe auch schon die Suchfunktion benutzt-> leider bin ich nicht fündig geworden.

Ich denke für einen Anfänger ist das Auslesen aus dem Control erst einmal alles was er braucht.

Gerri 28. Sep 2017 19:07

AW: ListView - Text auslesen
 
Guten Abend,

Vorab: ich komme erst morgen dazu mir das ganze nochmal anzuschauen.

Grundsätzlich sollte das auslesen aus dem Listview erst einmal reichen(ist ein Einarbeitungs Projekt).
Allerdings bin ich natürlich auch für "Best Practice" - Lösungen Offen.

Mein Problem Dabei ist das ich keine Ahnung habe wie ich von den Bereits eingetragenden Items (aus der DB) einen Rückschluss auf den PK des Datensatzes bekomme - wenn da jemand eine schöne Lösung kennt würde ich auch das in betracht ziehen :-D

Melde mich Morgen wieder, einen Schönen Abend euch !


P.S. Anfänger heißt bei mir 40 Stunden insgesamt damit auseinander gesetzt und davon 20 Stunden Dokumentation gelesen :lol:

Luckie 28. Sep 2017 19:21

AW: ListView - Text auslesen
 
Speichere die PK als Objekt in den Items der ersten Spalte.

Gerri 28. Sep 2017 19:35

AW: ListView - Text auslesen
 
Hi :)

Wäre über ein kleines Code Beispiel(oder kleine Anleitung für "Klick Klick hurra" Sehr Dankbar.

Mir fehlt Aktuell einfach der Durchlick, da die IDE durch das ganze "klick klick Hurra" einfach die sicht auf die
Dinge Extrem Trübt.

Luckie 28. Sep 2017 20:51

AW: ListView - Text auslesen
 
Zwar für eine Listbox, aber das Prinzip ist das gleiche.

http://michael-puff.de/Programmierun...ddObject.shtml

Aviator 29. Sep 2017 00:30

AW: ListView - Text auslesen
 
Zitat:

Zitat von Glados (Beitrag 1382192)
Wenn es um TreeViews jeglicher Art geht, dann ist der Profi hier im Forum Aviator. Sicherlich auch noch andere aber mir ist nur er bekannt.

Danke für das Lob. :thumb:

Allerdings beschränkt sich mein (doch ganz gutes) Wissen über TreeViews hauptsächlich auf den VirtualTreeView. Mit dem Standard TreeView arbeite ich eigentlich kaum bis gar nicht. Aber klar. Der normale TreeView arbeitet auch nur mit ParentNodes und ChildNodes. Als ebenso guten TreeView Kenner würde ich aber gerne noch jeanicke in den Raum werfen wenn wir schon dabei sind. :-D

Es wäre nur doch interessant zu wissen, ob es sich hier um ein TTreeView oder TListView handelt. Weil das sind zwei total unterschiedliche Komponenten. Es sei denn ich habe es überlesen.

haentschman 29. Sep 2017 07:41

AW: ListView - Text auslesen
 
Moin...:P
Zitat:

Ich denke für einen Anfänger ist das Auslesen aus dem Control erst einmal alles was er braucht.
Das denke ich nicht. Ich hätte manche Fehler damals nicht gemacht, wenn ich die DP schon gehabt hätte und mir jemand gezeigt hätte wie man es "richtig" (Da gibt es 1000 Varianten :P) macht. Klar muß man sich auf den Kenntnisstand einstellen, aber die visuellen Komponenten als Datenablage zu mißbrauchen rächt sich später. Was kostet es mehr es gleich richtig zu machen...8-) Erst recht als Einsteiger sollte man DRY und KISS schon gehört haben.

...zum Thema:
Beispiel mit Objekten:
Delphi-Quellcode:
// das Datenobjekt (ähnlich wie der Datensatz im Dataset)
  TCustomer = class
  strict private
    FName: string;
    FTown: string;
    FFirstName: string;
  public
    constructor Create;
    destructor Destroy; override;
    property Name: string read FName write FName;
    property FirstName: string read FFirstName write FFirstName;
    property Town: string read FTown write FTown;
  end;
...
// die Liste (ähnlich wie TDataSet)
  TCustomerList = TObjectList<TCustomer>; // generische Liste
...
//Implementierung
procedure TfoMain.ShowCustomerList(List: TCustomerList);
var
  Item: TListItem;
  Customer: TCustomer;
begin
  lvCustomers.Items.Clear;
  for Customer in List do
  begin
    Item:= lvCustomers.Items.Add;
    Item.Data:= Customer; // Das komplette Objekt (Pointer) hängt an dem Eintrag
    Item.SubItems.Add(Customer.Name);
    Item.SubItems.Add(Customer.FirstName);
    Item.SubItems.Add(Customer.Town);
    Item.ImageIndex:= 99; // der Index des Images aus der Imagelist der Listview
  end;
  lvCustomers.Items.Item[0].Selected := True; // ersten Eintrag markieren...oder so
end;
Werte auslesen:
Delphi-Quellcode:
var
  Customer: TCustomer;
  Town: string
...
Customer := TCustomer(lvCustomer.Data); // über die Zwischenvariable ist der Quelltext dann besser lesbar :-)
Town := Customer.Town; // nicht aus dem ListView lesen sondern aus der Liste über den Pointer (automatisch)
Beispiel mit Dataset:
Delphi-Quellcode:
// das TDataSet
* auf dem Datenmodul als Komponente  
...
//Implementierung
procedure TfoMain.ShowCustomerList(DataSet: TDataSet);
var
  I: Integer;
  Item: TListItem;
begin
  lvCustomers.Items.Clear;
  DataSet.First;
  while not DataSet.Eof do
  begin
    Item:= lvCustomers.Items.Add;
    Item.Data:= TObjekt(Dataset.FieldByName('ID').AsInteger); // Der PK (PrimaryKey) hängt an dem Eintrag
    Item.SubItems.Add(Dataset.FieldByName('NAME').AsString);
    Item.SubItems.Add(Dataset.FieldByName('FIRSTNAME').AsString);
    Item.SubItems.Add(Dataset.FieldByName('TOWN').AsString);
    Item.ImageIndex:= 99; // der Index des Images aus der Imagelist der Listview
    DataSet.Next;
  end;
  lvCustomers.Items.Item[0].Selected := True; // ersten Eintrag markieren...oder so
end;
Werte auslesen:
Delphi-Quellcode:
var
  Town: string
...
DataSet.Locate('ID', Integer(lvCustomer.Data),[]); // positionieren des DataSets auf den Datensatz mit dem richtigem PK
Town := DataSet.FieldByName('TOWN').AsSting; // nicht aus dem ListView lesen sondern aus dem DataSet

Towmuz 29. Sep 2017 10:46

AW: ListView - Text auslesen
 
Da es sich scheinbar um eine FMX Anwendung handelt und das Listview dort nicht gleich zu behandeln ist wie das in VCL, würde ich mal hier lesen und probieren http://www.delphipraxis.net/183937-t...ect-daten.html

Gerri 29. Sep 2017 11:17

AW: ListView - Text auslesen
 
Erstmal ein Großes Danke an alle Antwortenden ! :D

Ich werde jetzt versuchen das ganze zeug zu verstehen und umzusetzen und wenn probleme auftreten melde ich mich :)


Gruß
Gerri:-D

Gerri 29. Sep 2017 14:12

AW: ListView - Text auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nach langem hin und her eine kurze Zusammenfassung:

Ich habe mich nun über die "Objekt in Listview.Item" Idee informiert und bin zu dem entschluss gekommen das ich erst einmal nicht damit arbeiten möchte.[Würde nämlich heißen das ich alles bisher geschriebene umschreiben müsste - beim nächsten projekt wird das dann von vorne rein anders gehandhabt ]


Also zurück zu der Subitem-asulesen Idee:

Ich habe nun Versucht(wie hierbeschrieben http://www.delphipraxis.net/113201-l...-subitems.html) via

ListView1.Items[1].Subitem[3];


#1 Allerdings bekomme ich da nur die meldung das "items" kein Subitem enthält und kann mich somit nicht weiter durch die methoden hangeln um den entsprechenden string zu erhalten.


komme mir wenn ich danach google vor wie der ochse vorm Wald -> Es scheint für alle selbstverstädnlich zu sein -> für mich ist es allerdings ein misterium.


Und um die Frage ob es ein Listview ist oder nicht zu klären -> Ja es ist definitiv einer (Siehe Anhang)


Ich hoffe ihr könnt mir weiterhalfen

Gruß
Gerri

Aviator 29. Sep 2017 14:42

AW: ListView - Text auslesen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Gerri,

ich habe dir mal schnell ein kleines Beispiel zusammengeklickt mit dem du etwas rumspielen kannst. Vielleicht bringt es dich ja weiter.

Deine Zeile
Delphi-Quellcode:
ListView1.Items[1].Subitem[3];
sieht soweit OK aus. Allerdings heißt das nicht, dass du nicht evtl. vergessen hast, überhaupt (Sub)Items hinzuzufügen.



Kurze Erklärung zum Programm:

Beim Start der Anwendung wird im OnShow Event der Form der Header der TListView Komponente erzeugt. Danach werden ein paar Items hinzugefügt. Das ist ein Random Wert zwischen 1 und 100.

In der SpinEdit Komponente kannst du auswählen, welcher Text in dem Label unter dem ListView angezeigt werden soll.

Code:
0 = Text vom Hauptitem
1 = Text vom Subitem 1
2 = Text vom Subitem 2
3 = Text vom Subitem 3
Im Anhang ist ein kompiliertes Beispiel enthalten. Da du im Eröffnungspost angegeben hast, dass du Delphi Berlin verwendest, sollte es aber kein Problem für dich sein, die Anwendung erneut (mit Änderungen) zu kompilieren.


Anbei mal noch der SourceCode und ein Bild der Anwendung, damit andere da direkt Einblick haben ohne sich das ganze Projekt laden zu müssen.


Viel Spaß damit. Wenn du Fragen dazu hast ... :wink:

Delphi-Quellcode:
unit Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.Samples.Spin, System.UITypes;

type
  TfrmListViewSample = class(TForm)
    lv1: TListView;
    Label1: TLabel;
    btnGetItemText: TButton;
    seColumnSelector: TSpinEdit;
    lblItemCaption: TLabel;
    procedure FormShow(Sender: TObject);
    procedure btnGetItemTextClick(Sender: TObject);
  private
    procedure CreateHeader;
    procedure CreateItems;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frmListViewSample: TfrmListViewSample;

implementation

{$R *.dfm}

procedure TfrmListViewSample.FormShow(Sender: TObject);
begin
  CreateHeader;
  CreateItems;
end;

procedure TfrmListViewSample.btnGetItemTextClick(Sender: TObject);
begin
  if Assigned(lv1.Selected) then
  begin
    if (seColumnSelector.Value = 0) then
      lblItemCaption.Caption := lv1.Selected.Caption
    else
      lblItemCaption.Caption := lv1.Selected.SubItems[seColumnSelector.Value - 1];
  end
  else
  begin
    MessageDlg('Es wurde kein Item ausgewählt.', mtWarning, [mbOK], 0);
  end;
end;

procedure TfrmListViewSample.CreateHeader;
var
  i: Integer;
  Column: TListColumn;
begin
  for i := 0 to 3 do
  begin
    Column := lv1.Columns.Add;
    Column.Caption := Format('Column %d', [i]);
    Column.Width := 75;
  end;
end;

procedure TfrmListViewSample.CreateItems;
var
  Item: TListItem;
  i: Integer;
begin
  for i := 0 to Random(100) + 1 do // Damit wenigstens immer 1 Item hinzugefügt wird
  begin
    Item := lv1.Items.Add;
    Item.Caption := Format('Main Item %d', [i]);
    Item.SubItems.Add(Format('Subitem %d.1', [i]));
    Item.SubItems.Add(Format('Subitem %d.2', [i]));
    Item.SubItems.Add(Format('Subitem %d.3', [i]));
  end;
end;
end.

Gerri 2. Okt 2017 10:28

AW: ListView - Text auslesen
 
Hi Leute,

soo... habe nun ganz einfach mal versucht ein Item mit den
besagten Code dem ListView hinzuzufügen, bereits an der Stelle

1. wo ich ein Item erstellt habe

und

2. diesem item eine caption zuweisen möchste:


Code:
.
.
.
var
    Item: ListItem;
begin
                Item := ListView_DB.Items.Add;
                item.caption:= Format('Main Item &d' , [1]);
end
.
.
.

Doch bereits hier schreit die IDE das es für "Item" keine "Caption" gibt.
Habe ich vergessen etwas zu importieren oder was tue ich falsch Oo.

:oops:


Gruß
Gerri

Aviator 2. Okt 2017 10:33

AW: ListView - Text auslesen
 
Item muss als
Delphi-Quellcode:
TListItem
deklariert werden.

Das T beachten. Hast du dir mein Beispielprojekt angeschaut?

Gerri 2. Okt 2017 10:37

AW: ListView - Text auslesen
 
Zitat:

Zitat von Aviator (Beitrag 1382457)
Item muss als
Delphi-Quellcode:
TListItem
deklariert werden.

Das T beachten. Hast du dir mein Beispielprojekt angeschaut?


Ist es bei mir natürlich auch ein "TListItem" - trotzdem das selbe Problem :lol: - das ganze kommt aus deinem beispiel, ich probiere gerade ein wenig herum :)

Aviator 2. Okt 2017 10:41

AW: ListView - Text auslesen
 
Zitat:

Zitat von Gerri (Beitrag 1382458)
Zitat:

Zitat von Aviator (Beitrag 1382457)
Item muss als
Delphi-Quellcode:
TListItem
deklariert werden.

Das T beachten. Hast du dir mein Beispielprojekt angeschaut?


Ist es bei mir natürlich auch ein "TListItem" - trotzdem das selbe Problem :lol: - das ganze kommt aus deinem beispiel, ich probiere gerade ein wenig herum :)

Am besten postest du mal ein bisschen mehr vom SourceCode. Weil wenn es wirklich ein TListItem bei dir ist, dann sollte das eigentlich funktionieren. :roll:

Towmuz 2. Okt 2017 10:45

AW: ListView - Text auslesen
 
Wie oben schon erwähnt, aus deinem Anfangspost und dem darin beigefügten Screenshot ergibt sich, dass du eine Geräteübergreifende Anwendung (FMX) erstellt hast.
Das VCL Listview hat keine Header und Footer in der Standard Komponente.

Anbei das Itemhinzufügen in FMX

Delphi-Quellcode:
var
  item: TListViewItem;
begin
  item := ListView1.Items.Add;
  item.Text := 'asdasd';
end;
Kann natürlich auch sein, das ich irgendwas nicht mitbekommen habe, dann bitte ignorieren. :)

Aviator 2. Okt 2017 10:48

AW: ListView - Text auslesen
 
Zitat:

Zitat von Towmuz (Beitrag 1382460)
Wie oben schon erwähnt, aus deinem Anfangspost und dem darin beigefügten Screenshot ergibt sich, dass du eine Geräteübergreifende Anwendung (FMX) erstellt hast.
Das VCL Listview hat keine Header und Footer in der Standard Komponente.

Also in Post 12 hat er das ja versucht klar zu stellen. Das setzt natürlich voraus, dass er den Unterschied zwischen VCL und FMX kennt. :mrgreen:

Gerri 2. Okt 2017 10:54

AW: ListView - Text auslesen
 
Gerne Doch :

Also Ich arbeite mit einem TListView Namens "ListView_DB" für diesen gibt es im "Type" bereich die folgende Dekleration:


Code:
ListView_DB: TListView;
Dazu muss ich sagen das der Listview nicht per Hand erstellt wurde, sondern einfach per Drag and Drop reingezogen und einer "BindingList" und "Live-Bindings" mit der Datenbank verknüpft ist.


Danach folgt weiter unten die procedure die ein Button auslöst -> nur aktuell zum testen gedacht.

Code:
    procedure TForm_Main_Main.btn_del_from_DBClick(Sender: TObject);
    var
       i : Integer;
       Item: TListItem;
    begin

                showmessage(ListView_DB.Items.AppearanceItem[1].Text);
                Item := ListView_DB.Items.Add;
                item.caption := Format('Main Item &d' , [1]);

    end;

Das ist nun auch der Code der so 1 zu 1 im Quellcode seht :)



Wenn wir über den Punkt des erstellens der Subitems weg sind, würde ich diese gerne per live-binding einbinden -> nur als Leitfaden wo ich hin möchte.


Wenn irgend etwas relevantes fehlt bitte bescheid geben:shock:

Gerri 2. Okt 2017 10:57

AW: ListView - Text auslesen
 
Und nein ich kenne den unterschied nicht ! :D

Wie gesagt 40 Stunden -> mehr Erfahrung habe ich nicht.

Danke für eure Geduld :-P

Aviator 2. Okt 2017 11:05

AW: ListView - Text auslesen
 
Zitat:

Zitat von Gerri (Beitrag 1382465)
Und nein ich kenne den unterschied nicht ! :D

Wie gesagt 40 Stunden -> mehr Erfahrung habe ich nicht.

Danke für eure Geduld :-P

Schau mal in deiner Uses Liste ganz oben im SourceCode deines Hauptformulars. Stehen da Units wie
Delphi-Quellcode:
VCL.Forms, VCL.Controls
oder eher
Delphi-Quellcode:
FMX.Forms, FMX.Controls
. Wenn ersteres, dann sprechen wir von der gleichen Art von Projekt. Wenn letzteres, dann ist es FMX und ich bin raus. Auch mein Beispiel ist dann zum Großteil ungültig würde ich sagen. Lediglich die Art wie ich es gemacht habe kannst du dann übernehmen.

Das wäre mal ein Anhaltspunkt um das noch sicherzustellen.

Aviator 2. Okt 2017 11:07

AW: ListView - Text auslesen
 
Habe gerade nochmal drübergelesen. Dein SourceCode sagt es eigentlich schon. Habe es gerade ausprobiert. Du hast doch eine FMX Anwendung. Dann ist es klar, warum mein Beispiel nicht funktioniert. Da wäre jetzt höchstens noch die Frage, ob es unbedingt für den Anfang eine FMX Anwendung sein muss.

Gerri 2. Okt 2017 11:09

AW: ListView - Text auslesen
 
es ist FMX ... :(

Danke dir trotzdem ! - was ist im groben der unterschied zwischen den beiden ? :)

Gerri 2. Okt 2017 11:10

AW: ListView - Text auslesen
 
Naja - ich habe nun schon alles mit FMX gemacht und mir fehlen nur noch 2-3 Punkte dann bin ich durch.

Von daher dachte ich, ich bring das erstmal zuende bevor ich wieder alles über den haufen werfe :)

Aviator 2. Okt 2017 11:11

AW: ListView - Text auslesen
 
VCL = nur Windows
FMX = plattformübergreifend (also auch iOS und Android)

So ganz grob. :-D

Du kannst unter FMX auch schönere Animationen machen als unter VCL usw. Aber ich habe mich damit wie gesagt noch nicht beschäftigt. Daher kann ich an dieser Stelle auch nicht mehr weiterhelfen.

Gerri 2. Okt 2017 11:15

AW: ListView - Text auslesen
 
Multiplatform ist leider unumgänglich -> Deswegen habe ich erst mit Delphi angefangen.

Ich danke dir trotzdem für deine Zeit! :)


Damit wären wir wieder bei meinem alten Problem :

Wie füge ich einem FMX.TListView Subitem hinzu ?:-D


Gruß
Gerri

Towmuz 3. Okt 2017 11:55

AW: ListView - Text auslesen
 
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;

Gerri 4. Okt 2017 11:01

AW: ListView - Text auslesen
 
Hi Towmuz!

du bist mein Retter-> Genau das brauchte ich :thumb:

Es läuft so wie ich es wollte bzw erwartet habe :)


Danke an alle die mir versucht haben zu helfen und besonderen dank an Towmuz!


Thema kann geschlossen werden.


Viele Grüße
Gerri


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