Page 1 sur 1

ListIcon et clics sur les colonnes

Publié : lun. 14/déc./2015 21:05
par Joubarbe
Salut,

Il y a déjà des sujets sur les tris d'une colonne lorsqu'on clique sur son titre, mais ils sont tous très vieux !
Donc la question, pour la généraliser un peu, serait de savoir s'il existe un moyen de renvoyer un évènement lorsqu'on clique sur une colonne d'une ListIcon ?

De sorte qu'avec l'évènement, je puisse tester la position de la souris, la largeur des colonnes, et savoir ainsi sur quelle colonne le clic a été effectué.

... ou alors tout simplement un truc magique qui a été ajouté dans les dernières versions de PB et que j'ignore totalement !

Merci.

Re: ListIcon et clics sur les colonnes

Publié : lun. 14/déc./2015 22:48
par Shadow
Salut,

Tu veux savoir sur quel ligne et colonne tu clique c'est ça ?
Sur quel cellules en gros ?
Ou même savoir ça sans même cliqué mais quand la souris est dessus ?

Re: ListIcon et clics sur les colonnes

Publié : lun. 14/déc./2015 23:03
par falsam
Shadow a écrit : Tu veux savoir sur quel ligne et colonne tu clique c'est ça ?
Sur quel cellules en gros ?
Ou même savoir ça sans même cliqué mais quand la souris est dessus ?
Si tu lis bien ce n'est rien de tout ça :wink:
un moyen de renvoyer un évènement lorsqu'on clique sur une colonne d'une ListIcon ?

Re: ListIcon et clics sur les colonnes

Publié : lun. 14/déc./2015 23:30
par falsam
Une solution

Code : Tout sélectionner

Enumeration Window
  #MainForm
EndEnumeration

Enumeration Gadget
  #MyTable
EndEnumeration


Procedure MainFormCallBack(hwnd, msg, wParam, lParam)
  Protected *pnmhdr.NMHDR, *pnmlistview.NMLISTVIEW
  
  Select msg    
    Case #WM_NOTIFY
      
      *pnmhdr = lParam
      
      If *pnmhdr\code = #LVN_COLUMNCLICK           
        *pnmlistview = lParam
        If *pnmlistview\hdr\hwndFrom = GadgetID(#MyTable) 
                    
          ;Quel est le numéro de la colonne cliquée ?
          NumCol = *pnmlistview\iSubItem
          Debug NumCol
          
          ;Quel est la largeur de la colonne cliquée 
          Debug GetGadgetItemAttribute(#MyTable, 0, #PB_ListIcon_ColumnWidth, NumCol)
          
        EndIf
      EndIf
      
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure


If OpenWindow(#MainForm, 0, 0, 800, 600, "New Project", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)      
  ListIconGadget(#MyTable, 10, 10, 780, 580, "Col 1", 150, #PB_ListIcon_FullRowSelect)
  AddGadgetColumn(#MyTable, 1, "Col 2", 300)
  
  ;Jeu test pour remplir un peu la table
  For Row = 0 To 9
    AddGadgetItem(#MyTable, -1, "Item " + Str(Row) + Chr(10) + "Value " + Str(Row))
  Next
  
  SetWindowCallback(@MainFormCallBack())
    
  Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf

Re: ListIcon et clics sur les colonnes

Publié : mar. 15/déc./2015 9:07
par Joubarbe
Hmm, ok merci !

Ce serait définitivement bien que l'équipe de PB considère un moyen interne d'interagir avec le titre des colonnes sur tous les OS :)

Re: ListIcon et clics sur les colonnes

Publié : lun. 11/janv./2016 14:48
par Shardik
Joubarbe a écrit :Ce serait définitivement bien que l'équipe de PB considère un moyen interne d'interagir avec le titre des colonnes sur tous les OS :)
Une solution pour Linux, MacOS et Windows: :wink:
http://www.purebasic.fr/english/viewtop ... 36&start=4