I wrote a descendant of TEdit that handles the OnExit event this way
unit MyCustomEdit; interface uses Classes, StdCtrls; type TMyCustomEdit=class(TEdit) private procedure MyExit(Sender: TObject); public constructor Create(AOwner: TComponent); override; end; implementation { TMyCustomEdit } uses Dialogs; constructor TMyCustomEdit.Create(AOwner: TComponent); begin inherited; OnExit:=MyExit; end; procedure TMyCustomEdit.MyExit(Sender: TObject); begin ShowMessage('Hello from TMyCustomEdit');//this is show only when is not assignated a event handler in the onexit event. end; end.
in the main form of my application, I use the Interposer class so
unit UnitTest; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, MyCustomEdit; type TEdit=class (TMyCustomEdit); TFormTest = class(TForm) Edit1: TEdit; Edit2: TEdit; procedure Edit1Exit(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormTest: TFormTest; implementation {$R *.dfm} procedure TFormTest.Edit1Exit(Sender: TObject); begin ShowMessage('Hello from TFormTest');//this code is always executed end; end.
Now I want that when the Onexit event is assigned in the main form, my own onexit TMyCustomEdit implementation is executed, as well as the OnExit event code of the TFormTest form. but when I run the code, only the TFormTest.OnExit event code is executed. How can I implement both methods?
source share