マウスのドラッグ・アンド・ドロップで操作
                                                        玄関へお回り下さい。
マウスのドラッグ・アンド・ドロップでファイル名取得      (105)
    
フォームにファイルリストボックスとテキストボックスを貼り付けて下さい。

ファイルリストボックスに表示されたファイル名をテキストボックスに取り込みます。

Option Explicit   'SampleNo=105 WindowsXP VB6.0(SP5) 2002.05.19
Private XPos As Long
Private YPos As Long


Private Sub Form_Load()
  File1.Path = "c:\windows"
  'プログラム内ですべての OLE ドロップ操作を処理できます。
  Text2.OLEDropMode = vbOLEDropManual ' 1
End Sub


Private Sub File1_MouseDown(Button As Integer, _
            Shift As Integer, X As Single, Y As Single)
'マウスのドラッグ開始
  File1.Drag vbBeginDrag
End Sub


Private Sub Text1_DragDrop(Source As Control, X As Single, Y As Single)
'テキストボックスにドロップ
  'Debug.Print TypeName(Source)
  Text1.Text = File1.FileName
End Sub


もうひとつテキストボックスを貼り付けて下さい。
このテキストボックスをドラッグ・アンド・ドロップで移動します。

Private Sub Text2_MouseDown(Button As Integer, Shift As _
               Integer, X As Single, Y As Single)
'ドラッグ開始位置の保存とドラッグの開始
  YPos = Y
  XPos = X
  Text2.Drag vbBeginDrag
End Sub


補正しておかないとドロップした位置がずれる

Private Sub Form_DragDrop(Source As Control, _
                  X As Single, Y As Single)
'フォーム上にドロップした時の補正
  Source.Move X - XPos, Y - YPos
End Sub


これを実施しないと微小な移動ができない  

Private Sub Text2_DragDrop(Source As Control, X As Single, Y As Single)
'同一コントロール内でドロップした場合の補正
  Source.Move (Text2.Left + X - XPos), (Text2.Top + Y - YPos)
End Sub

エクスプローラーからファイルをドラッグ・アンド・ドロップする。  (105)
     エクスプローラーからファイルをドラッグし、テキストボックスにドロップすればそのパスを含んだファイル名が取得できます。

Private Sub Form_Load()
  File1.Path = "c:\windows"
  'プログラム内ですべての OLE ドロップ操作を処理できます。
  Text2.OLEDropMode = vbOLEDropManual ' 1
End Sub


Private Sub Text2_OLEDragDrop(Data As DataObject, Effect As Long, _
     Button As Integer, Shift As Integer, X As Single, Y As Single)
'ドラッグしたファイル名をテキストボックスにドロップ
  Text2.Text = Data.Files(1)
End Sub




2002/05/20