Delphi编程为TPanel 增加OnPaint 事件

减小字体 增大字体 作者:佚名  来源:转载  发布时间:2011-02-18 22:44:39

有时候,我们需要少量修改或增加已有控件的行为或属性,但又不想新写个控件注册到组件面板上或动态创建来用,可以通过同名控件派生来实现。

以下这个简单的例子,为 TPanel 增加了 OnPaint 事件:

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. 

来自:http://blog.csdn.net/aroc_lo/archive/2010/06/23/5689218.aspx

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

广告位置B