[Windows] ListIconGadget Selectionner une cellule
Publié : sam. 10/nov./2012 12:19
Ce genre de code doit se trouver quelque part, mais impossible d'en trouver un alors voici un code qui permet de sélectionner le contenu d'une seule cellule dans un LisIconGadget.
Mesa.
Code : Tout sélectionner
oldItem = -1 ;===>ligne
oldSubItem = -1 ;===>colonne
If OpenWindow(0, 100, 100, 600, 330, "ListIconGadget Cellules", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
;Ajout du ListIcon
ListIcon_0=ListIconGadget(#PB_Any , 5, 5, 595, 300, "", 0, #PB_ListIcon_GridLines)
;Remplissage du ListIcon 10 colonnes
For i = 1 To 10
AddGadgetColumn(ListIcon_0, i, "Colonne "+Str(i), 150)
Next
For row = 1 To 10
AddGadgetItem(ListIcon_0,-1,"")
For col = 1 To 100
SetGadgetItemText(ListIcon_0, row-1, "Ligne "+Str(row-1)+", Colonne "+Str(col), col)
Next
Next
SetActiveGadget(ListIcon_0)
Repeat
Event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
;Cas du ListIcon
Case ListIcon_0
If EventType() = #PB_EventType_LeftClick ;Clic Gauche
Cellule.LVHITTESTINFO
hWnd = GadgetID(ListIcon_0)
;Position du curseur sur l'écran
GetCursorPos_(@Cellule\pt)
;Transformation coordonnées écran->ListIcon
MapWindowPoints_(0, hWnd, @Cellule\pt, 1)
;Quelle cellule sous le curseur ?
SendMessage_(hWnd, #LVM_SUBITEMHITTEST, 0, Cellule)
;Debug Cellule\iItem ;===>ligne
;Debug Cellule\iSubItem ;===>colonne
;Renvoie -1 en cas d'échec
;Affichage de la cellule en surbrillance
If Cellule\iItem<>-1
If oldItem <> -1
SetGadgetItemColor(ListIcon_0, oldItem, #PB_Gadget_BackColor, #White,oldSubItem)
SetGadgetItemColor(ListIcon_0, oldItem, #PB_Gadget_FrontColor, 0,oldSubItem)
EndIf
Debug GetGadgetItemText(ListIcon_0,Cellule\iItem , Cellule\iSubItem)
oldItem = Cellule\iItem
oldSubItem = Cellule\iSubItem
SetGadgetItemColor(ListIcon_0, oldItem, #PB_Gadget_BackColor, GetSysColor_(#COLOR_HIGHLIGHT),oldSubItem)
SetGadgetItemColor(ListIcon_0, oldItem, #PB_Gadget_FrontColor, GetSysColor_(#COLOR_HIGHLIGHTTEXT),oldSubItem)
EndIf
EndIf
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf