お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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