4

Access (2002 / 2003) のデータ バインド フォームでは、カーソルが複数行のテキスト フィールドまたはリスト ボックス内にある場合でも、マウスホイールを回すと次/前のレコードに移動します。これはユーザーにとって大きな煩わしさであり、簡単にオフにすることはできません。

私は最近、MouseHook ( http://www.lebans.com/mousewheelonoff.htm ) と呼ばれる DLL を発見しました。これは、このマウスホイールの動作を効果的にブロックし、より期待される動作に置き換えることができます。

ただし、外部 ActiveX コントロールが Access フォームに追加されると、このモジュールは何もしません。たとえば、FlexGrid コントロールを含むフォームがあり、多くの行を含めることができます。ユーザーがマウスホイールを使用してスクロールしようとすると、MouseHook DLL がロードされていても、Access は別のレコードに移動します。

MouseHook DLL のようなソリューションはありますが、外部 ActiveX コントロールでも機能しますか? または、MouseHook DLL のソース コードを利用できるので、FlexGrid などのコントロールを処理するように変更できますか?

PS: MouseHook DLL の作成者に聞きたかったのですが、彼は現在 2009 年 6 月まで「休止中」です。

4

4 に答える 4

1

Access でフレックスグリッドを使用しているのはなぜですか? 私にとって、これは、Access のネイティブ コントロールを使用するとほとんどの場合、はるかに簡単に達成できることを実行するために非ネイティブ コントロールを選択しているように見えるため、Access に敵対的な視点でプロジェクトにアプローチしている可能性が高いことを示すフラグです。

于 2008-11-14T04:15:04.927 に答える
1

flexgrid をフックし、WM_MOUSEWHEEL メッセージを傍受し、それを無視して、意図した動作を呼び出します。

于 2008-11-20T07:08:27.803 に答える
1

本当に UI を変更し、ユーザーがマウス ホイールの動作を期待する方法を変更する必要がある場合は、スクロール方法を変更するのではなく、単に無効にすることをお勧めします。スクロールは奇妙に思えるかもしれませんが、それがプログラムの仕組みです。一日中 PDF を読まなければならなかったときに、ある日 1 人がマウス ホイールのスクロールが不十分であると判断し、デフォルトで巨大なジャンプや水平などに変更したとしたら、あなたはどうしますか。はい、それはより良い解決策だったかもしれませんが、本来の目的を果たさないため、ユーザーにとっては煩わしいものです。

于 2008-11-13T07:42:41.597 に答える
0

あなたの質問に対する直接的な回答ではありませんが、マウス ホイールの動きを処理する方法は、ユーザーが編集を開始した後に誤ってレコードが変更されるのを防ぐためです。ユーザーがフォームを開くと、通常どおりホイールがレコードを意のままに動かします。ユーザーがフィールドで何かを編集してマウス ホイールを動かすとすぐに、BeforeUpdate イベントが発生し、コードは最初にレコードを保存する必要があることを示すプロンプトを表示します。BeforeUpdate イベントで警告を抑制するためにユーザーが明示的に押す必要がある保存ボタンがあります。

于 2008-11-12T22:50:09.877 に答える