D7(WinXP-Home)でDBGridやDBEditなどを使ってマウスホイールを用いると、
レコードが移動されます。
フォームが2個ありまして
(1).DBGridがある一覧表示用フォーム
(2).DBEdit等のある詳細表示フォーム
となっています。(DataSetは共通です)
(1)ではホイール動作を許可(レコード移動可能)し、
(2)ではホイール動作を禁止(レコード移動不可)したいのですが、
ネット上で調べまわったのですがどうも実現方法がわかりません。
実現に向けてヒントを頂きたいと思います。
よろしくお願いします。
すいません。多少進展がありました。
いろいろ参考に用いたコードがあるのですが、以下のようなコードを記述しました。
・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);
くらいのプロシージャにして、切り替えられるようにしたいと思うのですが、いかがなものでしょうか。
なんだかんだで解決しました。
終了します。
ツイート | ![]() |