16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"最も簡単なサブクラス化"
この発言に対し以下のコメントが寄せられています
#00403 謎の全知師 さん RE:最も簡単なサブクラス化
動作を変更したいコントロールのウインドウプロシージャを
外から差し替える例です.WinControlでなくてもかまいません.
WindowProcというTWndMethod型のプロパティがTControlのpublicに
あって,こいつに普通はWndProcが入れてあるというのにさっき
気付いたもので(^^;
WndProcをoverride出来ないときの逃げに使えるかもしれません.
Delphi3.0
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
private
OldProc1: TWndMethod;
procedure NewWndProc1(var Msg: Tmessage);
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.NewWndProc1(var Msg: Tmessage);
begin
if Msg.Msg = WM_LBUTTONDOWN then begin
MessageBeep(0);
end;
OldProc1(Msg);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OldProc1 := Panel1.WindowProc;
Panel1.WindowProc := NewWndProc1;
end;
end.
TN(CQJ01721)
Original document by TN 氏 ID:(CQJ01721)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|