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

.
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 ^^