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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

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

Message 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 :)
Dernière modification par blendman le lun. 14/mars/2016 11:04, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message par falsam »

RemoveKeyboardShortcut() ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

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

Message 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 :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

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

Message 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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

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

Message par blendman »

@falsam : yep, ça devrait fonctionner comme ça :)
Merci.

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