Hallo,
in einem ListIconGadget würde ich gern, wenn der Mauszeiger in einer Zeile mit einem bestimmten Inhalt in einem Feld steht, eine Information über einen ToolTip anzeigen lassen.
Gibt es da eine relativ einfache Umsetzungsmöglichkeit?
Vielen Dank.
ListIconGadget und ToolTip
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:
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