Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Parent Problem bei eigener Komponente (https://www.delphipraxis.net/184236-parent-problem-bei-eigener-komponente.html)

Stegi 11. Mär 2015 13:37

Parent Problem bei eigener Komponente
 
Hallo,

ich habe ein Problem und konnte im www bislang noch keine Lösung finden. Vielleicht fehlen mir auch nur die passenden Suchbegriffe. Vieleicht finde ich hier eine Lösung für mein Problem.

Ich habe mir eine Eigenen Komponente erzeugt. Um das Beispiel verständlich zu halten basiert meine Komponente auf ein TPanel.

Code:
  TMeineKompo = class(TPanel)
  public
    Pan1: TPanel;
    Pan2: TPanel;
    constructor Create(aOwner: TComponent); override;
  end;
Ich registriere die Kompononete entsprechend und kann diese dann auch aus meiner Toolpalete in meinem Dialog ziehen.
Jetzt möchte ich zur Designzeit in dem Dialog weitere Komponenten (z.B. Panel) in das Panel (Pan2) meiner Komponente platzieren. Ich kann zwar ein Panel unter der Komponente hängen, jedoch ist der Parent nicht mein gewünschtes Panel Pan2 sonder die Komponente selbst.

Wie bekomme ich das hin, dass ich weitere Komponenten zur Designzeit in delphi in das Panel Pan2 meiner Komponente packen kann?

Ich hoffe ich konnte mein Problem einigermaßen nachvollziehend erklären. ;-)

Viele Grüße
Stegi

Daniel 11. Mär 2015 13:42

AW: Parent Problem bei eigener Komponente
 
Moin und willkommen in der Delphi-PRAXiS. :-)

Nach Deiner Beschreibung fehlt Dir ein Wert im Set "ControlStyle". Dort kannst - musst - Du definieren, dass Du gern als Basis für andere Controls dienen möchtest:
http://docwiki.embarcadero.com/Libra...l.ControlStyle

In etwa wie folgt:

Delphi-Quellcode:
constructor TMeineKompo.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csAcceptsControls];
//...
end;

Der schöne Günther 11. Mär 2015 18:11

AW: Parent Problem bei eigener Komponente
 
Ohne es ausprobiert zu haben- Müsste er das nicht durch das Erben von
Delphi-Quellcode:
TPanel
bereits erledigt haben? Sein Problem ist ja nicht dass man auf dem Designer keine Controls hineinwerfen könne, sondern dass die hineingesteckten nicht direkt im
Delphi-Quellcode:
TPanel
-Nachfahren, sondern in einem da drin bereits enthaltenen Container landen sollen.

Spontan hätte ich gesagt, dazu müsste man einfach nur das von
Delphi-Quellcode:
TWinControl
geerbte
Delphi-Quellcode:
procedure InsertControl(AControl: TControl);
überschreiben. Aber das ist nicht virtuell.

Und somit hätte ich spontan auch keine Idee.

himitsu 11. Mär 2015 20:48

AW: Parent Problem bei eigener Komponente
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1293069)
Aber das ist nicht virtuell.

Im Notfall kann man die Insert-Notification behandeln und die bereits hinzugefügte Komponente in das andere Panel verschieben (Parent ändern)

Aber ob der FormDesigner dann noch anbietet diese Komponenten zu bearbeiten, weiß ich auch nicht.

Chris211183 12. Mär 2015 07:54

AW: Parent Problem bei eigener Komponente
 
im Constructor

Delphi-Quellcode:
Pan1 := TMein(bla).Create(Self);
Pan1.Parent := Self;
.
.
.
würde das mit den Panels über nen Setter machen

FPan1 usw

DeddyH 12. Mär 2015 08:04

AW: Parent Problem bei eigener Komponente
 
Es geht um die Designzeit, da bringt es ja nichts, im Konstruktor den Parent setzen zu wollen.

Sir Rufo 12. Mär 2015 08:07

AW: Parent Problem bei eigener Komponente
 
Zitat:

Zitat von DeddyH (Beitrag 1293106)
Es geht um die Designzeit, da bringt es ja nichts, im Konstruktor den Parent setzen zu wollen.

Wieso nicht? Der Konstruktor einer Komponente wird auch zur Designzeit aufgerufen ;)

DeddyH 12. Mär 2015 08:21

AW: Parent Problem bei eigener Komponente
 
Ja nee is klar.

Chris211183 12. Mär 2015 08:33

AW: Parent Problem bei eigener Komponente
 
Zitat:

Zitat von Sir Rufo (Beitrag 1293107)
Zitat:

Zitat von DeddyH (Beitrag 1293106)
Es geht um die Designzeit, da bringt es ja nichts, im Konstruktor den Parent setzen zu wollen.

Wieso nicht? Der Konstruktor einer Komponente wird auch zur Designzeit aufgerufen ;)

Denke ich auch...

Sir Rufo 12. Mär 2015 08:41

AW: Parent Problem bei eigener Komponente
 
Zitat:

Zitat von DeddyH (Beitrag 1293110)
Ja nee is klar.

Dann erkläre mir doch bitte einmal, was auf dieser Seite (
Delphi-Quellcode:
TComponentState
)
die Werte für
Delphi-Quellcode:
csDesigning
und
Delphi-Quellcode:
csDesignInstance
bedeuten.

Wenn also eine Komponente zur Designzeit niemals auch nur irgendwas da zum Leben erweckt, wozu sind denn diese komischen Dingsbums-Dinger da?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz