AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Allgemeine Frage zu Zuweisungen von Instanzen

Ein Thema von guidobrose · begonnen am 14. Jun 2007 · letzter Beitrag vom 15. Jun 2007
 
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Allgemeine Frage zu Zuweisungen von Instanzen

  Alt 14. Jun 2007, 14:13
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.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 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