2

D2009を使用しています。マウスのパンを追加したい TWinControl から派生したコンポーネントがあります。新しいコントロール スタイル csPannable と新しいコントロール状態 csPanning があることがわかります。私はそれを理解しようと vcl ソースを見てきましたが、今のところ少し迷っています。これに関するドキュメントを知っている人はいますか?提案やリンクは大歓迎です!

4

1 に答える 1

1

TWinControl を定義する同じユニットに、TControl の実装があります。マウス イベントとプロシージャがどのように定義されているかを確認してください。コンポーネントでマウス メッセージのキャプチャを試みることができます。

これを試して:

私的な宣言では:

procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;

実装では、このようなことができます

procedure TPanControl.WMLButtonDown(var Message: TWMLButtonDown);
begin
  Self.Color := clYellow;
end;

procedure TPanControl.WMLButtonUp(var Message: TWMLButtonUp);
begin
  Self.Color := clbtnFace;
end;

procedure TPanControl.WMMouseMove(var Message: TWMMouseMove);
var
  State : TKeyboardState;
begin
  GetKeyboardState(State);
  if ((State[VK_LBUTTON] And $80) <> 0) then begin
    Self.Color := clOlive;
  end;
end;

いくつかのバリエーションをテストします。この単純なコードを使用すると、マウス イベントをキャッチできます。これらの手順では、マウス イベントを起動したり、何かを実行してパン効果を作成したりできます。

于 2009-07-28T14:05:42.383 に答える