Komponete TStrings als property
-
Hallo,
ich würde gerne in einer Komponente TStrings als property verwenden
(so wie bei TMemo).Wie geht das? Ich habe folgendes versucht:
class PACKAGE TPanelBtn : public TPanel { private: TStringList *MemoLines; // ... public: // ... __property TStringList *Lines = {read=MemoLines, write=MemoLines}; } __fastcall TPanelBtn::TPanelBtn(TComponent* Owner) : TPanel(Owner) { MemoLines = new TStringList(); // ... }klappt leider nicht, Borland beendet sich dabei mit einem "Abstakten Fehler".
Was ich machen will:
ein Panel auf dem sich ein Memo befindet, die Zeilen dieses Memos sollen
nach aussen zur Bearbeitung weitergegeben werden.
-
Weil du die selbe Methode zum lesen und schreiben benutzt.
Das müssen 2 verschiedene Sein.
Read liefert die entsprechende TSrings zurück und darf keine Parameter haben und write nimmt eben diese an, darf dabei auch NUR diesen Parameter haben.
Bsppublic: inline void SetID (int tmp) { m_rID=tmp; }; inline int GetID (void) const { return m_rID; } ; __property int ID = {write=SetID,read=GetID};zumindest so ungefähr

-
eh edit:
du hast read= und write= auf die Member Variable gesetzt. es müssen die Methoden zum schreiben und lesen angegeben werden.
-
die funktion zum lesen des property kann durchaus das objekt zurueckliefern...
private: TStringList *FItems; protected: void __fastcall SetItems(TStringList *Value); __published: __property TStringList *Items = { read = FItems, write = SetItems };in der cpp
//--------------------------------------------------------------------------- // Set-Funktion für FItems //--------------------------------------------------------------------------- void __fastcall NameDeinerKomponente::SetItems(TStringList *Value) { Items->Assign(Value); }
-
Das zum lesen wusste ich noch nicht.
Gut zu wissen
-
wobei ich auf die gewonnenen erkenntnisse über Assign() von hier aufmerksam machen will
mfg
BigNeal
-
BigNeal schrieb:
wobei ich auf die gewonnenen erkenntnisse über Assign() von hier aufmerksam machen will
mfg
BigNeal*grins* stimmt
