Maitriser ListIconGadget

Programmation d'applications complexes
PureDev
Messages : 31
Inscription : sam. 25/janv./2014 9:42

Maitriser ListIconGadget

Message par PureDev »

Bonjour.
J'utilise ListIconGadget pour stocker des valeurs (10 colonnes sur 7 lignes).
Cette méthode me permet de les visualiser en direct lors de changement.
Mon problème consiste à pouvoir changer individuellement une valeur.
Je souhaite pouvoir gérer en ligne et colonne chaque valeur individuellement.
Pour modifier modifier une valeur, j'efface tout et je reconstruit le gadget.
Merci pour votre aide.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Maitriser ListIconGadget

Message par kernadec »

bonjour Puredev

j'ai bricolé un truc comme ça a partir de plusieurs codes sources,
Mais il n'est que sous Wndows car il utilise les APIs, Et pour cette raison
si tu utilise la version démo de PureBasic, tu ne pourras pas faire fonctionner ce code.

Sinon voilà le lien: http://www.purebasic.fr/french/viewtopi ... =6&t=12504

Cordialement
Dernière modification par kernadec le sam. 25/janv./2014 11:54, modifié 1 fois.
PureDev
Messages : 31
Inscription : sam. 25/janv./2014 9:42

Re: Maitriser ListIconGadget

Message par PureDev »

Merci pour ta réponse.
J'ai chargé le fichier mis en lien.
Après le copier coler classique, il délivre un message d'erreur, et ne s'execute pas.
Ce code est très long, et sans execution difficile à analyser.
Désolé, mais mon pb reste entier.
Comment changer une seule valeur dans ListIconGadget sans devoir réécrire la totalité du contenu?
Encore merci d'avoir pris le temps de me répondre.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Maitriser ListIconGadget

Message par kernadec »

bonjour
utilise les cliques souris sur la grille :mrgreen:
dans le code le copier coller fonctionne :wink:
quand on édite une case on utilise le copier avec le clique droit et pareil pour le coller.

ce code était pour la version PB 4.60.
Mais la version PB 5.20 ma fait découvrir une petite erreur de tabulation
dans l'ajout d'une ligne pour la sauvegarde du fichier seimes :oops:
c'est corrigé avec une petite mise à jour du code pour PB-521

Cordialement
[réédite]
double clique dans une cellule de la grille du code, tu verras il édite :mrgreen:

ah j'oubliais aussi, il permute les colonne toujours avec la souris et fait le tri des colonnes aussi

mais les structures de ce code sont faites pour gérer la programmation de leurs contenu?

Cordialement
Dernière modification par kernadec le sam. 25/janv./2014 12:31, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Maitriser ListIconGadget

Message par falsam »

Bonjour PureDev et vu que c'est ton premier message, binvenue sur ce forum. Je viens de tester le code de Kernadec et il fonctionne trés bien.

As tu une version de démonstration ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
PureDev
Messages : 31
Inscription : sam. 25/janv./2014 9:42

Re: Maitriser ListIconGadget

Message par PureDev »

Bonjour,
Le code de Kernadec fonctionne très bien. Miles excuses.
Juste problème débogage du à l'antivirus.
Je suis toujous demandeur d'un code plus concis me permettant de changer une valeur dans ListIconGadget,
en atteignant chaque cellule en ligne colonne (comme dans VBA).
Cordialement, dans l'attente de vos réponses.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Maitriser ListIconGadget

Message par falsam »

Tu veux pouvoir atteindre une cellule spécifique par programmation ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
PureDev
Messages : 31
Inscription : sam. 25/janv./2014 9:42

Re: Maitriser ListIconGadget

Message par PureDev »

Oui, c'est exactement cela.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Maitriser ListIconGadget

Message par falsam »

PureDev a écrit :Oui, c'est exactement cela.
Un petit include que tu enregistrera sous le nom de EditListIcon.pbi

Code : Tout sélectionner

;'Edit ListIcon'.

;   Stephen Rodriguez.
;   Created with Purebasic 4.02 for Windows (date:  May 2007).
;   Maintained with PB 4.4.

