投稿日 | : 2003/07/08(Tue) 11:39 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: すみません。もう一つだけ・・。 |
> クリックイベントに該当するようなものってあるのでしょうか・・??
クリック時に発生するonclickイベントや、
ダブルクリック時に発生するondblclickイベントなどがあります。
他にも、(右クリック時の)ポップアップメニュー表示前におきるイベントなどもあります。
ただ、これらは WebBrowser自体のイベントとしてではなく、
その中に表示された、各HTML項目のイベントとして実装されています。
# つまり、ボタンがあればそのボタンごとにonclickイベントがありますし、
# 画像項目などがあれば、その画像ごとにonclickイベントがあるわけです。
HTMLのonclickなどのイベントを、VBにて扱う場合には、2つの方法があります。
1つは、「既定のメソッド」を持ったクラスモジュールを作成し、そのインスタンスを
各HTML項目のイベントプロパティ(onclickプロパティ等)に Set する、という方法です。
この場合、クリックされるたびに、この「既定のメソッド」が呼び出されます。
もう1つは、MSHTML.TLB (あるいは、MSHTML.DLL)を参照設定して、それを
WithEvents変数で定義しておき、下記のように記述する、という方法です。
Option Explicit
'イベントを受け取るためのWithEvents宣言
Private WithEvents body As HTMLBody '背景部分(body要素)のイベント処理用
Private WithEvents Img As HTMLImg '画像部分(img要素)のイベント処理用
'img要素のダブルクリック時に呼び出される
Private Function Img_ondblclick() As Boolean
Dim Evt As CEventObj
Dim S As String
Set Evt = Img.ownerDocument.parentWindow.event
S = "画像をダブルクリック!" & vbCrLf
S = S & "(x,y)=(" & CStr(Evt.x) & "," & CStr(Evt.y) & ")" & vbCrLf
S = S & "(X,Y)=(" & CStr(Evt.offsetX) & "," & CStr(Evt.offsetY) & ")" & vbCrLf
MsgBox S, vbInformation
Set Evt = Nothing
Img_ondblclick = True
End Function
'ページの読込が完了したら、各HTML項目をWithEvents変数に割り当てる
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim Elements As Object
Set body = pDisp.Document.body
Set Elements = pDisp.Document.getElementsByTagName("IMG")
If Elements.length > 0 Then
Set Img = Elements.Item(0)
End If
Set Elements = Nothing
End Sub