![]() |
TPanel-Nachfahr Probleme: ComboBox.Items.Add in constructor
Hallo,
ich will mir einen Nachfahren von TPanel ableiten, der u.A. zwei ComboBoxen in sich trägt. Die Deklaration schaut so aus:
Delphi-Quellcode:
Der constructor so:
type
TVisualGlobalScalingCalculator = class(TPanel) constructor Create (AOwner: TComponent); override; ... private { Private-Deklarationen } ... FPhaseShiftCombo, FYSelectCombo: TComboBox; ... end;
Delphi-Quellcode:
Im Konstruktor sollen also Standardwerte in die ComboBoxen aufgenommen werden. Jedoch verursacht er bei den (nun) auskommentierten "Items.Add"-Anweisungen eine Fehlermeldung: "Element '' hat kein übergeordnetes Fenster.", wenn ich die Komponente auf die Form ziehe.
{ ************************************************************ }
constructor TVisualGlobalScalingCalculator.Create (AOwner: TComponent); { ************************************************************ } begin inherited Create (AOwner); // ------------------------------------------------- FGageSelectPanel := TPanel.Create (Self); FFormularPanel := TPanel.Create (Self); // ------------------------------------------------- ... FYSelectCombo := TComboBox.Create (FGageSelectPanel); // ------------------------------------------------- ... // ------------------------------------------------- FPhaseShiftCombo := TComboBox.Create (FFormularPanel); // ------------------------------------------------- ... // ------------------------------------------------- with FYSelectCombo do begin Parent := FGageSelectPanel; Name := 'FYSelectCombo'; Style := csDropDownList; OnChange := GageChangeEvent; OnSelect := GageChangeEvent; // Items.Add ('test'); <<-- Fehler end; // ------------------------------------------------- ... // ------------------------------------------------- with FPhaseShiftCombo do begin Parent := FFormularPanel; Name := 'FPhaseShiftCombo'; Style := csDropDownList; // Items.Add (' 0.0'); <<-- Fehler // Items.Add (' 1.5'); // Items.Add ('-1.5'); end; // ------------------------------------------------- ... end; Allerdings sind alle Parent-Zuweisungen korrekt und später lassen sich auch ohne Probleme Items zu den ComboBoxen hinzufügen. Wo liegt hier der Fallstrick und wie kann ich im Konstruktor den ComboBoxen Standardwerte geben? Vielen Dank im Vorraus, Mario |
Re: TPanel-Nachfahr Probleme: ComboBox.Items.Add in construc
Hi, vielleicht habe ich es nur übersehen, aber kann es sein, dass du vergessen hast die "Parent"-Eigenschaft von
FGageSelectPanel & FFormularPanel zu setzen? |
Re: TPanel-Nachfahr Probleme: ComboBox.Items.Add in construc
Ne, das hab ich nich mitgepostet, sind aber gesetzt worden. Habs extra nochmal kontrolliert gehabt vorher.
|
Re: TPanel-Nachfahr Probleme: ComboBox.Items.Add in construc
Habe die gleichen Probleme ....
habe bei den Pnales dann eine zweite Funktion, di die Items und andere Eigenschaften setzt (gibt noch mehr, die nicht direkt beim Creaste gesetzt werden können z.B.: format string bei DateTimePickern ....) und rufe diese dann gleich nach dem TmyPanel.Crate(self) auf .... falls jemand eine andere / besser Methode wäre ich sehr interessiert daran ... (hat schon viele Probleme verursacht ....) Gruss Hans |
Re: TPanel-Nachfahr Probleme: ComboBox.Items.Add in construc
Hmmm, ich habe da so eine böse Idee:
Wenn es direkt in Konstruktor nicht funktioniert könnte es evt. auch daran liegen, dass es für die eigentliche Komponente (vom Typ "TVisualGlobalScalingCalculator") noch gar keinen Parent gibt. Der wird ja erst nach dem Erzeugen gesetzt. Probier doch mal aus die Methode "Loaded" zu überschreiben. |
Re: TPanel-Nachfahr Probleme: ComboBox.Items.Add in construc
Hm, welche Loaded-Methode? Hab dazu nix in der Hilfe gefunden.
Die Idee klingt plausibel, aber ich hab auch schon Kompos gesehen, die Standardwerte in ihren ComboBoxen hatten. Also das MUSS doch irgendwie gehen ... :gruebel: Mario |
Re: TPanel-Nachfahr Probleme: ComboBox.Items.Add in construc
Zitat aus der Delphi-Hilfe
Zitat:
|
Re: TPanel-Nachfahr Probleme: ComboBox.Items.Add in construc
Ah, DIE Loaded-Methode. Hab in der Hilfe die Methoden von TPanel angeschaut, da stand die natürlich nicht mit drin.
Aber das funktioniert prima jetzt, danke für den Hinweis! :bounce2: Grüße, Mario |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz