Page 1 sur 1

Intercepter #EN_CHANGE

Publié : ven. 13/mai/2005 17:20
par Progi1984
Avec un editorgadget, comment puis je intercepter un #EN_CHANGE (cad une modification du contenu de l'editorgadget) sans callback ?

Publié : ven. 13/mai/2005 22:37
par Progi1984
J'ai eu une réponse de ElChoni du site anglais :

Code : Tout sélectionner

If OpenWindow(0, 100, 200, 195, 260, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget, "PureBasic Window")=0:End:EndIf
If CreateGadgetList(WindowID())=0:End:EndIf
EditorGadget(0, 0, 0, WindowWidth(), WindowHeight())
SendMessage_(GadgetID(0), #EM_SETEVENTMASK, 0, #ENM_CHANGE|SendMessage_(GadgetID(0), #EM_GETEVENTMASK, 0, 0))
Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_EventGadget
    If EventwParam()>>16=#EN_CHANGE
      Debug "Changed!"
    EndIf
  EndIf
Until EventID=#PB_Event_CloseWindow
End 

Publié : jeu. 24/nov./2005 16:49
par Progi1984
Petite question : j'ai deux editor gadget sur une feuille. comment puis je savoir lql a été modifié ?

Publié : jeu. 24/nov./2005 17:00
par Chris
Normalement, dans la notification #EN_CHANGE, EventlParam() te retourne le handle de l'éditeur, et EventwParam() & $FFFF te retourne l'ID de l'Editor

Code : Tout sélectionner

If OpenWindow(0, 100, 200, 400, 260, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget, "PureBasic Window")=0:End:EndIf 
If CreateGadgetList(WindowID())=0:End:EndIf 
EditorGadget(1, 0, 0, 200, WindowHeight()) 
EditorGadget(2, 200, 0, 200, WindowHeight()) 

SendMessage_(GadgetID(1), #EM_SETEVENTMASK, 0, #ENM_CHANGE|SendMessage_(GadgetID(1), #EM_GETEVENTMASK, 0, 0)) 
SendMessage_(GadgetID(2), #EM_SETEVENTMASK, 0, #ENM_CHANGE|SendMessage_(GadgetID(2), #EM_GETEVENTMASK, 0, 0)) 

Repeat 
  EventID = WaitWindowEvent() 
  If EventID = #PB_EventGadget
    If EventwParam()>>16=#EN_CHANGE
      If EventwParam() & $FFFF = 1
        Debug "Change sur 1" 
      ElseIf EventwParam() & $FFFF = 2
        Debug "Change sur 2" 
      EndIf 
    EndIf
    
  EndIf 
Until EventID=#PB_Event_CloseWindow 
End 

Publié : ven. 25/nov./2005 17:01
par Progi1984
Merci !

Publié : ven. 25/nov./2005 17:07
par Chris
15€

Publié : sam. 26/nov./2005 19:09
par Progi1984
:p

Publié : mer. 22/févr./2006 7:56
par Progi1984
Pourquoi ce code ne marche t il pas avec la V4 ?

Code : Tout sélectionner

If OpenWindow(0, 100, 200, 400, 260, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget, "PureBasic Window")=0:End:EndIf
If CreateGadgetList(WindowID(0))=0:End:EndIf
EditorGadget(1, 0, 0, 200, WindowHeight(0))
EditorGadget(2, 200, 0, 200, WindowHeight(0))

SendMessage_(GadgetID(1), #EM_SETEVENTMASK, 0, #ENM_CHANGE|SendMessage_(GadgetID(1), #EM_GETEVENTMASK, 0, 0))
SendMessage_(GadgetID(2), #EM_SETEVENTMASK, 0, #ENM_CHANGE|SendMessage_(GadgetID(2), #EM_GETEVENTMASK, 0, 0))

Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    If EventwParam()>>16=#EN_CHANGE
      If EventwParam() & $FFFF = 1
        Debug "Change sur 1"
      ElseIf EventwParam() & $FFFF = 2
        Debug "Change sur 2"
      EndIf
    EndIf
   
  EndIf
Until EventID=#PB_Event_CloseWindow
End