マウスホイールによるDBコントロール動作をさせないようにしたい

解決


やぶ  2005-01-13 19:47:42  No: 12690

D7(WinXP-Home)でDBGridやDBEditなどを使ってマウスホイールを用いると、
レコードが移動されます。

フォームが2個ありまして
(1).DBGridがある一覧表示用フォーム
(2).DBEdit等のある詳細表示フォーム
となっています。(DataSetは共通です)

(1)ではホイール動作を許可(レコード移動可能)し、
(2)ではホイール動作を禁止(レコード移動不可)したいのですが、
ネット上で調べまわったのですがどうも実現方法がわかりません。
実現に向けてヒントを頂きたいと思います。

よろしくお願いします。


やぶ  2005-01-13 21:20:08  No: 12691

すいません。多少進展がありました。
いろいろ参考に用いたコードがあるのですが、以下のようなコードを記述しました。

・Formに以下を宣言
GridProc: TWndMethod;
procedure GridHandler(var Msg: TMessage);

・プロシージャを実装
procedure TForm1.GridHandler(var Msg: TMessage);
begin
  if (Msg.Msg = WM_MOUSEWHEEL) and (Msg.Msg = WM_VSCROLL) then
  begin
    Msg.Result := 0;
  end
  else
  begin
    GridProc(Msg);
  end;
end;

・FormCreateイベント
GridProc := DBGrid1.WindowProc;
DBGrid1.WindowProc := GridHandler;

以上3点の追加によって、DBGrid達をホイール未対応に変更できました。
これで恐らく当初の目的は達成できると思うのですが、場面場面で使用可・使用不可に切り替える方法がわかりません。

最終的には
procedure WhellEnable(DBGrid:TDBGrid;Wheel:Boolean);
くらいのプロシージャにして、切り替えられるようにしたいと思うのですが、いかがなものでしょうか。


やぶ  2005-01-14 00:21:18  No: 12692

なんだかんだで解決しました。
終了します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加