[RESOLU] Gérer le Tab et le Return sur un StringGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
fd
Messages : 70
Inscription : mar. 15/mars/2005 21:41
Localisation : Savoie

[RESOLU] Gérer le Tab et le Return sur un StringGadget

Message par fd »

Bonjour,

Voici la problématique : j'utilise un premier String dans lequel il est saisi une valeur (numérique), lorsque le champ est quitté (Tab) le second String est rempli de la valeur du premier.
Dans le second String la sortie par le Tab ou Return est interprétée, ici remplissage du listicon (utilisation du menu_0). La valeur du String_2 +1 alimente le String_1 pour recommencer la saisie suivante. Puis réinitialisation du fonctionnement normal. Or le Tab n'est plus géré dans le String_1.

Je suis obligé d'annuler le fonctionnement des raccourcis, car il y a d'autres gadgets dans mon programme.

Avez-vous déjà vu ce problème ? Voici mon code (désolé c'est un peu long) ... Merci

Code : Tout sélectionner

Enumeration
  #Window_0 : #String_1 : #String_2 : #ListIcon_0 : #Menu_0
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 5, 5, 200,300, "Test",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    StringGadget(#String_1,10,20, 130, 20, "")
    StringGadget(#String_2,10,50, 130, 20, "") 
    ListIconGadget(#ListIcon_0, 10, 100, 130, 150, "String_1", 60, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(#ListIcon_0, 1, "String_2", 60)
  EndIf  
  SetActiveGadget(#String_1)
EndProcedure

Open_Window_0()

Quit = 0

Repeat 
  
  EventID = WaitWindowEvent()
  
  Select EventWindow() 
    Case  #Window_0
      Select EventID 
        Case #PB_Event_Gadget 
          EvtGadget = EventGadget() 
          Select EvtGadget  
            Case #String_1
              If EventType() = #PB_EventType_Focus            
                SendMessage_(GadgetID(#String_1), #EM_SETSEL, Len(GetGadgetText(#String_1)),Len(GetGadgetText(#String_1)))                  
              EndIf  
              If EventType() = #PB_EventType_LostFocus       
                SetGadgetText(#String_2,Trim(GetGadgetText(#String_1)))                
              EndIf
            Case #String_2
              If EventType() = #PB_EventType_Focus 
                SendMessage_(GadgetID(#String_2), #EM_SETSEL, Len(GetGadgetText(#String_2)),Len(GetGadgetText(#String_2)))
                AddKeyboardShortcut(#Window_0,#PB_Shortcut_Return, #Menu_0)
                AddKeyboardShortcut(#Window_0,#PB_Shortcut_Tab, #Menu_0)
              EndIf
          EndSelect 
          
        Case #PB_Event_CloseWindow 
          Quit = 1 
          
        Case #PB_Event_Menu     
            Select EventMenu()     
               Case #Menu_0 
                 RemoveKeyboardShortcut(#Window_0,#PB_Shortcut_Return)
                 RemoveKeyboardShortcut(#Window_0, #PB_Shortcut_Tab)  
                 AddKeyboardShortcut(#Window_0, #PB_Shortcut_Tab, #PB_Shortcut_Tab)                      
                 AddGadgetItem(#ListIcon_0,-1,GetGadgetText(#String_1)+Chr(10)+GetGadgetText(#String_2))
                 Texte.s = Str(Val(GetGadgetText(#String_2))+1)
                 SetGadgetText(#String_2,"")
                 SetGadgetText(#String_1,Texte)
                 SetActiveGadget(#String_1)           
            EndSelect
             
      EndSelect           
  EndSelect 

Until Quit = 1
Dernière modification par fd le mer. 11/janv./2012 7:06, modifié 2 fois.
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: Gérer le Tab et le Return sur un StringGadget

Message par case »

pourquoi utilise tu des shortcuts je ne sais pas si j'ai bien compris ce que tu veux faire...

Code : Tout sélectionner

Enumeration
  #Window_0 : #String_1 : #String_2 : #ListIcon_0 : #Menu_0
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 5, 5, 200,300, "Test",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    StringGadget(#String_1,10,20, 130, 20, "")
    StringGadget(#String_2,10,50, 130, 20, "")
    ListIconGadget(#ListIcon_0, 10, 100, 130, 150, "String_1", 60, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(#ListIcon_0, 1, "String_2", 60)
  EndIf 
  SetActiveGadget(#String_1)
EndProcedure

Open_Window_0()

Quit = 0

Repeat
 
  EventID = WaitWindowEvent()
 
  Select EventWindow()
    Case  #Window_0
        ;Debug EventID
      Select EventID
        Case #PB_Event_Gadget
          EvtGadget = EventGadget()
          Select EvtGadget 
            
            Case #String_1
              If EventType() = #PB_EventType_Focus           
                SendMessage_(GadgetID(#String_1), #EM_SETSEL, Len(GetGadgetText(#String_1)),Len(GetGadgetText(#String_1)))                 
              EndIf 
              If EventType() = #PB_EventType_LostFocus       
                SetGadgetText(#String_2,Trim(GetGadgetText(#String_1)))               
              EndIf
            Case #String_2
              If EventType() = #PB_EventType_Focus
                SendMessage_(GadgetID(#String_2), #EM_SETSEL, Len(GetGadgetText(#String_2)),Len(GetGadgetText(#String_2)))
                ;AddKeyboardShortcut(#Window_0,#PB_Shortcut_Return, #Menu_0)
                ;AddKeyboardShortcut(#Window_0,#PB_Shortcut_Tab, #Menu_0)
              EndIf
              If EventType() = #PB_EventType_LostFocus       
                 AddGadgetItem(#ListIcon_0,-1,GetGadgetText(#String_1)+Chr(10)+GetGadgetText(#String_2))
                 Texte.s = Str(Val(GetGadgetText(#String_2))+1)             
                 SetGadgetText(#String_2,"")
                 SetGadgetText(#String_1,Texte)
                 SetActiveGadget(#String_1)    
              EndIf
          EndSelect
         
        Case #PB_Event_CloseWindow
          Quit = 1                      
      EndSelect           
  EndSelect

Until Quit = 1
Dernière modification par case le mer. 11/janv./2012 1:07, modifié 1 fois.
ImageImage
fd
Messages : 70
Inscription : mar. 15/mars/2005 21:41
Localisation : Savoie

Re: Gérer le Tab et le Return sur un StringGadget

Message par fd »

Heu. Pour passer d'un champ de saisie à l'autre en gérant aussi la touche Entrée.
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: Gérer le Tab et le Return sur un StringGadget

Message par case »

ah mais pour le tab c'est pas la peine de le gerer vu qu'il est deja gere nativement.. le return je crois qu'il y a un truc... faut que je fouine mes vieux codes j'avais fait un truc il me semble...
ImageImage
fd
Messages : 70
Inscription : mar. 15/mars/2005 21:41
Localisation : Savoie

Re: [RESOLU] Gérer le Tab et le Return sur un StringGadget

Message par fd »

Merci.
J'ai séparé la gestion de la touche Entrée avec addkey... et mis la gestion du Tab dans LostFocus. Cela fonctionne. Il faut juste que je ne traite pas le LostFocus lorsque celui ci a été provoqué par la touche Entrée.
Répondre