AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Verknüpfung zu einer StringList in meiner Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Verknüpfung zu einer StringList in meiner Komponente

Ein Thema von F.W. · begonnen am 24. Jul 2004 · letzter Beitrag vom 25. Jul 2004
Antwort Antwort
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

Verknüpfung zu einer StringList in meiner Komponente

  Alt 24. Jul 2004, 20:45
Ich möchte in meine Komponente (Diagramm) eine Verknüpfung zu einer StringList einbauen. in die StringList kommen die Werte, die das Diagramm darstellen soll.
Bis jetzt hab ich eine StringList in der Komponente, aber nicht als Property, da man erst zur Laufzeit Werte eingeben können muss. Sie ist im Bereich Public deklariert. Das funktioniert aber nicht ganz und jetzt möchte ich, dass die StringList von außen kmmt, d.h. die Komponente bekommt nurnoch gesagt, aus welcher StringList sie sich die Werte zum neuzeichnen holen muss.

Aber wie teil ich der Komponente mit, dass sie nur quasi einen Pointer, !aber! vom Typ TStringList oder TStrings (<- Wo ist da der Unterschied?) bereitstellen muss??

Danke schonmal!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Verknüpfung zu einer StringList in meiner Komponente

  Alt 24. Jul 2004, 20:52
Zitat von F.W.:
Sie ist im Bereich Public deklariert. Das funktioniert aber nicht ganz ...
Was funktioniert denn da nicht?
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    FStringList: TStringlist;
    procedure SetStringList(const Value: TStringlist);
    { Private declarations }
  public
    { Public declarations }
    property StringList : TStringlist read FStringList write SetStringList;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }


{ TForm1 }

procedure TForm1.SetStringList(const Value: TStringlist);
begin
  FStringList.assign (Value) ;
end;
Vielleicht hast du statt assign zu nutzen, einfach nur FStringList := Value ; in der SetStringList Methode stehen. Das Problem hatt ich dann auch schon

Gruß,
Tom
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Verknüpfung zu einer StringList in meiner Komponente

  Alt 24. Jul 2004, 20:58
Delphi-Quellcode:
  //am bsp eines Tobjects, bei compos etc. mußt du den constructor noch mit override überschreiben
  Ttest = class(TObject)
  private
    Fstringlist: Tstrings;
    procedure Setstringlist(const Value: Tstrings);

  protected

  public
    property stringlist:Tstrings read Fstringlist write Setstringlist;
    constructor Create;
    destructor Destroy; override;
  published

  end;
...

constructor Ttest.Create;
begin
  inherited;
  Fstringlist:=TStringList.Create;
end;

destructor Ttest.Destroy;
begin
  Fstringlist.free;
  inherited;
end;

procedure Ttest.Setstringlist(const Value: Tstrings);
begin
  //hier darf nicht fstringlist=Value stehen, da du dann nur den Zeiger umbiegst
  Fstringlist.Assign(Value);
  Mach_was_weil_neue_stringlist;
end;
ok, ein wenig zu langsam. In dem Code von Jelly fehlt aber das erzeugen und freigeben der der Stringlist . außerdem sollte die Stringlist-property vom Typ Tstrings sein, da du sonst keine Stringlisten aus einer Listbox oder einem Memo direkt zuweisen kannst. (inkompatible Typen tstrings und tstringlist)

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Verknüpfung zu einer StringList in meiner Komponente

  Alt 24. Jul 2004, 21:04
Zitat von Keldorn:
ok, ein wenig zu langsam. In dem Code von Jelly fehlt aber das erzeugen und freigeben der der Stringlist
Das stimmt allerdings...

@Keldorn: Zu dem anderem mit TStrings und TStringList... Also ich hab mal gelesen man sollte immer TStringList nehmen, und mit der Zuweisung aus einer Listbox o.ä hatte ich noch nie... Ausserdem finde ich deinen Code etwas irreführend an einer Stelle:

Im Public deklarierst du stringlist als TStrings:
property stringlist:Tstrings read Fstringlist write Setstringlist; Und im Constructor erzeugst du dann aber mit TStringList.
Fstringlist:=TStringList.Create; Das geht zwar, aber zur Laufzeit hast du dann natürlich TStringlist als Klasse.

Gruß,
Tom
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: Verknüpfung zu einer StringList in meiner Komponente

  Alt 24. Jul 2004, 21:15
Du hast doch eine Pro-Version, gugg dir mal die Sourcen zu memo/Listbox an. Die lines sind immer als Tstrings deklariert, aber eigentlich sind es TListboxstrings und Tmemostrings. Wenn du das nicht so machen würdest, würde listbox.lines:=memo1.lines nie funktionieren.

Tstrings ist auch nur eine klasse mit abstrakten Methoden, wenn du Strings:=Tstrings.create schreibst, wirst du öfters abstrakte Fehler erhalten, weil in tstrings noch nix da ist. in der Hilfe gibts auch extra kapitel zum Thema stringlisten verwenden, die gehen dort immer so vor Variable als Tstrings und erzeugen als Tstringlist.

mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#6

Re: Verknüpfung zu einer StringList in meiner Komponente

  Alt 24. Jul 2004, 21:51
Super!!! Jetzt geht's!!! Ich hab nicht Assign verwendet, sondern eben nur ":="

Danke! Geht jetzt!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Verknüpfung zu einer StringList in meiner Komponente

  Alt 25. Jul 2004, 00:14
@Keldorn,
was du sagst ist mir teils auch bekannt. Nur wenn du deine Klasse mit TStringList.create erzeugst, was machts für einen Sinn, sie weiter oben nur als TStrings zu deklarieren. Das leuchtet mir irgendwie nicht ein.

Gruß,
Tom
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: Verknüpfung zu einer StringList in meiner Komponente

  Alt 25. Jul 2004, 20:40
@Jelly, weil du dann immer alle von Tstrings abgeleitete Objekte übergeben kannst. Weiß nicht wie ich das erklären soll, Tstrings ist halt "universeller", würdest du schon eine "spezialisierte" Tstringlist nehmen, könntest du immer nur Tstringslists oder von Tstringlist abgeleitete Objekte nehmen, das würde dich ungemein einschränken.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Verknüpfung zu einer StringList in meiner Komponente

  Alt 25. Jul 2004, 20:47
Ah ja, jetzt geht bei mir ein Licht auf ... Saß die ganze Zeit auf dem Schlauch

Nutze Selbiges selbst oft bei Veerbung. Warum ich das jetzt in diesem Beispiel nicht geblickt hab, keine Ahnung

Gruß,
Tom
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:41 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