Nach meinen Recherchen ist es laut MSDN lediglich möglich, für Zellen in der ersten Spalte eines ListIconGadget einen ToolTip-Text anzeigen zu lassen. Fluid Byte hat dies in dem folgenden schönen Beispiel demonstriert:
http://www.purebasic.fr/german/viewtopi ... 97&start=2
Natürlich ist es möglich, die augenblickliche Zeile und Spalte des Cursors in einem ListIconGadget zu ermitteln und anzeigen zu lassen. Nur die ToolTip-Anzeige ist wie oben erwähnt nur für Zellen in der ersten Spalte möglich. Ich habe einmal ein Beispiel erstellt, in dem die aktuelle Zeilen- und Spalten-Info in einem Text-Gadget am unteren Rand eingeblendet wird. Dazu habe ich ein Beispiel von Trond aus dem englischen Forum erweitert, das lediglich die Zeilennummer ermittelt (
http://www.purebasic.fr/english/viewtop ... 35&start=1). Dieses Beispiel verwendet einen gänzlich anderen Ansatz als das von Fluid Byte und benötigt keinen Callback:
Code: Alles auswählen
Structure LV_HITTESTINFOEX
Pt.POINT
Flags.L
iItem.L
iSubItem.L
iGroup.L
EndStructure
OpenWindow(0, 0, 0, 264, 344, "ListIconGadget mit Positionsinfo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ListIconGadget(0, 10, 10, WindowWidth(0) - 20, WindowHeight(0) - 40, "Spalte 1", 120, #PB_ListIcon_FullRowSelect)
AddGadgetColumn(0, 1, "Spalte 2", 120)
TextGadget(1, 10, WindowHeight(0) - 20, 100, 15, "")
For i = 1 To 20
AddGadgetItem(0, -1, "Zeile " + Str(i) + ", Spalte 1" + #LF$ + "Zeile " + Str(i) + ", Spalte 2")
Next
Repeat
Select WaitWindowEvent()
Case #WM_MOUSEMOVE
GetWindowRect_(GadgetID(0), @Rect.RECT)
ScreenToClient_(WindowID(0), @Rect)
ScreenToClient_(WindowID(0), @Rect+8)
With Rect
If WindowMouseX(0) > \Left And WindowMouseX(0) < \Right
If WindowMouseY(0) > \Top And WindowMouseY(0) < \Bottom
HitTestInfo.LV_HITTESTINFOEX
HitTestInfo\Pt\x = WindowMouseX(0) - GadgetX(0)
HitTestInfo\Pt\y = WindowMouseY(0) - GadgetY(0)
Row = SendMessage_(GadgetID(0), #LVM_HITTEST, 0, @HitTestInfo)
HitTestInfo\Pt\x = WindowMouseX(0) - GadgetX(0)
HitTestInfo\Pt\y = WindowMouseY(0) - GadgetY(0)
SendMessage_(GadgetID(0), #LVM_SUBITEMHITTEST, 0, @HitTestInfo)
Column = HitTestInfo\iSubItem
If Row = -1 Or Column = -1
SetGadgetText(1, "")
Else
SetGadgetText(1, GetGadgetItemText(0, Row, Column))
EndIf
EndIf
EndIf
EndWith
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver