có cách nào di chuyển Textbox theo con trỏ chuột trên Form

Liên hệ QC

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
875
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 -=.,,
 
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 -=.,,
Dù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
 
Upvote 0
Dù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
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.
 
Upvote 0
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.
Làm tương tự, sử dụng sự kiện ListBox_MouseMove. Nhưng Textbox sẽ bị chìm trong Listbox.
PHP:
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
 
Upvote 0
Là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)
 
Upvote 0
Là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)
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
 
Upvote 0
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
Anh có thể nói rõ kinh nghiệm của anh rõ hơn chút được không ạh?

Em có làm 1 cái Listview, nhiều khi dữ liệu trong LV(ví dụ cột 3 hàng 1) nó dài quá không hiện hết chữ trong LV ý em là khi em rê chuột vào đó thì dữ liệu trong cột 3 hàng số 1 hiện và khi rê chuột qua các hàng khác cũng vậy (em có tham khảo trên mạng và dùng được Tooltiptext nhưng mà nó không hiện được UNI code nên em mới định đưa TB thế vào)
 
Upvote 0
http://uploadanh.com/viewimg.php?id=3948015


viewimg.php


hình đính kèm

viewimg.php

viewimg.php
436_hinh.bmp
436_hinh.bmp
 
Lần chỉnh sửa cuối:
Upvote 0
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?
 
Upvote 0
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?

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.
 
Upvote 0
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.
 
Upvote 0
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ạ em thử rồi được mà anh nhưng nó không di chuyển theo ý của em (em nghĩ cái yêu cầu của em không khả thi quá chắc sài cái tooltiptex không dấu hay để TB cố định thì đỡ phức tạp hơn). Em toàn học lóm trên GPE, các thành viên trong đây quá tuyệt vời

Cám ơn anh các anh đã hướng dẫn, phân tích và góp ý tận tình
 
Lần chỉnh sửa cuối:
Upvote 0
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.
 

File đính kèm

Upvote 0
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.

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
 
Upvote 0
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
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.
 
Upvote 0
Web KT

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

Back
Top Bottom