![]() |
Tlistview.Data verwenden
Hallo!
Ich finde einfach nichts brauchbares im Internet und in den Foren zu dem Thema, deswegem frage ich einfach mal hier nach. Habe das alte Problem dank euch ebenfalls lösen können, nachdem ich ein wenig nochmal alles überflogen habe und ein paar Tutorials und Bücher mir angeguckt habe. Zu dem Problem :
Delphi-Quellcode:
Es wird zur Laufzeit von jedem Listitem ein Objekt angelegt, das den Benutzernamen, Benutzernummer, usw. enthält.for i := 0 to FBenutzerliste_Laden.Count-1 do // Für die Benutzerlisteneinträge begin Trenner := pos(',',FBenutzerliste_Laden.Strings[i]); // Trennzeichen ermitteln zwischne Benutzername und Benutzernummer FBenutzerliste_Eintrag := Benutzerlistview.Items.Add; // Eintrag für den Listview erzeugen FBenutzerliste_Eintrag.Caption := copy(FBenutzerliste_Laden.Strings[i],1,Trenner-1); // Weist dem Eintrag den Benutzernamen zu Self := Self.Create; // Neues Klassenobjekt erstellen FBenutzername := copy(FBenutzerliste_Laden.Strings[i],1,Trenner-1); // Benutzernamen in die Variable kopieren FBenutzerNummer := StrToInt(copy(FBenutzerliste_Laden.Strings[i],Trenner+1,4)); // UIN kopieren FBenutzerFenster_Offen := 0; // Benutzerfenster ist am Anfang stets geschlossen FBenutzerInfoFenster_Offen := 0; // Benutzerinfofenster ebenfalls Benutzerlistview.Items.Item[i].Data := Self; // Den Datenzeiger setzen end; Dies funktioniert alles soweit. Nur beim abspeichern bräuchte ich ein wenig Hilfe.
Delphi-Quellcode:
Ich will die Einträge in eine Stringliste schreiben und diese dann via Stream senden.
for i := 0 to Benutzerlistview.Items.Count -1 do // Benutzerliste hinzufügen
begin Benutzerlistview.Items.Item.Data; // Wie verwende ich die Data Eigenschaft end; Stream senden ist kein Problem , aber wie komme ich über Data an die Klassenfelder ran??? Hoffe mir kann jemand bei dem Problem helfen. Danke im voraus Matthias |
Re: Tlistview.Data verwenden
Eintragen:
Delphi-Quellcode:
Auslesen
var
UserData: TUserData; begin UserData := TUserData.Create; UserData.Name := 'irgendwas' {...} with ListView.Items.Add(nil, '') do begin Text := 'hallo'; Data := Pointer(UserData); end; end;
Delphi-Quellcode:
Florian
begin
with TUserData(ListView.Items[0].Data) do begin ShowMessage(Name); end; end; |
Re: Tlistview.Data verwenden
Da du weißt welcher Typ sich hinter Data verbirgt musst du einfach nur casten. Ein Cast kann wie folgt aussehen
Delphi-Quellcode:
der eigentliche Cast ist dabei
TDeineKlasse(ZumBeispielDeinData).MethodenVariablenEtcVonTDeineKlasse
Delphi-Quellcode:
es geht also auch so:
TDeineKlasse(ZumBeispielDeinData);
Delphi-Quellcode:
var UserData: TUserData;
begin UserData := TUserData(Benutzerlistview.Items.Item[x].Data); //Do anything with UserData |
Re: Tlistview.Data verwenden
Vielen Dank für die schnelle und kompetente Hilfe. Funktioniert wunderbar.
Gruß Preddy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 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