プロが教える店舗&オフィスのセキュリティ対策術

コンニチワ
VBでフォームに配置したコントロールを
ドラック可能にして
フォーム上でドラック&ドロップを
検出してドラック前の位置から
ドロップ後の位置にコントロールを
移動させたいのですが
どうしてもずれたりして
上手く配置されません
どなたか同じようなことをやったことがある方
ベストなやり方
わかる方教えて下さい
よろしくお願いします

A 回答 (2件)

ちは。


Formにコントロールを張付けて以下のコードで実行すればOKです。
-----------------------------------------
Option Explicit

Dim Drg As Boolean'ドラッギングフラグ
Dim DrX As Single, DrY As Single'位置情報

Private Sub Image1_MouseDown(Button As Integer, ShiftState As Integer, x As Single, y As Single)
If Button = 1 Then
If Drg = False Then
Drg = True
DrX = x: DrY = y
Image1.ZOrder 0
End If
End If
End Sub

Private Sub Image1_MouseMove(Button As Integer, ShiftState As Integer, x As Single, y As Single)
Dim XX As Single, YY As Single

If Button = 1 Then
If Drg Then
XX = Image1.Left + x - DrX
YY = Image1.Top + y - DrY
Image1.Move XX, YY
End If
End If
End Sub

Private Sub Image1_MouseUp(Button As Integer, ShiftState As Integer, x As Single, y As Single)
Drg = False
End Sub
------------------------------------------------
じゃ、そゆことで。
    • good
    • 0

こんにちは。


最近 VB を触っていないのですが、ドラッグ開始のタイミングを MouseDown でおこなっているのなら、ドラッグ開始時点のコントロール内のマウス座標が得られるはずです。それを、ドロップ時の座標から引けばいいと思います。
(ドロップされたx座標-ドラッグ時のx座標, ドロップされたy座標-ドラッグ時のy座標) に動かせばいいのでは。

ただし、ドラッグ対象のコントロールと、ドロップされるコンテナの座標系が異なる場合には、適切な変換が必要だと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!