Einzelnen Beitrag anzeigen

little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#1

Eigene Komponente mit TStrings als Eigenschaft

  Alt 23. Sep 2008, 12:29
Hallo,

jetzt muss ich doch nochmal hier um Rat fragen. Ich habe eine eigene Komponente erstellt und installiert. Wenn ich die Komponente in eine Form einbinde, sehe ich im Entwurfsmodus alle published propertys der Komponente und kann sie bearbeiten. Jetzt hat eine dieser Propertys (name: Tabellen) den Typ TStrings. Im Designer sieht man dann, wie man es kennt, die 3 Punkte (...), auf die man dann klickt und dann kommt so ein Editor.

Das mit dem Editor klappt nicht; Fehlermeldung: nil kann nicht zu TRichEditStrings zugewiesen werden.
Mir ist schon klar warum das nicht geht. Die interne Speichervariable dieser Property ist nunmal nil. Im Konstruktor dieser Komponente wird ja auch gleich ein TStrings-Objekt erzeugt und mit eben jener internen Speichervariable referenziert.

Wie aber kann ich dafür sorgen dass ich schon zur Entwurfszeit mit obigem Editor arbeiten kann? Mit ListBoxes o.ä. haben sie es schließlich auch hingekriegt.

Folgende relevante Quellcodeteile:

Delphi-Quellcode:
 TFeldSperrManager = class(TComponent)

  private
        Ftabellen: TStrings;
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
        procedure setTabellen(myTabellen: TStrings);
  public
    { Public-Deklarationen }
        constructor Create(AOwner: TComponent); override;
  published
    { Published-Deklarationen }
        property Tabellen: TStrings read FTabellen write setTabellen;
  end;

//...

constructor TFeldSperrManager.Create(AOwner: TComponent);
begin
        inherited;
        FTabellen:= TStrings.Create;
end;

//...
procedure TFeldSperrManager.setTabellen(myTabellen: TStrings);
begin
        FTabellen.Assign(myTabellen);
        // hab ich mal aus TCustomListBox abgeguckt. Leider ohne Erfolg.
        // Vorher habe ich gänzlich auf Getter/Setter verzichtet (sondern direkt FTabellen angegeben). Auch ohne Erfolg.
end;

//...
Bin gespannt...

ps. Suchfunktion habe ich genutzt, die hiesige Suchfunktion ist jedoch etwas für fortgeschrittene. Daher: Wenn mir jemand einen Tipp geben kann mit welchen Suchbegriffen ich hier was gefunden hätte, bin ich gerne bereit daraus zu lernen.
manchmal machts mich mürbe
  Mit Zitat antworten Zitat