Thay đổi kích thước Label khi kéo ngang

duyhieu61

Thành viên mới
Anh chị cho em hỏi, có cách nào kéo Label theo chiều ngang và làm thay đổi kích thước bề ngang (.width) của Label được không?
Bạn cần đăng nhập để thấy hình ảnh

Em có tham khảo topic này mà chưa làm được:
 

NhanSu

Thành Viên Nổi Bật

Bạn phải kéo trong khi thiết kế form chứ không phải khi chương trình chạy. Thay đổi thuộc tính width khi chương trình chạy thì được nhưng bạn cần viết lệnh cho nó, ví dụ userform1.label1.width=20
 

bvtvba

Thành viên tích cực
Bạn thử code sau:
Mã:
Private PosX As Double, PosY As Double
Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  PosX = X: PosY = Y
End Sub
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  On Error GoTo thoat
  If Button > 0 Then 'Khi tay con click chu?t thi con lam vi?c d??i ?ay
    Me.Label1.Width = Me.Label1.Width + (X - PosX) / 50 'PosX la vi tri cua con tro khi di chuyen, tinh toi mep trai Left
  End If
thoat:
End Sub
Kết quả:
Bạn cần đăng nhập để thấy hình ảnh


Công thức đúng về mặt toán học là:

Mã:
Me.Label1.Width = Me.Label1.Width + (X - PosX)
Nhưng khi di chuyển chuột, chương trình bắt tọa độ chuột khá nhạy, Label bị kéo dãn không như ý. Làm chậm quá trình kéo dãn này một cách cố ý, tôi sửa thành :
Mã:
Me.Label1.Width = Me.Label1.Width + (X - PosX) / 50
Bạn có thể tùy ý chỉnh, chia cho 50 hoặc 30 hoặc 20. Trên máy tính của tôi, thử với 50 thì cho kết quả khá như ý.
 
Top