• Delphi TFrame[3] 自定义显示、销毁、隐藏事件(onShow 、OnHide、OnDestroy)


    Delphi TFrame[3] 自定义显示、销毁、隐藏事件(onShow 、OnHide、OnDestroy)

    Frames中本身不存在显示onShow 、OnHide、OnDestroy事件

    方法1:通过设置框架的属性形式来模拟调用 frame的onshow过程

    type
      TFrame2 = class(TFrame)
        Edit1: TEdit;
      private
        { Private declarations }
        fmOnShow : TNotifyEvent;
        fmOnHide : TNotifyEvent;
        
        procedure fmSetOnShow(ps: TNotifyEvent);
        procedure fmSetOnHide(ph: TNotifyEvent);
        
        procedure FrameOnShowHide(var M: TMessage); message CM_SHOWINGCHANGED;
      public
        { Public declarations }
        property OnShow : TNotifyEvent write fmSetOnShow;            //通过设置框架的属性形式来模拟调用 frame的onshow过程
        property OnHide : TNotifyEvent write fmSetOnHide;
      end;
    
    implementation
    
    {$R *.dfm}
    
    { TFrame2 }
    
    procedure TFrame2.fmSetOnHide(ph: TNotifyEvent);
    begin
       fmOnHide := ph;
    end;
    
    procedure TFrame2.fmSetOnShow(ps: TNotifyEvent);
    begin
      fmOnShow := ps;
    end;
    
    procedure TFrame2.FrameOnShowHide(var M: TMessage);
    begin
      inherited;
      
      if Showing then
      if Assigned( fmOnShow ) then
          fmOnShow( Self )
      else
        if Assigned( fmOnHide ) then
          fmOnHide( Self );
    end;
    

    调用:

        procedure FrameShiJian(Sender: TObject);
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FrameShiJian(Sender: TObject);
    begin
      Frame2.Edit1.Text:='Hi,Delphi';
      ShowMessage('hi,滔Roy');
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Frame2.OnShow:=FrameShiJian;  //放在onshow之前
    end;

    方法2:继承 AfterConstruction 和 BeforeDestruction,类似OnCreate 和 OnDestroy

    type
      TFrame3 = class(TFrame)
        Label1: TLabel;
        Image1: TImage;
      private
        { Private declarations }
      public
        { Public declarations }
        procedure AfterConstruction; override;    //类似OnCreate事件
        procedure BeforeDestruction; override;    //类似OnDestroy事件
      end;
    
    implementation
    
    {$R *.dfm}
    
    { TFrame3 }
    
    procedure TFrame3.AfterConstruction;
    begin
      inherited;
      label1.Caption:='Hi,滔Roy!';
    end;
    
    procedure TFrame3.BeforeDestruction;
    begin
      inherited;
    
    end;
    

      

    创建时间:2021.12.16  更新时间:

    博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你所有帮助,谢谢!
  • 相关阅读:
    MyBatis-Plus之多租户架构(Multi-tenancy)——SAAS
    spring-data-mybatis-mini
    mybatis-plus
    JPA/Hibernate组合的映射,实体继承的映射
    JPA(Java Persistence API)--JavaEE5.0标准ORM规范
    spring data jpa
    mybatis笔记(二)多表关联映射、延迟加载、一级二级缓存、整合ehcache、spring整合mybatis
    mybatis笔记(一)入门程序、dao开发方式、mapper开发方式、全局配置文件、映射文件、动态sql
    Spring 事务处理、整合web
    Spring JdbcTemplate
  • 原文地址:https://www.cnblogs.com/guorongtao/p/15697172.html
Copyright © 2020-2023  润新知