delphi 技巧 以相同类名派生一个子类


本文整理自网络,侵删。

 delphi 技巧 以相同类名派生一个子类
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type

  // 以相同类名派生一个子类
  TPanel = class(ExtCtrls.TPanel)
  private
    FOnPaint: TNotifyEvent;
  protected
    // 重载一个方法
    procedure Paint; override;
  public
    // 新定义一个事件
    property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
  end;

  TForm1 = class(TForm)
    pnl1: TPanel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure OnPnlPaint(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TPanel }

procedure TPanel.Paint;
begin
  inherited;
  if Assigned(FOnPaint) then
    FOnPaint(Self);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // 新增加的事件只能在运行期动态关联
  pnl1.OnPaint := OnPnlPaint;
end;

procedure TForm1.OnPnlPaint(Sender: TObject);
begin
  // 这一句是可以执行到的
  pnl1.Canvas.TextOut(10, 10, 'Test');
end;

end.

相关阅读 >>

Delphi 遍历所有edit控件

Delphi 生成可以控制最大32位随机英文数字字符串

Delphi 检查用户输入必须是汉字串

Delphi 使用泛型的 tarray 从动态数组中查找指定元素

Delphi实现图像反色实例4种方法

Delphi 如何使用程序标识符检查程序是否已安装

Delphi中ns和ms时间的获取方法

Delphi rtf文件转txt函数

Delphi-idhttp-json用法

Delphi中组件panel、splitter、groupbox、按钮组件(checkbox...)、计时器、滚动条、多选卡

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...