|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"設計時に機能するボタン"
設計時にマウスイベントを受け付けるカスタムコンポーネントの例です。
CM_DESIGNHITTESTメッセージに応答するprocedureの中でMessage.Resultに
1を返すことがポイントです。
type
THitButton = class(TButton)
protected
procedure CMDesignHitTest(var Message: TCMDesignHitTest);
message CM_DESIGNHITTEST;
procedure Click; override;
end;
procedure Register;
implementation
procedure THitButton.CMDesignHitTest(var Message: TCMDesignHitTest);
begin
//設計時でも右半分がクリックされたら機能する
if Message.XPos > Width/2 then
Message.Result := 1;
end;
procedure THitButton.Click;
begin
inherited;
if csDesigning in ComponentState then
ShowMessage('設計時です')
else
ShowMessage('実行時です');
end;
procedure Register;
begin
RegisterComponents('Samples', [THitButton]);
end;
//////ここまで
P.S.
PageControlはなぜ設計時にページの切り替えが出来るのか?という
疑問を調べたのがことの発端です。
ちなみに、PageControlに対するCM_DESIGNHITTESTの送信は実行時でも
有効なようですよ。>サブクラス化マニアの方(^^;
佐々木@六角堂
Original document by 佐々木@六角堂 氏 ID:(CXE02604)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|