Page 1 sur 1

[ok] Shortcut et Stringgadget() (ctrl+V)

Publié : sam. 12/mars/2016 15:38
par blendman
Salut

Je cherche un idée simple pour désactiver les ShortCut ajoutés avec AddKeyboardShortcut() lorsque je suis sur un gadget (par exemple un stringgadget()), pour pouvoir faire un copier-coller d'un texte sur ce gadget par exemple.

Auriez-vous une idée ou une astuce pour ça ?

Merci :)

Re: Shortcut et Stringgadget() (ctrl+V)

Publié : sam. 12/mars/2016 15:45
par falsam
RemoveKeyboardShortcut() ?

Re: Shortcut et Stringgadget() (ctrl+V)

Publié : sam. 12/mars/2016 15:51
par blendman
oui c'est ce que je fais.

En fait, ce que j'aimerai c'est une idée comme ceci :

Code : Tout sélectionner

Repeat 

 Repeat
      
      EventID     = WaitWindowEvent(1)
      EventGadget = EventGadget()
      EventMenu   = EventMenu()
      EventWindow = EventWindow()    
      EventType   = EventType()

     If GetActiveGadget() = -1
          If Oldgadget <> -1
              oldGadget = -1
              SetShortCut(1) ; on ajoute les raccourcis clavier
          EndIf
      Else 
          If oldgadget = -1
              oldGadget = GetActiveGadget()
              SetShortCut(0) ; on supprime les raccourcis clavier
          EndIf
      EndIf

  Until EventID = 0 

Until quit >= 1
Le problème c'est que ça ne marche pas, car parfois, un gadget reste actif et donc les raccourcis clavier sont alors inactifs.
Je me demandai s'il existait un moyen simple pour faire ça, mais j'ai des doutes.
je vais devoir vérifier pour la plupart des gadgets (genre string) si je suis dessus pour désactiver les raccourcis ou si je suis sur le canvas principal (utilisant mes raccourcis) pour activer les raccourcis. Bref, la berdouze :D.
A moins qu'il existe une technique magique :)

Re: Shortcut et Stringgadget() (ctrl+V)

Publié : sam. 12/mars/2016 16:06
par falsam
Est ce que ton association canvas/gadgets autres est sur ce schéma là ?

Code : Tout sélectionner

Enumeration Window
  #MainForm
EndEnumeration

Enumeration Gadget
  #G1 = 1
  #G9 = 9
  #Canvas
EndEnumeration

Procedure SetShortcut()
  Select EventType()
    Case #PB_EventType_Focus
      Debug "Focus"
      ; on supprime les raccourcis clavier
      
    Case #PB_EventType_LostFocus
      ; on ajoute les raccourcis clavier
      Debug "Lost focus"
  EndSelect
EndProcedure

If OpenWindow(#MainForm, 0, 0, 1024, 768, "New Project", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)      
  
  ;Quelques gadgets
  For Gadget  = #G1 To #G9
    StringGadget(Gadget, 10, Gadget * 30, 200, 22, "")
  Next
  
  CanvasGadget(#Canvas, 230, 30, 600, 500, #PB_Canvas_Keyboard)
  
  BindGadgetEvent(#Canvas, @SetShortCut())
  Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf

Re: Shortcut et Stringgadget() (ctrl+V)

Publié : sam. 12/mars/2016 17:07
par microdevweb
Moi personnellement je ne jouerais pas sur les raccourcis, mais dans la gestion de menu avec un flag

Exemple copier / coller

Code : Tout sélectionner

Enumeration 
    #mainForm
EndEnumeration
Global gPasteOn.b=#False
Procedure Exit()
    End
EndProcedure
Procedure MenuManager()
    Select EventMenu()
        Case $FF
            Debug "Copie"
            gPasteOn=#True
        Case $FF1
            ; Si rien de copier sort
            If Not gPasteOn: ProcedureReturn :EndIf
            Debug "Coller"
            gPasteOn=#False
    EndSelect
EndProcedure
Procedure OpenMainForm()
    Protected flag=#PB_Window_SystemMenu|#PB_Window_ScreenCentered
    OpenWindow(#mainForm,0,0,800,600,"Teste",flag)
    AddKeyboardShortcut(#mainForm,#PB_Shortcut_Control|#PB_Shortcut_C,$FF)
    AddKeyboardShortcut(#mainForm,#PB_Shortcut_Control|#PB_Shortcut_V,$FF1)
    BindEvent(#PB_Event_CloseWindow,@Exit(),#mainForm)
    BindEvent(#PB_Event_Menu,@MenuManager(),#mainForm)
EndProcedure
OpenMainForm()
Repeat:WaitWindowEvent():ForEver

Re: Shortcut et Stringgadget() (ctrl+V)

Publié : sam. 12/mars/2016 18:08
par blendman
@falsam : yep, ça devrait fonctionner comme ça :)
Merci.

@Microdevweb : mais là, tu ne gères pas de canvas sur ton exemple ^^