![]() |
TListViewItem und TObject Daten
Hello!
Ich möchte meine Anwendung erweitern und benötige hierzu statt eines einfachen Integer Typs ein TObject hinter einem TListViewItem. Bisher habe ich folgendes gemacht:
Code:
Jetzt möchte ich statt Integer ein TObject verweden:
// Zuweisen
ai := ListView1.Items.Add; ai.Data['idata'] := 5; // 5 = Typ Integer // Auslesen ai := ListView1.Selected; i := ai.Data['idata'].AsInteger; // Ergebnis = 5
Code:
Irgendeine Idee?
// Definition
type Tooo = class(Tobject) i: Integer; end; var o: Tooo; // Zuweisen o := Tooo.Create; o.i := 5; ai := ListView1.Items.Add; ai.Data['odata'] := o; // o = Typ Tooo // Auslesen ai := ListView1.Selected; if ai.Data['odata'].IsObject then // -> True begin o := Tooo(ai.Data['odata'].AsObject); // Ergebnis = nil !!! end; |
AW: TListViewItem und TObject Daten
Zum Beispiel so. Und Freigeben nicht vergessen.
Delphi-Quellcode:
type
TData = class A, B: string; end; procedure TSomeForm.Button1Click(Sender: TObject); var Item: TListItem; Data : TData; begin Item := ListView1.Items.Add; Data := TData.Create; Data.A := 'A'; Data.B := 'B'; Item.Data := Data; end; procedure TSomeForm.Button2Click(Sender: TObject); var Data : TData; begin Data := TData(ListView1.Items[0].Data); ShowMessage(Data.A); ShowMessage(Data.B); end; procedure TSomeForm.FormDestroy(Sender: TObject); var Data : TData; begin while ListView1.Items.Count > 0 do begin Data := TData(ListView1.Items[0].Data); Data.Free; ListView1.Items.Delete(0); end; end; |
AW: TListViewItem und TObject Daten
Hallo!
Laut Delphi Wiki ist Data ein Array ->
Delphi-Quellcode:
(Delphi XE7 - FMX.ListView.TListViewItem.Data)
property Data[const AIndex: string]: TValue read GetData write SetData;
Also eine Zuordnung mit nur ListViewItem.Data := funktioniert nicht. |
AW: TListViewItem und TObject Daten
Du hättest aber kenntlich machen können, dass es um FireMonkey geht ;)
|
AW: TListViewItem und TObject Daten
Hallo,
hab jetzt kein XE7 am Start. Bei der (direkten) Zuweisung von Objekten ignoriert XE4 scheinbar alles was nicht nach Bitmap "riecht". Was die 7er Version macht kann ich nicht sagen. So könnte es vielleicht klappen:
Delphi-Quellcode:
Speicher freigeben nicht vergessen.
// Definition
type Tooo = class(Tobject) i: Integer; end; var o : Tooo; i : TListViewItem; c : TClass; // Zuweisen o := Tooo.Create; o.i := 5; i := ListView1.Items.Add; i.Data['odata'] := TClass (o); // Auslesen i := ListView1.Selected; c := i.Data['odata'].AsClass; if Assigned (c) and (TObject (c).ClassName = 'Tooo') then ShowMessage (IntToStr (Tooo(c).i)) Gruß |
AW: TListViewItem und TObject Daten
Ja, das mit den Objekten ist etwas blöd. Casten nach NativeInt geht aber.
|
AW: TListViewItem und TObject Daten - Gelöst!
@Volker Z: VIELEN DANK!!! - funktioniert ohne Probleme! :)
@Bjoerk: Danke für die Meldung - FMX ist aber anders.. ;-) @Detlef: Wusste nicht, das es da Unterschiede gibt - verwende die Komponente zum ersten Mal @Daniel: Ja, hatte bis dato noch keine Probleme Objekte "direkt" zuzuordnen (z.B. TListbox) Vielen Danke euch Allen, Werner |
AW: TListViewItem und TObject Daten
Leider noch ein Problem.
FMX Windows funktioniert mit der Lösung - jedoch nicht mit iOS. :( Also nochmal von vorne... Ich schaue mal ob das ein bekannter Bug ist oder einfach nur nicht "unterstützt" wird... Grüße, Werner |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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