加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi Interposer类中的事件分配

发布时间:2020-12-15 09:38:18 所属栏目:大数据 来源:网络整理
导读:我写了一个TEdit后代,它像这样处理OnExit事件 unit MyCustomEdit;interfaceuses Classes,StdCtrls;type TMyCustomEdit=class(TEdit) private procedure MyExit(Sender: TObject); public constructor Create(AOwner: TComponent); override; end;implementat
我写了一个TEdit后代,它像这样处理OnExit事件

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.

在我的应用程序的主要形式上,我正在使用Interposer类

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.

现在我希望当在主窗体中分配Onexit事件时,我执行了我自己的TMyCustomEdit的onexit实现以及TFormTest窗体的OnExit事件的代码.但是当我运行代码时,只执行TFormTest.OnExit事件的代码.我如何能够执行哪两个方法实现?

解决方法

覆盖 DoExit.这是在控件失去焦点时调用的方法,它触发OnExit事件.根据您的需求,在之前或之后调用继承的DoExit:

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读