Page 1 sur 1

[Windows] ListIconGadget Selectionner une cellule

Publié : sam. 10/nov./2012 12:19
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.