Komponentenentwicklung - Eigenschaften löschen
-
Wer kann mir bei diesem Problem helfen:
TPanel gefällt mir eigentlich ganz gut.
Desswegen leite ich mir meine neue Komponente auch von TPanel ab.Dennoch würde ich gerne an den Eigenschaften rumspielen.
Wie man diese hinzufügt habe ich schon irgendwo gelesen, denke also, dass ich das hinbekomme.
Wonach ich aber bisher vergebens gesucht habe, ist eine Möglichkeit, vorhandene Eigenschaften zu löschen!
z.B.: Was mache ich um "Caption" wegzubekommen?
(... und damit meine ich nicht this->Caption = "";
)
-
Hallo
der beste Weg ist wohl, von TCustomPanel abzuleiten anstatt vopn TPanel.
Da ist keine Caption-Eigenschaft./Edit : bzw. Caption ist nicht verwendbar. Allerdings auch nicht BevelInner und BevelOuter.
bis bald
akari
-
insaint schrieb:
z.B.: Was mache ich um "Caption" wegzubekommen?
(... und damit meine ich nicht this->Caption = "";
)Wenn du es nur von außen nicht zugänglich machen willst, reicht AFAIK ein
private: __property Caption;in deiner abgeleiteten Klasse.
Moritz
-
Also ich habe
private: __property Caption;in die .h der neuen Klasse kopiert, aber im Objektinspektor finde ich noch "Caption".
Ich probiers mal mit TCustomPanel
thx

-
audacia schrieb:
insaint schrieb:
z.B.: Was mache ich um "Caption" wegzubekommen?
(... und damit meine ich nicht this->Caption = "";
)Wenn du es nur von außen nicht zugänglich machen willst, reicht AFAIK ein
private: __property Caption;in deiner abgeleiteten Klasse.
Moritz
????????????????????
Nicht, wenn von TPanel abgeleitet!
Was public ist kann nicht wieder versteckt werden!Besser, wie Akari sagt.
-
Allerdings vermisse ich bei TCustomPanel die Eigenschaft "Align".
Die jetzt selberschreiben wollte ich eigentlich nicht...
Was mach ich denn jetzt ?
?
-
in Public der abgeleiteten Klasse (von CustomPanel)
__property Align;
-
Super! Im Quellcode kann ich Align jetzt ansprechen!!! Dankeschön
!Jetzt müsste ich nur noch ne Möglichkeit finden,
wie ich die Eigenschaft auch im Objektinspektor anzeigen kann!
-
Hallo
du must den Eintrag
__property Align;in den Abschnitt __published:
schreiben.bis bald
akari
-
Danke für die schnelle Antwort

Klappt wunderbar!!!
-
Noch 'ne Frage:
Kann man das gleich auch mit Ereignissen machen ?
?
-
Hallo
klar geht das auch mit Events.
hier mal ein Beipiel für einfachen eigenen Event :typedef void __fastcall (__closure *TIntegerEvent)(System::TObject* Sender, int Value); // Definition eines Events zum Übergeben einer Zahl ... class TMyControl { ... private : TIntegerEvent iMyEvent; // interner Speicher auf zugewiesene Funktion ... __published : ... __property TIntegerEvent MyEvent = {read = iMyEvent, write = iMyEvent}; // Property für Event }; ... // Konstruktor von TMyControl TMyControl::TMyControl() : ... { ... iMyEvent = NULL; // Speicer initialisieren }jetzt hast du im OI deines Controls den neuen Event, dem du passende Funktionen zuweisen kannst.
bis bald
akari
-
Gut, so schreibe ich Ereignisse selber,
aber was ich meinte ist,
ob ich bestehende (z.B. OnClick-) Events einfach einbinden kann,
und wie dass geht?
-
Hallo
wo soll denn der Event herkommen?
Und wie genau willst du diesen in deinem Control nutzen?bis bald
akari
-
Naja,
sagenwir einfachmal ich möchte ein TMyCustomPanel,
dass eine OnClick-Event besitzt, dass das gleiche macht,
wie ein On-Click-Event bei einem TPanel:
Er reagiert halt aufs draufclicken!Später wären auch OnMouseMove, OnMouseDown etc interessant...
-
__property OnClick;tut es!
Schönen Dank auf jeden Fall! Mir fallen nachher bestimmt noch ein paar Fragen ein!

Ansonsten schönes WE