すいません、またまたお聞きしたいのですが、フォーム上のコントロール(今回はPicture Box)にファイルをドラッグした時、そのファイルがオブジェクト(IEやマイ コンピュータ)ならアイコンのカーソルを禁止マークにしたいのですが、どうすればよいのでしょうか?一応下のようなコードを書きました。
Private Sub Picture1_OLEDragOver(省略)
If Not Data.GetFormat(vbCFFiles) Then
Picture1.OLEDropMode = 0
End If
End Sub
しかしこれだとその後ずっとファイルのドロップが不可能になってしまいます。
いろいろ元に戻すための処理を書いてみたのですが、どうしてもうまくいきません。ドラッグされたものがオブジェクトの時、アイコンのカーソルを禁止マークにするのが目的なので、どなたか良い方法をご存知の方がいたら、教えていただけると幸いです。
それでほとんどうまくいっているというのなら…。
タイマーとかで元に戻すとかしたらどうでしょう?
オブジェクトのドラッグドロップを見つけたらフラグを立てておいて、
オブジェクトがなくなったら、フラグをおろして
タイマーで、ドラッグ禁止を解除。とか。
少々強引ですが、
Private Sub Picture1_MouseMove(省略)
If Picture1.OLEDropMode = 0 Then
Picture1.OLEDropMode = 1
End If
End Sub
を追加すれば復帰できました。
ロースペックな環境で復帰と禁止を繰り返すと多少重く感じるかもしれません。
他の方法があれば、そちらを使用した方がいいです。
ヘルプで「OLEDragOver」を調べたら
「OLEドラッグ ソースから OLEドロップ ターゲットへのドラッグ」に、
説明がありました。
他の定数や、詳細はヘルプを参照してください。
Private Sub Picture1_OLEDragOver(省略)
If Not Data.GetFormat(vbCFFiles) Then Effect = vbDropEffectNone
End Sub
すいません、いろいろ立てこんでいたものでレス遅れてしまいました。
教えていただいた通りにしてみたらうまくいきました。
悩んでいたので大助かりです。
たかみちえさん、ハウアさん本当にどうもありがとうございました。