Nhờ các bác giúp, Làm thế nào kéo thả và hoán đổi vị trí CommandButton? (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thienthanbe

Thành viên mới
Tham gia
27/10/08
Bài viết
43
Được thích
2
Trên Form em có 3 commandbutton , em muốn hỏi làm thế nào kéo bất kỳ commandbutton nào đó thả vào vị trí 1 commandbutton khác thì 2 cái này hoán đổi vị trí cho nhau. Các bác giúp e với ạ!!
 

File đính kèm

làm cho bạn với commandbutton1, với 2, 3 tương tự.
(bạn nên đặt tên cho các buttons, để nguyên vậy khó quản về sau)

Dim XBegin As Single, YBegin As Single, LeftBegin As Single, TopBegin As Single

Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
XBegin = X
YBgin = Y
LeftBegin = CommandButton1.Left
TopBegin = CommandButton1.Top
End Sub

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
CommandButton1.Left = CommandButton1.Left + X - XBegin
CommandButton1.Top = CommandButton1.Top + Y - YBegin
End If
End Sub

Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim CtrDrop As Control
Set CtrDrop = dropToControl(CommandButton1, X, Y)
If Not CtrDrop Is Nothing Then
CommandButton1.Left = CtrDrop.Left
CommandButton1.Top = CtrDrop.Top
CtrDrop.Left = LeftBegin
CtrDrop.Top = TopBegin
Else
CommandButton1.Left = LeftBegin
CommandButton1.Top = TopBegin
End If
End Sub

Private Function dropToControl(MyControl As Control, X As Single, Y As Single) As Control
Dim Ctr As Control, XDrop As Single, YDrop As Single
XDrop = MyControl.Left + X
YDrop = MyControl.Top + Y
For Each Ctr In Me.Controls
If Ctr.Name <> MyControl.Name Then
If XDrop >= Ctr.Left And XDrop <= Ctr.Left + Ctr.Width _
And YDrop >= Ctr.Top And YDrop <= Ctr.Top + Ctr.Height Then
Set dropToControl = Ctr
Exit For
End If
End If
Next
End Function
 

File đính kèm

Upvote 0
Cám ơn bác nhiều, e có thắc mắc là ko biết có cách nào viết code dùng chung cho các cmdbutton không? Bởi vì thực tế em cần làm có đến 40 cái cmdbutton lận.
 
Upvote 0
Cám ơn bác nhiều, e có thắc mắc là ko biết có cách nào viết code dùng chung cho các cmdbutton không? Bởi vì thực tế em cần làm có đến 40 cái cmdbutton lận.

Viết thì chẳng có vấn đề gì (Dùng Class)
Có điều tôi thắc mắc: Bạn cần cái vụ tráo đổi các nút để làm gì? Chơi trò chơi à?
 
Upvote 0
Viết thì chẳng có vấn đề gì (Dùng Class)
Có điều tôi thắc mắc: Bạn cần cái vụ tráo đổi các nút để làm gì? Chơi trò chơi à?
Cám ơn bác quan tâm. Em muốn thiết kế 1 form quản lý trại heo nái, mỗi con là 1 cmdbutton. Em muốn sắp xếp heo thì phải hoán đổi vị trí chúng với nhau, đại khái là vậy. Bác viết giúp em với!
 
Upvote 0
Cám ơn bác quan tâm. Em muốn thiết kế 1 form quản lý trại heo nái, mỗi con là 1 cmdbutton. Em muốn sắp xếp heo thì phải hoán đổi vị trí chúng với nhau, đại khái là vậy. Bác viết giúp em với!
Ý tưởng "thiết kế" này mới nghe lần đầu tiên:blowup:
"Trại heo nái" của tôi có đến 2000 con, tính sao đây? +-+-+-+
 
Upvote 0
Ý tưởng "thiết kế" này mới nghe lần đầu tiên:blowup:
"Trại heo nái" của tôi có đến 2000 con, tính sao đây? +-+-+-+
Hì đây là e thiết kế cho chính trại của mình và chỉ có 40 nái thôi, cái này là phần trực quan thôi còn phần chi tiết có lẽ còn phải nhờ các bác chỉ vẽ nhiều vì VBA của em là học mò mà có. Cám ơn bác.
 
Upvote 0
Mình triển khai từ phương án của jack nt sang Class Module.
Giờ thì trên Form có bao nhiêu CommandButton nó bao tất (Nếu muốn loại trừ thì phải dùng thêm rào Name loại trừ)
 

File đính kèm

Upvote 0

Bài viết mới nhất

Back
Top Bottom