2016-07-03 4 views
0

MS-Access 2010: アイテムの名前とサブフォーム(アイテムのアクションなど)を含むメインフォーム。 目的=マウスを使用して、編集することなく迅速にコンサルティングするデータ。MS-Access 2010:マウスイベントがメインフォームで「死んでいる」

アイデア:マウスを動かすだけでサブフォームに戻り、メインフォームに戻ることができます。

これは、サブフォーム(サブフォーム内のコード)にMainFormをより完璧に動作:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 
    Forms![MyMainForm]![MySubForm].SetFocus 
End Sub 

IサブフォームからのMainFormに戻すための類似の方法を使用することを試みました。しかし、マウスがサブフォーム上に移動すると、マウスをメインフォーム上またはメインフォームのフィールド上に移動させたり、メインフォームの背景をクリックしたりしても、目的のマウス操作(対応するコードにStopを挿入してチェック)は実行されません。ちなみに、メインフォームにフォーカスを当ててメインフォームの背景をクリックすると、マウスアクションがトリガーされますが、.SetFocusはエラーになります(アクションは許可されません)。

したがって、フォーカスをメインフォームに戻す唯一の方法は、メインフォーム上のフィールドをクリックしているようです。しかし、これはユーザーにとって自明ではありません。

+1

フォームにフォーカスを設定することはできません。 'Forms![MyMainForm]![MySubForm] .SetFocus'は、サブフォームコントロールのフォーカスを設定しています。メインフォームのコントロールにフォーカスを設定する必要があります。 – Andre

答えて

0

私が必要としたのは、マウスを動かすことによってメインフォームに焦点を当てることでした。もちろん、最初にフォーカスをメインフォームに設定しなければなりません。その後はメインフォーム上の任意のフィールドにフォーカスすることができます。問題は、フォーカスがサブフォーム上に移動すると、メインフォーム自体もバックグラウンドもアクションを実行できないトリガーマウスアクションを実行しないことです。

しかし、私は主なフォームの下部にフォーム幅全体にわたって、マウスがサブフォームを離れるときにマウスが自動的に交差する大きく透明な非結合ダミーフィールドを作成しました。コード次のメインフォームのモジュールである。

Private Sub Dummy_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 
Me.SetFocus 
Me![Empty].SetFocus 
End Sub 

空するフォーカスがカーソルがメインフォームにフォーカスしたことを示すために点滅第二ステップで設定されたコーナーで非常に小さな未結合のフィールドです。

ダミーフィールドは十分に大きくなければなりません。さもなければ、マウスの交差時間が短すぎて、所望の動作をトリガすることができません。これにより、メインフォームのデザインの可能性が制限されます。

関連する問題