1つの画像がメニューのようになっていて、クリックする位置によってリンク先が変わるというホームページページを見たことがあると思います。それが「イメージマップ」という機能です。ここではAccessフォームでその機能を実現する方法を紹介します。
- まず、適当なソフトを使ってメニュー用のイメージを作成します。
- それをフォームにイメージコントロールを使って配置します。
- 続いて、次のようなコードをフォームのモジュールに記述します。ここでは、「イメージ0」が上記のイメージコントロールの名前を表わしています。
Option Compare Database
Option Explicit
Private lngCurrentX As Long
Private lngCurrentY As Long
Private Sub イメージ0_Click()
If lngCurrentX <= 1800 Then
'左方の領域がクリックされたとき
If lngCurrentY <= 1500 Then
'上方の領域がクリックされたとき
MsgBox "処理1が選択されました"
Else
'下方の領域がクリックされたとき
MsgBox "処理2が選択されました"
End If
Else
'右方の領域がクリックされたとき
If lngCurrentY <= 1500 Then
'上方の領域がクリックされたとき
MsgBox "処理3が選択されました"
Else
'下方の領域がクリックされたとき
MsgBox "処理4が選択されました"
End If
End If
End Sub
Private Sub イメージ0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'マウスの位置をPublic変数に保存
lngCurrentX = X
lngCurrentY = Y
'参考用にマウスの座標値を表示
Me!txt_X座標 = lngCurrentX
Me!txt_Y座標 = lngCurrentY
End Sub
ここでのポイントは、イメージコントロールの「MouseMove/マウスボタン移動時」イベントです。このイベントプロシージャでは、そのコントロール上でマウスのカーソルが移動したとき、その座標値を取得することができます。そのタイミングでマウスの位置をPublic変数、lngCurrentXとlngCurrentYに保存しておきます。
そして、実際にマウスがクリックされたとき、すなわち「Click/クリック時」イベントプロシージャによってその座標値によって次に表示するフォームあるいは実行する処理を切り分けます。
なお、実際のClickイベントプロシージャでは、処理を切り分けるための座標範囲を指定しなければなりませんが、それを知るためにも、上記で参考用に配置した2つのテキストボックスを役立てることができます。
実行例:
|