Dùng sự kiện MouseMove trên UserForm. Ví dụ thế này:các anh chị cho em hỏi trong VBA có cách nào mình rê chuột trong Form và textbox di chuyển theo được không ?. Nếu được nhờ các anh chị hướng dẫn
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBox1.Left = X
TextBox1.Top = Y
End Sub
Cám ơn anhDùng sự kiện MouseMove trên UserForm. Ví dụ thế này:
PHP:Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) TextBox1.Left = X TextBox1.Top = Y End Sub
Làm tương tự, sử dụng sự kiện ListBox_MouseMove. Nhưng Textbox sẽ bị chìm trong Listbox.Cám ơn anh
mình có thể chỉnh cách nào mà TB1 di chuyển Trong ListBox được không ạh. TB và con trỏ chuột cách nhau 1 khoảng cách nhỏ cố định.
Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBox1.Left = Me.Left + X
TextBox1.Top = Me.Top + Y
End Sub
Chưa rõ mục đích của bạn, chứ còn theo tôi nhận xét sau quá trình "cày" với UserForm thì.. dùng Mouse_Move bạn sẽ gặp rắc rối và mệt mỏi với nó dài dàiLàm kiểu này em thấy chạy không ổn.
ý của em là làm cái này để thay thế cái Controltiptext Listview vì khi mình dùng sự kiện mouse move thì cái Controltiptext Listview nó chỉ cập nhật hàng hay cột mà nó gặp đầu tiên thôi khi rê chuột qua hàng khác nó không cập nhật nên em tính làm cái này để thay thế. (khi mình rê chuột đi đâu trong LB hay LV thì cái hộp TB di chuyển theo và cách X,Y 1 khoản cố định)
Anh có thể nói rõ kinh nghiệm của anh rõ hơn chút được không ạh?Chưa rõ mục đích của bạn, chứ còn theo tôi nhận xét sau quá trình "cày" với UserForm thì.. dùng Mouse_Move bạn sẽ gặp rắc rối và mệt mỏi với nó dài dài
Tôi thấy cái yêu cầu của tiêu đề và cái mục đích của bạn khác 1 trời 1 vực. Sao bạn không nói rõ yêu cầu của bạn ngay từ đâu? Về yêu cầu của bạn theo tôi bạn nên dùng 1 label tĩnh 1 chỗ hoặc dùng status bar để hiển thị có lẽ sẽ hiệu quả hơn là dùng 1 textbox động để di chuyển theo trỏ chuột. Vì theo tôi biết thì không thể show 1 textbox hoặc label lên trên 1 Listbox đâu, trong môi trường thiết kế bạn cứ thử vẽ 1 label hoặc 1 textbox lên trên 1 listbox xem có được không?
Bạn có chắc là đưa Textbox vào Frame thì nó sẽ nổi lên trên Listbox được không? Bạn hãy thử trực tiếp trên file của bạn rồi chạy thử xem sao.Dạ tĩnh thì em làm được rồi. còn về TB thì mình có thể để vào Frame thì nó sẽ nổi lên trên LB được mà anh.
Bạn có chắc là đưa Textbox vào Frame thì nó sẽ nổi lên trên Listbox được không? Bạn hãy thử trực tiếp trên file của bạn rồi chạy thử xem sao.
Bạn có thể gửi file của bạn lên không? Có file dễ làm hơn là phải đoán ý.dạ em thử rồi được mà anh nhưng nó không di chuyển theo ý của em
Sự kiện MouseMove của ListView và ListBox không giống nhau, nếu là ListBox thì đơn giản hơn nhiều, còn ListView bạn để trong sự kiện, tham số X và Y kiểu của nó là stdole.OLE_XPOS_PIXELS chứ không phải kiểu Single như ListBox, để thực hiện đúng thì đầu tiên bản phải đồng bộ giá trị X, Y với ở đây với giá trị X, Y trên Form đã. Bạn tham khảo thử 1 ví dụ như trong file này rồi áp dụng thử xem.dạ đây em làm Frame với LV
Sự kiện MouseMove của ListView và ListBox không giống nhau, nếu là ListBox thì đơn giản hơn nhiều, còn ListView bạn để trong sự kiện, tham số X và Y kiểu của nó là stdole.OLE_XPOS_PIXELS chứ không phải kiểu Single như ListBox, để thực hiện đúng thì đầu tiên bản phải đồng bộ giá trị X, Y với ở đây với giá trị X, Y trên Form đã. Bạn tham khảo thử 1 ví dụ như trong file này rồi áp dụng thử xem.
Nguyên tắc chắc bạn đã rõ, X và Y ở đây là tọa độ tương đối so với ListView, do đó để biết tọa độ trên Form thì ta phải cộng thêm ListView1.Left và ListView1.Top tương ứng, nhưng vì bạn muốn nó cách trỏ chuột 1 khoảng nên ở đây tôi công thêm 15. Bình thường công thức đúng cho Left và Top của frame sẽ là ListView1.Left + X + 15 và ListView1.Top + Y + 15. Nhưng vì X và Y trong sự kiện này có kiểu stdole.OLE_XPOS_PIXELS, nên tôi phải convert cho đồng bộ với tọa độ của Form, cái này tôi có tìm hiểu qua nhưng khi áp dụng vào lại chưa được như ý muốn, nên tạm thời làm theo cách thủ công là nhân với 1 hệ số. Cách lấy hệ số cho X là lấy Độ rộng của ListView là ListView1.Width chia cho tọa độ X tối đa trong sự kiện(cái này bạn phải tự bug để tìm ra là 246), tương tự với hệ số của Y là ListView1.Height chia cho tọa độ Y tối đa trong sự kiện, ở đây là 119.Cám ơn anh rất nhiều, làm phiền anh lần nữa nha: anh có thể giài thích "ListView1.Left + X * ListView1.Width / 264 + 15, ListView1.Top + Y * ListView1.Height / 119 + 15" cái này giùm em được không ạh