۲۷-فروردین-۱۳۸۸, ۱۵:۵۱:۱۷
۲۷-فروردین-۱۳۸۸, ۱۶:۴۲:۱۹
يه راه هست که من خودم هم استفاده کردم يک بار
شايد راه های بهتری هم وجود دشته ولی این هم جواب ميده
واسه اینکه بتونی تشخيص بدی که ماوس روی کدوم ایندکس از ليست هستش از SendMessage استفاده ميکنی و ....
شايد راه های بهتری هم وجود دشته ولی این هم جواب ميده
واسه اینکه بتونی تشخيص بدی که ماوس روی کدوم ایندکس از ليست هستش از SendMessage استفاده ميکنی و ....
کد:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const LVM_FIRST = &H1000&
Const LVM_HITTEST = LVM_FIRST + 18
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type LVHITTESTINFO
pt As POINTAPI
flags As Long
iItem As Long
iSubItem As Long
End Type
Dim TT As CTooltip
Dim m_lCurItemIndex As Long
Private Sub Form_Load()
With ListView1.ListItems
.Add Text:="Test item #1"
.Add Text:="Test item #2"
.Add Text:="Test item #3"
End With
Set TT = New CTooltip
TT.Style = TTBalloon
TT.Icon = TTIconInfo
End Sub
Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim lvhti As LVHITTESTINFO
Dim lItemIndex As Long
lvhti.pt.x = x / Screen.TwipsPerPixelX
lvhti.pt.y = y / Screen.TwipsPerPixelY
lItemIndex = SendMessage(ListView1.hwnd, LVM_HITTEST, 0, lvhti) + 1
If m_lCurItemIndex <> lItemIndex Then
m_lCurItemIndex = lItemIndex
If m_lCurItemIndex = 0 Then ' no item under the mouse pointer
TT.Destroy
Else
TT.Title = "Multiline tooltip"
TT.TipText = ListView1.ListItems(m_lCurItemIndex).Text
TT.Create ListView1.hwnd
End If
End If
End Sub
۲۷-فروردین-۱۳۸۸, ۱۶:۵۰:۵۳
کد:
ListView1.ListItems(1).ToolTipText = "Ur Text"
ListView1.ListItems(1).ListSubItems(1).ToolTipText = "Ur Text"
ListView1.ListItems(1).ListSubItems(2).ToolTipText = "Ur Text"
ListView1.ListItems(1).ListSubItems(3).ToolTipText = "Ur Text"
۲۷-فروردین-۱۳۸۸, ۱۹:۵۳:۱۹
ممنون جناب PouriaAmid عالی بود
من یه سمپل درست کردم و کدها توی اون گذاشتم اما ظاهرا یه جاهاش ایراد داره
نمیدونم مشکلم کجاست میتونی برام یه سمپل بزاری
با تشکر
من یه سمپل درست کردم و کدها توی اون گذاشتم اما ظاهرا یه جاهاش ایراد داره
نمیدونم مشکلم کجاست میتونی برام یه سمپل بزاری
با تشکر
۲۷-فروردین-۱۳۸۸, ۲۰:۰۰:۲۸
کد رو بريز توی فرم يه ListView هم بزار بعد اجرا کن
۲۷-فروردین-۱۳۸۸, ۲۰:۱۶:۱۹
(۲۷-فروردین-۱۳۸۸, ۱۶:۴۲:۱۹)PouriaAmid نوشته است: [ -> ]يه راه هست که من خودم هم استفاده کردم يک بار
شايد راه های بهتری هم وجود دشته ولی این هم جواب ميده
واسه اینکه بتونی تشخيص بدی که ماوس روی کدوم ایندکس از ليست هستش از SendMessage استفاده ميکنی و ....
کد:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const LVM_FIRST = &H1000&
Const LVM_HITTEST = LVM_FIRST + 18
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type LVHITTESTINFO
pt As POINTAPI
flags As Long
iItem As Long
iSubItem As Long
End Type
Dim TT As CTooltip
Dim m_lCurItemIndex As Long
Private Sub Form_Load()
With ListView1.ListItems
.Add Text:="Test item #1"
.Add Text:="Test item #2"
.Add Text:="Test item #3"
End With
Set TT = New CTooltip
TT.Style = TTBalloon
TT.Icon = TTIconInfo
End Sub
Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim lvhti As LVHITTESTINFO
Dim lItemIndex As Long
lvhti.pt.x = x / Screen.TwipsPerPixelX
lvhti.pt.y = y / Screen.TwipsPerPixelY
lItemIndex = SendMessage(ListView1.hwnd, LVM_HITTEST, 0, lvhti) + 1
If m_lCurItemIndex <> lItemIndex Then
m_lCurItemIndex = lItemIndex
If m_lCurItemIndex = 0 Then ' no item under the mouse pointer
TT.Destroy
Else
TT.Title = "Multiline tooltip"
TT.TipText = ListView1.ListItems(m_lCurItemIndex).Text
TT.Create ListView1.hwnd
End If
End If
End Sub
من کدها رو توی یه برنامه گذاشتم اما ظاهرا ! یه جاهاییش مشکل داره
ممکنه راهنماییم کنی
با تشکر