Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eine StringList mit Childs (https://www.delphipraxis.net/70645-eine-stringlist-mit-childs.html)

Brainstalker 2. Jun 2006 00:40


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

marabu 2. Jun 2006 06:54

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:
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;
Der Zugriff geschieht dann über einen zweistufigen Index:

Delphi-Quellcode:
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;
Grüße vom marabu


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