Testen, ob sich in der aufrufenden Klasse eine Instanz von TMainMenu befindet
-
Hallo,
ich möchte in einer Komponente im Konstruktor festellen, ob sich in der Klasse wo das Object der Komponenete instanziert wurde ein TMainMenu Object befindet.
Kann man das feststellen?
-
Hallo
wenn die instanzierende Instanz ein Pointer per Konstruktor (i.a. TObject *Owner) auf sich an das instanzierte Control weitergibt, kann das Untercontrol durch casten auf ein TComponent dann die Eigenschaft ComponentCount/Component bzw. die Methode FindComponent() benutzen, um das MainMenu zu finden.
Der beste Weg ist es aber, den Konstruktor gleich um ein Pointer auf das TMainMenu zu erweitern, oder wenn das nicht geht (weil du die Komponente mit dem OI zur Entwurfszeit bearbeiten willst) den Zugriff auf das TMainMenu aus dem Konstruktor nehmen, und diese Verarbeitung in eine extra Property zu legen, die dann auch im OI gesetzt werden kann.
bis bald
akari
-
kann das Untercontrol durch casten auf ein TComponent dann die Eigenschaft ComponentCount/Component bzw. die Methode FindComponent() benutzen, um das MainMenu zu finden.
Jo danke, werde das mal probieren.
Wo wir gerade bei Menu sind, hast du einen Tip wie ich möglichst schnell
20 TMenuItem Objecte in einer for Schleife erzeugen kann, das Problem sind
die Object Namen (z.B.X1......X20)
Ich möchte nicht jede Instanz von Hand erzeugen.
-
so wie du das mit jeder anderen komponente auch tust, siehe FAQ - 'Komponenten zur Laufzeit erzeugen' oder so ähnlich...