Drag&Drop時にDropされたファイルがオブジェクトなら禁止するには?

解決


salt  2002-02-12 14:30:35  No: 75253  IP: [192.*.*.*]

すいません、またまたお聞きしたいのですが、フォーム上のコントロール(今回はPicture Box)にファイルをドラッグした時、そのファイルがオブジェクト(IEやマイ コンピュータ)ならアイコンのカーソルを禁止マークにしたいのですが、どうすればよいのでしょうか?一応下のようなコードを書きました。
Private Sub Picture1_OLEDragOver(省略)
    If Not Data.GetFormat(vbCFFiles) Then
         Picture1.OLEDropMode = 0
    End If
End Sub
しかしこれだとその後ずっとファイルのドロップが不可能になってしまいます。
いろいろ元に戻すための処理を書いてみたのですが、どうしてもうまくいきません。ドラッグされたものがオブジェクトの時、アイコンのカーソルを禁止マークにするのが目的なので、どなたか良い方法をご存知の方がいたら、教えていただけると幸いです。

編集 削除
たかみちえ  URL  2002-02-12 19:02:05  No: 75254  IP: [192.*.*.*]

それでほとんどうまくいっているというのなら…。
  タイマーとかで元に戻すとかしたらどうでしょう?
オブジェクトのドラッグドロップを見つけたらフラグを立てておいて、
オブジェクトがなくなったら、フラグをおろして
タイマーで、ドラッグ禁止を解除。とか。

編集 削除
ハウア  2002-02-14 10:13:43  No: 75255  IP: [192.*.*.*]

少々強引ですが、

Private Sub Picture1_MouseMove(省略)
  If Picture1.OLEDropMode = 0 Then
    Picture1.OLEDropMode = 1
  End If
End Sub

を追加すれば復帰できました。

ロースペックな環境で復帰と禁止を繰り返すと多少重く感じるかもしれません。
他の方法があれば、そちらを使用した方がいいです。

編集 削除
ハウア  2002-02-15 10:46:43  No: 75256  IP: [192.*.*.*]

ヘルプで「OLEDragOver」を調べたら
「OLEドラッグ ソースから OLEドロップ ターゲットへのドラッグ」に、
説明がありました。
他の定数や、詳細はヘルプを参照してください。

Private Sub Picture1_OLEDragOver(省略)
If Not Data.GetFormat(vbCFFiles) Then Effect = vbDropEffectNone
End Sub

編集 削除
salt  2002-02-26 12:11:26  No: 75257  IP: [192.*.*.*]

すいません、いろいろ立てこんでいたものでレス遅れてしまいました。
教えていただいた通りにしてみたらうまくいきました。
悩んでいたので大助かりです。
たかみちえさん、ハウアさん本当にどうもありがとうございました。

編集 削除