Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Neue Sichtbare Komponente schreiben


jjturbo - Fr 05.02.21 09:38
Titel: Neue Sichtbare Komponente schreiben
Moin Forum,

schreibe gerade eine neue Komponente unter Delphi 10.4(Tokyo).
Die Kompo wird angezeigt und funktioniert auch so wie gewünscht.
Jetzt hätte ich gerne im Objektinspektor einen Eintrag den man aufklappen kann um ein paar Optionen einzustellen.
Unter "Published" gibt es den entsprechenden Eintrag:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TMeineKompo = class(TShape)
.
.
.
  private
   fLED :TLED;
  published
    property LED          :TLED read fLED write LEDGeaendert;

Deklaration von TLED:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
type TLEDShape = (sArrowDown,sArrowLeft,sArrowRight,sArrowUp,sRectangle,sRound);


type
  TLED = Class(TObject)
    fColorOn  :TColor;
    fColorOff :TColor;
    fHeight   :Integer;
    fWidth    :Integer;
    fShape    :TLEDShape;
  published
    property ColorOn  :TColor read fColorOn write fColorOn;
    property ColorOff :TColor read fColorOff write fColorOff;
    property Height   :Integer read fHeight write fHeight;
    property width    :Integer read fWidth write fWidth;
    property Shape    :TLEDShape read fShape write fShape;
  public
    { Public-Deklarationen }
  end;


Im Constructor Create wird diese Option erzeugt:

Delphi-Quelltext
1:
  LED := TLED.Create;                    


Jetzt sehe ich diesen Eintrag "LED" im OJ, man sieht auch den Pfeil zum aufklappen, aber die darunter liegenden Einträge sieht man nicht. Was mache ich denn falsch?
Danke und Gruß, Oliver


Th69 - Fr 05.02.21 10:12

Hallo,

lies mal Creating Properties for Subcomponents [http://docwiki.embarcadero.com/RADStudio/Sydney/en/Creating_Properties_for_Subcomponents] - ich denke, deine Klasse LED muß mindestens von TComponent erben (beachte auch den Hinweis bzgl. Owner sowie den Streaming-Mechanismus).

PS: 10.4 wird Sydney genannt (10.2 war Tokyo).