Delphi-PRAXiS

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/)
-   -   Delphi Wie erkennt Delphi, ob ein Control Child Controls beinhalten darf? (https://www.delphipraxis.net/177933-wie-erkennt-delphi-ob-ein-control-child-controls-beinhalten-darf.html)

Zacherl 6. Dez 2013 14:07

Wie erkennt Delphi, ob ein Control Child Controls beinhalten darf?
 
Hallo zusammen,

ich frage mich grade, wie Delphi im Formulardesigner erkennt, ob ein Control Child Controls beinhalten darf. Beispielsweise wird der Parent von einem Butten, den ich auf einen anderen Button platziere, auf das Formular festgelegt. Der Parent von einem Button, den ich auf ein Panel platziere, wird allerdings auf das Panel gesetzt.

Gut soweit ich gesehen habe, gibt es eine Eigenschaft ControlStyle, welche das Attribut csAcceptsControls beinhalten kann.

Wenn ich jetzt aber einen Schritt weitergehe und mir beispielsweise die TPageControl Componente anschaue, komme ich zu dem Ergebnis, dass diese im Forumlardesigner keine Child Controls zulässt (da csAcceptsControls nicht gesetzt wird). Erzeuge ich per Rechtsklick -> Neue Registerseite ein Register, kann ich hierrauf natürlich ganz normal Komponenten platzieren. Das Interessante ist aber, dass die Registerseite selbst von TWinControl abgeleitet ist.

Findet da irgendwo eine selektive Abfrage statt, oder wird die Komponente nur deshalb akzeptiert, weil sie mehr oder weniger indirekt (durch den Befehl im Kontextmenü) erzeugt wird?

Viele Grüße
Zacherl

jbg 6. Dez 2013 14:45

AW: Wie erkennt Delphi, ob ein Control Child Controls beinhalten darf?
 
Zitat:

Zitat von Zacherl (Beitrag 1238795)
oder wird die Komponente nur deshalb akzeptiert, weil sie mehr oder weniger indirekt (durch den Befehl im Kontextmenü) erzeugt wird?

Ein fehlendes csAcceptControls bedeutet nur, dass der Formular-Designer es dir nicht erlaubt eine Komponente drauf zu lege. Für Programmcode bzw. Designtime-Code besteht diese Beschränkung nicht.

Mit anderen Worten:
csAcceptControls wird nur bei "Benutzer möchte über IOTAFormDesigner.CreateComponent eine Komponente auf ein Control legen" ausgewertet. Bei einem "MyChild.Parent := ContainerControl" findet keine Prüfung auf csAcceptControls statt.

Zacherl 6. Dez 2013 14:59

AW: Wie erkennt Delphi, ob ein Control Child Controls beinhalten darf?
 
Vielen Dank für deine Antwort :) Das erklärt einiges!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 Uhr.

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