[Windows] ListIconGadget Selectionner une cellule

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

[Windows] ListIconGadget Selectionner une cellule

Message par Mesa »

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.

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
Mesa.