Page 1 sur 1

GadgetListIcon éditable : un besoin incontournable !!!

Publié : mar. 07/sept./2004 12:59
par Golfy
Je sais que Purebasic est plus orienté "jeux" (2D, 3D sprites, Mods, etc) qu'applicatif... toutefois il me semble nécessaire de pouvoir éditer les lignes d'un ListIcon en cliquant ou double-cliquant dessus.
Je ne suis apparemment pas le seul a avoir ce problème (vraiment gênant et dont la "rustine" est assez complexe à mettre en oeuvre) cf.
http://purebasic.hmt-forum.com/viewtopic.php?t=1405 .

Y'a-t'il une chance que mon appel soit entendu :roll:

Publié : mar. 07/sept./2004 14:54
par Le Soldat Inconnu
il y a un truc qui m'échappe, c'est ça que tu veux faire ?

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.9
; 
; Explication du programme :
; Montre comment gérer le double clic dans une ListIconGadget


; Création de la fenêtre et dela GadgetList
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "ListIconGadget") = 0 Or CreateGadgetList(WindowID()) = 0
  End
EndIf

; On crée un ListIconGadget
ListIconGadget(0, 0, 0, 300, 300, "Titre", 250, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)

; On rempli le ListIconGadget
For n = 1 To 10
  AddGadgetItem(0, -1, "Texte " + Str(n))
Next

Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    Select EventGadgetID() ; boutons, zone de texte, ...
      Case 0
        Pos = GetGadgetState(0) ; On récupère la position de l'élément sélectionné
        If Pos >= 0 ; Si un élément est sélectionné
          If EventType() = #PB_EventType_LeftDoubleClick ; Si on a fait un double clic
            Txt.s = InputRequester("ListIconGadget", "Entrez le nouveau texte :", GetGadgetItemText(0, Pos, 0))
            SetGadgetItemText(0, Pos, Txt, 0)
          EndIf
        EndIf
    EndSelect
  EndIf
  
Until Event = #PB_EventCloseWindow

End

Publié : mar. 07/sept./2004 16:26
par Oliv
Nan le Soldat ce qui serait bien c'est de changer le texte juste en cliquant sur la cellule, et c'est vrai que ce serait vraiment pratique :D

Publié : mar. 07/sept./2004 16:36
par julien
Ah oui, plus que pratique.... indispensable...

Publié : mar. 07/sept./2004 19:43
par Flype
pour aussi mais a juger de l'exemple disponible dans codearchive c compliqué

Publié : mar. 07/sept./2004 20:28
par comtois
J'ai voté oui , même si je n'utilise pas les listIconGadget pour l'instant.

Quand je m'y mettrai , j'aimerais bien que ça existe :)

Trop facile...

Publié : mer. 08/sept./2004 8:28
par Golfy
Le Soldat Inconnu a écrit :il y a un truc qui m'échappe, c'est ça que tu veux faire ?

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.9
; 
; Explication du programme :
; Montre comment gérer le double clic dans une ListIconGadget


; Création de la fenêtre et dela GadgetList
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "ListIconGadget") = 0 Or CreateGadgetList(WindowID()) = 0
  End
EndIf

; On crée un ListIconGadget
ListIconGadget(0, 0, 0, 300, 300, "Titre", 250, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)

; On rempli le ListIconGadget
For n = 1 To 10
  AddGadgetItem(0, -1, "Texte " + Str(n))
Next

Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    Select EventGadgetID() ; boutons, zone de texte, ...
      Case 0
        Pos = GetGadgetState(0) ; On récupère la position de l'élément sélectionné
        If Pos >= 0 ; Si un élément est sélectionné
          If EventType() = #PB_EventType_LeftDoubleClick ; Si on a fait un double clic
            Txt.s = InputRequester("ListIconGadget", "Entrez le nouveau texte :", GetGadgetItemText(0, Pos, 0))
            SetGadgetItemText(0, Pos, Txt, 0)
          EndIf
        EndIf
    EndSelect
  EndIf
  
Until Event = #PB_EventCloseWindow

End
Hélas, non ! cette solution est moins encombrante mais n'est pas aussi élégante. Le comportement recherché serait plutôt celui d'un tableur : tu cliques une cellule et tu tapes ton texte...

Merci quand même pour l'aide, surtout que j'ai remarqué que tu es un membre très actif :)