Eine Gegenfrage...warum willst du die Liste außerhalb der Componente erzeugen, wenn sie eh nur von der Componente benutzt wird ?
Das mit dem direkten Zuweisen der Zeiger funktioniert deshalb nicht, weil es eben Objekt sind und die nicht nur Daten enthalten. Hinzu kommt, das deine Liste in der Komponente eine Property ist, d.h. da spielt dann noch das Streaming-System für
VCL-Komponenten mit rein (wichtig um das z.B. in
DFM-Dateien zu speichern) sowie die
RTTI.
Ich gehe mal davon aus das du später diese Liste im Objektinspektor editieren willst, dir aber ggf. mehrfach laden bei mehreren XEdit's sparen möchtest. Dann hier mal ein Beispiel wie es funktioniert:
Die Componente (also..der entscheidende Teil davon):
Delphi-Quellcode:
TXEdit = class(TEdit)
PRIVATE
fsearchlist:TStrings;
PUBLIC
Constructor Create(AOwner:TComponent);
Destructor Destroy;Override;
PUBLISHED
property Searchlist : TStrings read fsearchlist write fsearchlist;
END;
IMPLEMENTATION
Constructor TXEdit.Create(AOwner:Tcomponent);
begin
inherited create(AOwner);
fsearchlist := TStringlist.create;
end;
Destructor TXEdit.Destroy;
begin
fsearchlist.free;
inherited;
end;
Get und Set-Methoden sind nicht unbedingt notwendig, das die Liste beim erzeugen der Komponente gleich mit erzeugt wird und beim zerstören der Komponente freigegeben wird. Das ist wichtig, damit die Liste später auch in der
DFM-Datei landet.
Nun zum Programm, das gerne eine Liste an mehrere XEdits verteilen will:
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender:TObject);
var
iList : TStrings;
begin
iList := TStringlist.create;
iList.loadfromfile('C:\Searchlist.txt');
XEdit1.Searchlist.assign(iList);
XEdit2.Searchlist.assign(iList);
XEdit3.Searchlist.assign(ilist);
ilist.free;
end;
Feddich..alle 3 Edits enthalten nun ein kopie der daten aus ilist.
Hoffe das hilft.