nachdem ich viel gegrübelt und programmiert, gefragt und, etc. habe habe ich nun folgende Zutaten gefunden um eigene Komponenten mit enthaltenen SubKomponenten erstellen zu können.
1.)
Also eure SubKomponente bindet ihr folgendermaßen in eure Komponente ein:
in private
Code: Alles auswählen
FButton:TBoundButton;
und in published
Code: Alles auswählen
property Button:TBoundButton read FButton;
Dann könnte ihr die Komponente während der designzeit anklicken und sehr auch innerhalb eurer Komponente im OI ein Feld für eure Subkomponente und könnt sie auch da bearbeiten.
2.)
Ihr müsst im Create eurer SubKomponenten
Code: Alles auswählen
SetSubComponent(True);
hinzugügen, damit in der Designzeit eure Einstellungen die ihr (oder ein Nutzer eurer Komponente) macht überhaupt gespeichert werden.
3.)
Dann wäre das auch schon fast alles.
Wenn ihr allerdings wollt, dass egal wo ihr in eurer Komponente hinklickt (als auch vielleicht auf eine SubKompo), eure Hauptkomponente ausgewählt wird.
das ist sinnvoll wenn innerhalb euerer Kompo mehrere SubKompos den gesamten Platz einnemehn und ihr sonst eure HauptKompo nicht mehr auswählen könntet.
Das ist anscheinend auch sehr einfach:
Einfach ins create folgendes hinzufügen:
Code: Alles auswählen
ControlStyle := ControlStyle + [csNoFocus, csNoDesignSelectable];
Und schon klappt.
Ich werde entsprechend meine eigene Komponenten auch derhingehend verbessern, denn ich habe das obrige erst eben rausgefunden.
Gruß Alexander
PS: Gefunden habe ich die meisten Sachen indem ich mir andere Komponenten von Lazarus angeschaut habe. In Punkt 3 war es z.B. TUpDown