![]() |
Eine StringList mit Childs
Hallöchen!
In einem Quick'n'Dirty Projekt von mir habe ich ein TListView benutzt um Daten anzuzeigen und zu bearbeiten. Ich weiß das es nicht sehr performant ist, aber es war eben nur für mich mal eben schnell geschrieben. Jetzt stellt sich mir die Frage ob es auch eine art StringList gibt die ähnlich funktioniert. Im Moment habe ich in einer anderen Anwendung in einer StringList Einträge die so aussehen: bla;blabla;blabl;bla. Wenn ich nun die Einträge bearbeiten oder auslesen will mach ich dies mit der Funktion Explode hier aus der Code-Library. Will ich jetzt einen Teil des Strings bearbeiten, muss ich den ganzen String durchs Explode jagen den Teil verändern den ich haben will und wieder alles zusammenfügen. Das ist allerdings bei vielen Strings etwas aufwendig. Deshalb jetzt meine Frage gibt es etwas TStringList ähnliches was Childs unterstützt? Im moment sieht meine Liste so aus: bla;blabla;blabl;bla bla;blabla;blabl;bla bla;blabla;blabl;bla bla;blabla;blabl;bla bla;blabla;blabl;bla Möchte aber gerne das sie so aussieht: bla blabla blabl bla bla blabla blabl bla bla blabla blabl bla Ich möchte dann nämlich gerne einfach auf die Einträge zugreifen können: MeineListe.Items[i].Caption := '123'; var := MeineListe.Items[i].Subitem[i]; Naja sowas in der Art halt. Wenn es sowas nicht gibt wäre es nett wenn mir jemand Tipps geben könnte wie man es anders machen könnte. MfG Michael |
Re: Eine StringList mit Childs
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Michael,
eigentlich brauchst du eher eine StringList als Child und nicht eine StringList mit Children. Du kannst die StringList mit den Werten einer Zeile als Item einer ObjectList verwalten:
Delphi-Quellcode:
Der Zugriff geschieht dann über einen zweistufigen Index:
type
TRecordList = class(TObjectList) private function GetField(col, row: Integer): String; procedure SetField(col, row: Integer; value: String); public property Field[col, row: integer]: String read GetField write SetField; end;
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.CellEditExecute(Sender: TObject);
var s: String; begin with StringGrid do begin s := RecordList.Field[Col, Row]; if InputQuery('Edit Cell', Format('Col %d Row %d', [Col, Row]), s) then RecordList.Field[Col, Row] := s; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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 by Thomas Breitkreuz