![]() |
TComponent "unsichtbar" in eine Form einbauen
Hallo,
ich möchte gerne eine Componente unsichtbar in eine Form einbauen: habe eine Form, die vererbt wird und diese Form soll auf verschiedene Messages reagieren können. Dazu habe ich ein TApplicationEvent protected eingebaut, welches im Constructor auch einwandfrei instanziert wird. In abgeleiteten Formen jedoch wird dieses TApplicationEvent im Formulareditor angezeigt. Das will ich allerdings nicht. Die Form soll also nach außen quasi genauso aussehen, wie jede andere Form auch. Geht so etwas irgendwie? Ich hoffe, irgendwer konnte verstehen, was ich meine ;-) Gruß, Dominik |
Re: TComponent "unsichtbar" in eine Form einbauen
Von was hast denn du abgeleited ? Ein Tobject sollte reichen. Oder hab ich dich falsch Verstanden...
|
Re: TComponent "unsichtbar" in eine Form einbauen
Dann hast du mich falsch verstanden. Ich habe quasi folgendes:
Delphi-Quellcode:
Und wenn ich nun eine neue Form erzeuge, die von TMyForm erbt, also z.B.
type
TMyForm = class(TForm) private AppMessages : TApplicationEvents; procedure AppMessagesOnMessage(var Msg: tagMSG; var Handled: Boolean); public constructor Create(AOwner : TComponent); override; end; constructor TMyForm .Create(AOwner : TComponent); begin inherited; AppMessages := TApplicationEvents.Create(Self); AppMessages.OnMessage := AppMessagesOnMessage; end; procedure TMyForm .AppMessagesOnMessage(var Msg: tagMSG; var Handled: Boolean); begin // Hier eine Menge MEssage-Behandlung end;
Delphi-Quellcode:
Dann habe ich im Formulareditor ein ApplicationEvent, welches eigentlich unsichtbar hätte bleiben sollen, da es ja nur intern verwendet wird!
type
TNeueForm = class(TMyForm) end; Gruß, Dominik |
Re: TComponent "unsichtbar" in eine Form einbauen
ist doch klar, schließlich schreibst du:
Delphi-Quellcode:
übergib als owner "nil" und schon trägt es sich nicht in die Components-List des Forms ein.
TApplicationEvents.Create(Self);
|
Re: TComponent "unsichtbar" in eine Form einbauen
im übrigen würde ich dir eher die messagehandler per extra-methode empfehlen da dein Application-Events auch die messages von anderen Forms abfängt. Wenn du also zwei von deinen forms nutzt wertest du die messages wohlmöglich doppelt aus. Richtiger wäre es doch aber wenn du wirklich nur die messages für das form auswertest oder nicht?
|
Re: TComponent "unsichtbar" in eine Form einbauen
Zitat:
Zitat:
Delphi-Quellcode:
Da sieht man auch, dass ich tatsächlich nur Messages an meine Form behandle ;-)
procedure TInstantiableForm.AppMessagesOnMessage(var Msg: tagMSG;
var Handled: Boolean); var Ctrl : TWinControl; begin if csDesigning in ComponentState then exit; if Assigned(RelativeModalForm) then begin if ((Msg.message >= WM_LBUTTONDOWN) AND (Msg.message <= WM_MOUSELAST)) then begin Ctrl := FindControl(Msg.hwnd); while Assigned(Ctrl) do begin if Ctrl = Self then begin RelativeModalForm.BringToFront; Handled := true; Break; end; Ctrl := Ctrl.Parent; end; end; end; end; Hab es jetzt auf jeden Fall wie gewünscht am Laufen =) Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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 by Thomas Breitkreuz