![]() |
Eigener OnExit - wie?
Hallo,
ich versuche grade mit TD in einem Ahnen-Fenster einen eigenen OnExit-Event zu schreiben, den ich dann in den Erben nutzen kann. Den Event habe ich wie folgt deklariert:
Delphi-Quellcode:
Komischerweise wird der Event aber nicht in der Auswahlliste des Objektinspektors für T(DB)Edits angezeigt. :wiejetzt:
type
TChildFormNoReg = class(TChildFormNoData) ... procedure CheckFieldIsRequired(Sender: TObject); ... Trage ich den Event von Hand im Objektinspektor beim OnExit ein, ist Sender komischerweise nil :wall: Ideen, wie das Problem zu lösen ist?? |
Re: Eigener OnExit - wie?
Delphi-Quellcode:
Es werden nur Prozeduren vor "private" in der Liste zur Auswahl angezeigt. Die Anderen kann man natürlich trotzdem per Hand zuweisen.
type
TForm4 = class(TForm) DBEdit1: TDBEdit; procedure Wird_Angezeigt(Sender: TObject); private { Private-Deklarationen } procedure Wird_Nicht_Angezeigt_1(Sender: TObject); public { Public-Deklarationen } procedure Wird_Nicht_Angezeigt_2(Sender: TObject); end; |
Re: Eigener OnExit - wie?
Meine Prozedur ist vor "private" deklariert und wird in den Erben trotzdem nicht in der Auswahlliste angezeigt :gruebel:
|
Re: Eigener OnExit - wie?
Vielleicht gehts ja so:
![]() So hab ich (allerdings in Delphi 2006) ein OnAfterCreate und ein OnAfterShow implementiert. Die Sieht man aber nicht im Objektinspektor dazu muß man das Ganze in eine neue Komponente gießen. Was da nicht steht: WM_AFTERSHOW ist eine eigene Konstante mit WM_USER + 1; Zu WM_USER halt deinen eigenen Offset draufrechnen, da die Nummer eindeutig sein muß. Ich hab z.B.: 300 und 301 genommen. Im Grunde setzt du mit PostMessage eine Programmweite "Nachricht" ab, die sich in die Systemnachrichten einreiht:
Delphi-Quellcode:
Das geht natürlich auch für alle möglichen anderen Events.
interface
type Txyz = class(...) public property OnAfterShow : TNotifyEvent read FOnAfterShow write FOnAfterShow; end; const WM_AFTERSHOW = WM_USER + 300; implementation procedure Txyz.WndProc(var Msg: TMessage); begin case Msg.Msg of WM_AFTERSHOW: begin if assigned(FOnAfterShow) then FOnAfterShow(Self); // hier wird die zugewiesene Funktion ausgeführt end; end; inherited; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 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