Event assignment in Delphi Interposer class

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?

+4
source share
1 answer

Override DoExit . This is the method that is called when the control has lost focus, and which raises the OnExit event. Call inherited DoExit after or earlier, depending on your wishes:

 procedure TMyCustomEdit.DoExit; begin // Code here will run before the event handler of OnExit is executed inherited DoExit; // This fires the OnExit event, if assigned // Code here will run after the event handler of OnExit is executed end; 
+10
source

Source: https://habr.com/ru/post/1402008/


All Articles