;   Platforms:  Windows (tested on XP and Vista 32-bit).

;   Licence: DAYLike
;     (Do As You Like with it! - No Warranties!)
;     A credit to myself, whilst nice, is not absolutely necessary.

;*******************************************************************************************

;NOTES.
;
; 1)  Register a listicon gadget to have editable cells by using the command SetListIconEditable(listID).
;     You MUST set up such listicons to have a column zero of zero width.
; 2)  Cells are made editable by intercepting double-clicks, setting the #LVS_EDITLABELS style,
;     repositioning the edit control which Windows uses to edit the labels in column zero and copying
;     the resulting text to the listicon cell.
; 3)  Cells can also be edited by means of the command EditCell().
;*******************************************************************************************

#LVM_SUBITEMHITTEST = #LVM_FIRST+57 
#LVM_GETSUBITEMRECT = #LVM_FIRST+56 
#LVM_GETHEADER = #LVM_FIRST+31
#HDI_ORDER        = $80 
#EC_RIGHTMARGIN = 2

EnableExplicit

CompilerIf Defined(HDITEM, #PB_Structure) = 0
  Structure HDITEM 
    mask.l 
    cxy.l 
    pszText.i 
    hbm.l 
    cchTextMax.l 
    fmt.l 
    lParam.i 
    iImage.l 
    iOrder.l 
  EndStructure 
CompilerEndIf

Structure _LIEdit
  listOldProc.i
  editHwnd.i
  item.i
  subitem.i
  x.i
  y.i
  cx.i
  cy.i
  osVersion.b
  blnIsXPThemes.b
EndStructure

Structure _LIEditGlobals
  osVersion.b
  blnIsXPThemes.b
EndStructure

Declare.i SetListIconEditable(listID)
Declare _LIEEditCell(*liedit._LIEdit, hWnd)
Declare.i _LIEwinProc(hWnd, uMsg, wParam, lParam)
Declare.i _LIEListProc(hWnd, uMsg, wParam, lParam)
Declare.i _LIEeditProc(hWnd, uMsg, wParam, lParam)

Global _LIEditGlobals._LIEditGlobals

;Returns zero if an error.
Procedure.i SetListIconEditable(listID)
  Protected result, parenthWnd, *mem._LIEdit, hWnd, dlv.DLLVERSIONINFO, func, lib
  ;Set globals if appropriate.
    If _LIEditGlobals\osVersion = 0
      _LIEditGlobals\osVersion = OSVersion()
      dlv\cbSize=SizeOf(DLLVERSIONINFO)
      lib=OpenLibrary(#PB_Any,"comctl32.dll")
      If lib
        func=GetFunction(lib,"DllGetVersion")
        If func
          CallFunctionFast(func, dlv)
          If dlv\dwMajorVersion >=6
            _LIEditGlobals\blnIsXPThemes = #True
          EndIf            
        EndIf
        CloseLibrary(lib)
      EndIf
    EndIf
  ;Check that listID references a valid listicon.
    If IsGadget(listID) And GadgetType(listID)=#PB_GadgetType_ListIcon
      hWnd = GadgetID(listID)
      ;Is the listicon already registered?
      If GetProp_(hWnd, "_LIEdit")=0 ;No!
        ;Allocate enough memory for a _LIEdit structure.
          *mem=AllocateMemory(SizeOf(_LIEdit))
        If *mem
          SetWindowLong_(hWnd, #GWL_STYLE, GetWindowLong_(hWnd, #GWL_STYLE)&~#LVS_EDITLABELS)
          ;Set the fields of the _LIEedit structure.
            *mem\listOldProc = SetWindowLong_(hWnd, #GWL_WNDPROC, @_LIEListProc())
          ;Store a pointer to this structure in a window property ofthe listicon.          
            SetProp_(hWnd, "_LIEdit", *mem)
          ;Subclass the parent window if not already through another listicon.
            parenthWnd=GetParent_(hWnd)
            If GetProp_(parenthWnd, "_LIEditOldProc")=0 ;No!
              SetProp_(parenthWnd, "_LIEditOldProc", SetWindowLong_(parenthWnd, #GWL_WNDPROC, @_LIEwinProc()))
            EndIf
          result=1
        EndIf
      EndIf
    EndIf
  ProcedureReturn result
EndProcedure


;Sets the specified cell to be edited.
Procedure EditCell(listID, item, subitem)
  Protected hWnd, *liedit._LIEdit, numrows, numcols
  ;Check that listID references a valid listicon.
    If IsGadget(listID) And GadgetType(listID)=#PB_GadgetType_ListIcon
      ;Check that the listicon is registered as editable.
        hWnd = GadgetID(listID)
        *liedit = GetProp_(hWnd, "_LIEdit")
        If *liedit
          ;Check parameters are in range.
            numrows = CountGadgetItems(listID)
            numcols = SendMessage_(SendMessage_(hWnd,#LVM_GETHEADER,0,0), #HDM_GETITEMCOUNT,0,0)
            If item>=0 And item < numrows And subitem>0 And subitem < numcols
              *liedit\item = item
              *liedit\subitem = subitem
              SetActiveGadget(listID)
              _LIEEditCell(*liedit, hWnd)
            EndIf
        EndIf
    EndIf
EndProcedure


Procedure JustifyColumn(Gadget.l, Column.i, Alignment.i)
  Protected ListIconColumn.LV_COLUMN
  ListIconColumn\mask = #LVCF_FMT
  ListIconColumn\fmt = Alignment
  SendMessage_(GadgetID(Gadget), #LVM_SETCOLUMN, Column, @ListIconColumn)
EndProcedure

Procedure _LIEEditCell(*liedit._LIEdit, hWnd)
  Protected rc.RECT, clientrc.RECT, numCols, headerWnd
  Protected Dim cols.l(0), i, blnFoundZeroColumn
  Protected hdi.HDITEM
  ;Vista themes requires a cheat because it automatically scrolls the listicon to bring the item being edited
  ;into view.
    If _LIEditGlobals\osVersion >= #PB_OS_Windows_Vista And _LIEditGlobals\blnIsXPThemes   
      headerWnd = SendMessage_(hWnd,#LVM_GETHEADER,0,0)
      numCols = SendMessage_(headerWnd, #HDM_GETITEMCOUNT,0,0)
      Dim cols.l(numCols-1)
      SendMessage_(hWnd, #LVM_GETCOLUMNORDERARRAY, numCols, @cols())
      For i = 0 To numcols-1
        If cols(i)
          If cols(i) = *liedit\subItem
            Break
          EndIf
        Else
          blnFoundZeroColumn = 1      
        EndIf
      Next
      i-blnFoundZeroColumn 
      Dim cols(0)
      With hdi
        \mask = #HDI_ORDER 
        \iOrder = i
      EndWith      
      SendMessage_(headerWnd, #HDM_SETITEM, 0, hdi) 
    EndIf
  ;Scroll the listicon if the clicked cell is not entirely visible
  ;*****IF YOU WISH TO RESTRICT WHICH CELLS CAN BE EDITED, THEN PERFORM THE NECESSARY CHECKS HERE
  ;*****ON THE VALUES OF *liedit\item and *liedit\subitem (WHICH INDICATE WHICH CELL IS ABOUT
  ;*****TO BE EDITED) AND RUN THE FOLLOWING LINES FOR THOSE CELLS WHICH ARE TO BE EDITED.
  rc\top = *liedit\subitem
   rc\left = #LVIR_BOUNDS
   SendMessage_(hWnd, #LVM_GETSUBITEMRECT, *liedit\item, rc)
   GetClientRect_(hWnd, clientrc)
  If rc\left < 0 Or (rc\right-rc\left)>=clientrc\right
    SendMessage_(hWnd, #LVM_SCROLL,rc\left,0) 
  Else
     If rc\right > clientrc\right
      SendMessage_(hWnd, #LVM_SCROLL,rc\right-clientrc\right,0) 
     EndIf
   EndIf
  SetWindowLong_(hWnd, #GWL_STYLE, GetWindowLong_(hWnd, #GWL_STYLE)|#LVS_EDITLABELS)
  SendMessage_(hWnd, #LVM_EDITLABEL, *liedit\item, 0)
EndProcedure


;Window proc of the ListIcon parent window.
Procedure.i _LIEwinProc(hWnd, uMsg, wParam, lParam)
  Protected result, oldwinproc, *nmh. NMHDR, listhWnd, edithWnd, *liedit._LIEdit, *lvd.LV_DISPINFO, rc.RECT
  Protected hdi.HDITEM, headerWnd
  Static celltext$
  ;Retrieve the address of the old proc.
    oldwinproc = GetProp_(hWnd, "_LIEditOldProc")
  Select uMsg
    Case #WM_NOTIFY
      *nmh=lParam
      Select *nmh\code
        Case #LVN_BEGINLABELEDIT
          listhWnd = *nmh\hwndFrom
          ;Retrieve the address of the LIEdit structure.
            *liedit = GetProp_(listhWnd, "_LIEdit")
            If *liedit ;Good to go!
              *liedit\editHwnd=0
              ;Get the handle of the edit control used to edit the label.
                edithWnd = SendMessage_(listhWnd, #LVM_GETEDITCONTROL,0,0)
               ;Subclass the edit control.
                SetProp_(edithWnd, "_LIEditOldProc", SetWindowLong_(edithWnd, #GWL_WNDPROC, @_LIEeditProc()))
              ;Set text.
                celltext$=GetGadgetItemText(*nmh\idFrom, *liedit\item, *liedit\subitem)
                SendMessage_(edithWnd, #WM_SETTEXT, 0, celltext$)
                SetGadgetItemText(*nmh\idFrom, *liedit\item, "",*liedit\subitem)
               ;Get bounding rectangle.
                rc\top = *liedit\subitem
                rc\left = #LVIR_BOUNDS 
                SendMessage_(listhWnd, #LVM_GETSUBITEMRECT, *liedit\item, rc) 
                *liedit\x=rc\left
                *liedit\y=rc\top
                *liedit\cx=SendMessage_(listhWnd, #LVM_GETCOLUMNWIDTH, *liedit\subitem,0)
                *liedit\cy=rc\bottom-rc\top
            EndIf

        Case #LVN_ENDLABELEDIT
          listhWnd = *nmh\hwndFrom
          ;Retrieve the address of the LIEdit structure.
            *liedit = GetProp_(listhWnd, "_LIEdit")
            If *liedit ;Good to go!
              *lvd = lParam
              If *lvd\item\pszText
                SetGadgetItemText(*nmh\idFrom, *liedit\item, PeekS(*lvd\item\pszText), *liedit\subitem)
              Else              
                SetGadgetItemText(*nmh\idFrom, *liedit\item, celltext$, *liedit\subitem)
              EndIf
              SetWindowLong_(listhWnd, #GWL_STYLE, GetWindowLong_(listhWnd, #GWL_STYLE)&~#LVS_EDITLABELS)
              If _LIEditGlobals\osVersion >= #PB_OS_Windows_Vista And _LIEditGlobals\blnIsXPThemes 
                With hdi
                  \mask = #HDI_ORDER 
                  \iOrder = 0
                EndWith
                headerWnd = SendMessage_(listhWnd,#LVM_GETHEADER,0,0)
                SendMessage_(headerWnd, #HDM_SETITEM, 0, hdi) 
              EndIf
            EndIf
        Default
          result=CallWindowProc_(oldwinproc, hWnd, uMsg, wParam, lParam)
      EndSelect

    Case #WM_NCDESTROY
      result=CallWindowProc_(oldwinproc, hWnd, uMsg, wParam, lParam)
      RemoveProp_(hWnd, "_LIEditOldProc")
    Default
      result=CallWindowProc_(oldwinproc, hWnd, uMsg, wParam, lParam)
  EndSelect
  ProcedureReturn result
EndProcedure


;Window proc of the ListIcon.
Procedure.i _LIEListProc(hWnd, uMsg, wParam, lParam)
  Protected result, *liedit._LIEdit, PInfo.LVHITTESTINFO, *nmHEADER.HD_NOTIFY
  ;Retrieve the address of the LIEdit structure.
    *liedit = GetProp_(hWnd, "_LIEdit")
  Select uMsg
    Case #WM_NOTIFY
      *nmHEADER = lParam 
      Select *nmHEADER\hdr\code
        Case #HDN_BEGINTRACK, #HDN_BEGINTRACKW ;Prevent column 0 from being resized.
          If *nmHEADER\iItem=0
            result=1
          EndIf
        Case #HDN_ENDTRACK, #HDN_ENDTRACKW
          InvalidateRect_(hWnd,0,1)
        Default
          result=CallWindowProc_(*liedit\listOldProc, hWnd, uMsg, wParam, lParam)
      EndSelect
    Case #WM_LBUTTONDBLCLK
      ;Identify the clicked item
        PInfo\pt\x = lParam&$ffff 
        PInfo\pt\y = (lParam>>16)&$ffff 
        SendMessage_(hwnd, #LVM_SUBITEMHITTEST, 0, PInfo) 
      If PInfo\iItem <> -1 ;A valid cell was clicked.
        *liedit\item = PInfo\iItem
        *liedit\subitem = PInfo\iSubItem
        _LIEEditCell(*liedit, hWnd)
      EndIf
    Case #WM_NCDESTROY
      result=CallWindowProc_(*liedit\listOldProc, hWnd, uMsg, wParam, lParam)
      RemoveProp_(hWnd, "_LIEdit")
      FreeMemory(*liedit)
    Default
      result=CallWindowProc_(*liedit\listOldProc, hWnd, uMsg, wParam, lParam)
  EndSelect
  ProcedureReturn result
EndProcedure


;Window proc of the edit control.
Procedure.i _LIEeditProc(hWnd, uMsg, wParam, lParam)
  Protected result, oldwinproc, *liedit._LIEdit, *wpos.WINDOWPOS
  ;Retrieve the address of the old proc.
    oldwinproc = GetProp_(hWnd, "_LIEditOldProc")
  ;Retrieve the address of the LIEdit structure.
    *liedit = GetProp_(GetParent_(hWnd), "_LIEdit")
  Select uMsg
    Case #WM_ERASEBKGND
      ;A hack in order to clear the default selection of characters.
      result=CallWindowProc_(oldwinproc, hWnd, uMsg, wParam, lParam)
      If *liedit\editHwnd=0
        *liedit\editHwnd = hWnd
        ;Set margins.
        SendMessage_(hWnd, #EM_SETMARGINS, #EC_LEFTMARGIN|#EC_RIGHTMARGIN, 4)
        SendMessage_(hWnd, #EM_SETSEL, -1,0)
      EndIf
    Case #WM_WINDOWPOSCHANGING
      *wpos=lParam
      *wpos\cx=*liedit\cx ;Comment this line to get an edit control which grows with the text.
      *wpos\x=*liedit\x
      If _LIEditGlobals\osVersion >= #PB_OS_Windows_Vista And _LIEditGlobals\blnIsXPThemes 
        *wpos\cy=*liedit\cy
        *wpos\y=*liedit\y
      Else
        *wpos\cy=*liedit\cy+3
        *wpos\y=*liedit\y-2
      EndIf
      result=CallWindowProc_(oldwinproc, hWnd, uMsg, wParam, lParam)
    Case #WM_NCDESTROY
      result=CallWindowProc_(oldwinproc, hWnd, uMsg, wParam, lParam)
      RemoveProp_(hWnd, "_LIEditOldProc")
      ;InvalidateRect_(GetParent_(hWnd),0,0)
    Default
      result=CallWindowProc_(oldwinproc, hWnd, uMsg, wParam, lParam)
  EndSelect
  ProcedureReturn result
EndProcedure
Et un code de test

Code : Tout sélectionner

XIncludeFile "EditListIcon.pbi" 
DisableExplicit 

LoadFont(1, "Arial", 10) 

If OpenWindow(0, 100, 100, 600, 600, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  
    ListIconGadget(1, 5, 5, 490, 390, "", 0, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect) 
    SetGadgetFont(1, FontID(1)) 
    
    
    For i = 1 To 5
      AddGadgetColumn(1, i, "Col "+Str(i), 100)
    Next

    For Row = 1 To 10
      AddGadgetItem(1,-1,"")
      For Col = 1 To 5
        SetGadgetItemText(1, row-1, "", col)
      Next
    Next
    
    SetListIconEditable(1) ;ListIconGadget devient éditable
    JustifyColumn(1, 2, #LVCFMT_RIGHT)
    EditCell(1, 5, 2) ;Focus sur la 6 ligne colonne 2
    
    Repeat 
      Event = WaitWindowEvent() 
    Until Event = #PB_Event_CloseWindow 
  
EndIf
Tu peut atteindre une cellule grace à la fonction EditCell(#Gadget, Ligne, Colonne)
Exemple EditCell(1, 5, 2) ;Focus sur la 6 ligne colonne 2

PS : Fonctionne aussi avec la version 5.21 de Pure basic
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Maitriser ListIconGadget

Message par kernadec »

falsam efface ton dernier post du post cellule, ensuite j'effacerais le mien et ainsi de suite :mrgreen:
PureDev
Messages : 31
Inscription : sam. 25/janv./2014 9:42

Re: Maitriser ListIconGadget

Message par PureDev »

Merci pour ta réponse que j'étuderai avec attention.
Pour l'instant je ne suis plus disponible, mais je te tiendrai informé dès que possible.
Cordialement.
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Maitriser ListIconGadget

Message par MLD »

Il me semble que pour changer le texte dans une cellule PB propose ceci

- GetGadgetItemText() : Renvoie le texte de l'élément spécifié. Si 'Element' = -1, alors le titre de la colonne est renvoyé.
- SetGadgetItemText() : Change le texte de l'élément spécifié. Si 'Element' = -1, alors le titre de la colonne est modifié.
Syntaxe

SetGadgetItemText(#Gadget, Element, Texte$ [, Colonne])
Description

Change le texte de l'élément d'un gadget.
Il suffit ensuite de faire une lecture total de la liste et éventuellement enregistrer cette lecture pour conserver les modifs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Maitriser ListIconGadget

Message par falsam »

Oooops oui si ça se trouve la demande de PureDev était tout simplement d'accéder à une cellule du tableau et pas d'accéder en édition de la cellule !

En relisant son premier message je me rend compte que c'est sa demande effectivement. C'est la faute de Kernadec :mrgreen: hahaha.

Un code plus simple pour changer les données d'une cellule.

Code : Tout sélectionner

Enumeration
  #Mainform
  #MyListIcon
EndEnumeration

Define.l Event, GEvent

Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget

Procedure Open_MainForm()
  OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
  ListIconGadget(#MyListIcon, 10, 10, 480, 380, "Col 1", 200)
  AddGadgetColumn(#MyListIcon, 1, "Col 2", 200)
EndProcedure

Procedure Start()  
  Open_MainForm()
  
  ;Remplissage du tableau pour test
  For n=0 To 9
    AddGadgetItem(#MyListIcon, -1, "Item " + Str(n) + Chr(10) + Str(n))
  Next
  
  ;On va modifier une cellule
  SetGadgetItemText(#MyListIcon, 3, "* CHANGEMENT *", 1) ;Ligne 4, Col 2
EndProcedure

start()

Repeat
  Event  = WaitWindowEvent(10)
  GEvent = EventGadget()
  Select Event
    Case #PB_Event_Gadget
      Select GEvent
          
      EndSelect
        
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Maitriser ListIconGadget

Message par MLD »

@ falsam

+1 :wink: :D
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Maitriser ListIconGadget

Message par falsam »

Je ne reconnais, je suis fautif aussi. J'aurais du lire plus attentivement la demande initiale. Je suis curieux de voir l'épilogue :p
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre