![]() |
Komponente findet PopupMenu nicht
Hallo miteinander
Bei mir happert's irgendwie an einer Komponente, die ich geschrieben habe. Mir ist irgendwie (nicht) mehr klar, in welcher Reihenfolge was wann erstellt wird. Und zwar hab ich folgendes Szenario: Ich habe eine Komponente (abgeleitet von TComponent) die ich zu Designtime auf mein Form oder Frame knalle. Diese Komponente hat die Eigenschaft "active". Ist dies gesetzt, soll beim Aufruf des Form/Frames die Komponente beginnen zu arbeiten. In diesem active-property werden alle Unterkomponenten des Parents durchgeloopt. Wenn die Komponente also auf einem Frame liegt, werden alle Komponenten (wie Edits, Labels, etc) dieses Frames abgearbeitet. Dies funktioniert gut, bis auf das Popupmenu. Dies findet er einfach nicht. Gebe ich die Anzahl Komponenten zurück, so hat er viel weniger als wenn ich die Komponentenanzahl z.B. bei einem Buttonklick anzeige. Daher meine Vermutung: Das active-property wird gesetzt bevor alle Komponenten wirklich gezeichnet wurden. Dazu muss ich noch sagen, dass die Komponente auf dem geerbten Form/Frame liegt und das Popupmenu auf dem abgeleiteten Frame. Handelt es sich um ein Form könnte ich mich irgendwie ins OnFormCreate oder so einklinken, aber beim Frame gibt es sowas nicht. Hat da jemand eine Idee? Verkürzter Code:
Delphi-Quellcode:
TcTrans = class(TComponent)
private FActive: Boolean; FForm: TComponent; protected procedure SetActive(const Value: Boolean); public constructor Create( _owner: TComponent ); override; destructor Destroy; override; published property Active: Boolean read FActive write SetActive default false; end; constructor TcTrans.Create(_owner: TComponent); begin inherited; FForm:= _owner; FActive:= false; end; procedure TcTrans.SetActive(const Value: Boolean); var i: Integer; begin if Value then begin for i:= 0 to FForm.ComponentCount - 1 do begin if FForm.Component[ i ] is TPopupMenu then ShowMessage('Chewbacca!'); end; ShowMessage(IntToStr(FForm.ComponentCount)); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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