Comme écrit dans mon message, lorsque je teste mon code avec le débuggeur activé, j'ai un doublon d'information en cliquant sur une ligne du ListIconGadget.
Le but étant qu'en cliquant sur une ligne cela mette le nom dans le stringGadget.
Cela fonctionne très bien hormis ce petit problème.
Au début j'ai cru que c'était parce que j'avais 2 colonnes, j'en ai donc ajouté une 3ème, mais cela ne vient pas de ça.
Voici le code :
Code : Tout sélectionner
EnableExplicit
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Window_main
EndEnumeration
;}
;{ Gadgets
Enumeration
#ListIcon
#String
EndEnumeration
;}
Define.l Element, Event, EventWindow, EventGadget, EventType, EventMenu
Define Resultat$
;}
Procedure OpenWindow_Window_main()
If OpenWindow(#Window_main, 100, 100, 362, 162, "Test", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
ListIconGadget(#ListIcon, 8, 8, 344, 120, "Nom", 100, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(#ListIcon, 1, "Adresse", 200)
;AddGadgetColumn(#ListIcon, 2, "Bidon", 50) ; Test avec une 3ème colonne.
StringGadget(#String, 8, 136, 344, 20, "")
; Sans image
AddGadgetItem(#ListIcon, -1, "Toto" + Chr(10) + "24 rue truc")
AddGadgetItem(#ListIcon, -1, "Pierre" + Chr(10) + "104 rue du général")
AddGadgetItem(#ListIcon, -1, "Sylvain" + Chr(10) + "55 avenue bidule")
AddGadgetItem(#ListIcon, -1, "Marcel" + Chr(10) + "12 chemin de la patte verte")
; Avec image
; If LoadImage(0, "directory32x32.bmp") ; changez le chemin/fichier contenant votre image 32x32 pixel
;
; AddGadgetItem(#ListIcon, -1, "Toto" + Chr(10) + "24 rue truc", ImageID(0))
; AddGadgetItem(#ListIcon, -1, "Pierre" + Chr(10) + "104 rue du général", ImageID(0))
; AddGadgetItem(#ListIcon, -1, "Sylvain" + Chr(10) + "55 avenue bidule", ImageID(0))
; AddGadgetItem(#ListIcon, -1, "Marcel" + Chr(10) + "12 chemin de la patte verte", ImageID(0))
;
; EndIf
EndIf
EndProcedure
OpenWindow_Window_main()
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #ListIcon
; Permet de savoir sur quelle ligne on a cliqué (commence à 0)
Element = GetGadgetState(#ListIcon)
Debug Element ;;;;;;;;;;;;;;;;; Ici il y a le fameux doublon d'information.
;Debug GetGadgetState(#ListIcon)
; On affiche le texte de la 1ère colonne cliquée,
; sauf si on clique sur une ligne vide.
If Element <> -1
Resultat$ = GetGadgetItemText(#ListIcon, Element)
Debug Resultat$
; On envoi le résultat dans le string Gadget.
SetGadgetText(#String, Resultat$)
Else
; Si on clique sur une ligne vide, on vide le champ du string Gadget
SetGadgetText(#String, "")
EndIf
;ElseIf EventGadget = #String
EndIf
; ////////////////////////
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_main
CloseWindow(#Window_main)
Break
EndIf
EndSelect
ForEver
;
;}
PS : est-ce que c'est propre ma façon de faire avec le Define Resultat$ ?