Cách xuống dòng trong ControlTipText của VBA

Liên hệ QC

nhattan67

Thành viên mới
Tham gia
11/1/08
Bài viết
35
Được thích
3
Xin cho em hỏi : em muốn tạo một chú thích : khi rê chuột vào mục Option của chương trình thì Tiptext hiện ra để chỉ dẫn nhưng có điều nếu chỉ dẫn dài quá thì không thể xuống dòng được. Vậy làm cách nào để cho xuống dòng được.
chẳng hạn:
Optmhoc.ControlTipText = "giai phap excel.com" & Chr(13) & "Hoc hoi, trao doi them kien thuc, them kinh nghiem."
em làm như trên nhưng lại hiện ra:
"giai phap excel.com Hoc hoi, trao doi them kien thuc, them kinh nghiem."
nó không xuống dòng.
Xin các anh chị hãy chị giúp.
Tân67.
 
nhattan67 đã viết:
Xin cho em hỏi : em muốn tạo một chú thích : khi rê chuột vào mục Option của chương trình thì Tiptext hiện ra để chỉ dẫn nhưng có điều nếu chỉ dẫn dài quá thì không thể xuống dòng được. Vậy làm cách nào để cho xuống dòng được.
chẳng hạn:
Optmhoc.ControlTipText = "giai phap excel.com" & Chr(13) & "Hoc hoi, trao doi them kien thuc, them kinh nghiem."
em làm như trên nhưng lại hiện ra:
"giai phap excel.com Hoc hoi, trao doi them kien thuc, them kinh nghiem."
nó không xuống dòng.
Xin các anh chị hãy chị giúp.
Tân67.

Cũng nan giải đấy nhỉ. Tuy nhiên nếu chỉ cần đáp ứng yêu cầu giống tooltip thì thử cách này xem View attachment tooltip.xls
 
Upvote 0
Có lẻ do ControlTipText được thiết kế chỉ cho những Tip ngắn mà thôi.
Còn nếu bạn vẫn muốn làm thì bạn có thể dùng Label thay thế như ví dụ của khongbietso, dựa vào sự kiện Mouse_Move.
Tôi tham khảo thấy có một ví dụ này, nhưng họ cũng chưa tìm ra câu trả lời:
http://www.dbforums.com/archive/index.php/t-545325.html
Mã:
'Start code..
Private Sub ControlTipText(lst As ListBox, Button As Integer, X As
Single, _
Y As Single)

Dim lXPoint As Long
Dim lYPoint As Long
Dim lIndex As Long

If Button = 0 Then ' if no button was pressed
lXPoint = CLng(X / TwipsPerPixelX)
lYPoint = CLng(Y / TwipsPerPixelY)

With lst
'Initiate enter event to set focus to the listbox.
'Note. lstHwnd is set in Enter event using the
'apiGetFocus API call.
lst_Enter

'Call SendMessage to find the index of item that
'the mouse is above.
'Problem occurs here.
lIndex = SendMessage(lstHwnd, LB_ITEMFROMPOINT, 0, _
ByVal ((lYPoint * 65536) + lXPoint))

' show tip or clear last one
If (lIndex >= 0) And (lIndex <= .ListCount) Then
lst.ControlTipText = .list(lIndex)
Else
.ControlTipText = ""
End If
End With '(lst)
End If '(button=0)

End Sub

Private Function TwipsPerPixelX() As Single
'Returns the width of a pixel, in twips.

Dim lngDC As Long

lngDC = GetDC(HWND_DESKTOP)
TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX)
ReleaseDC HWND_DESKTOP, lngDC

End Function

Private Function TwipsPerPixelY() As Single
'Returns the height of a pixel, in twips.

Dim lngDC As Long

lngDC = GetDC(HWND_DESKTOP)
TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY)
ReleaseDC HWND_DESKTOP, lngDC

End Function
'End code
Theo tác giả trong VB6 thì được còn trong VBA thì không được. Và cũng chưa tìm được câu trả lời.

Lê Văn Duyệt
 
Upvote 0
Cám ơn các sư huynh đã cố gắng!

Cám ơn! Hãy là " Lá lành đùm lá rách" các sư huynh nhé
Nhật Tân
 
Upvote 0
Web KT
Back
Top Bottom