sous classement

Partagez votre expérience de PureBasic avec les autres utilisateurs.
frederic
Messages : 22
Inscription : dim. 07/août/2005 9:40

sous classement

Message par frederic »

Bonjour, je vous propose ici un exemple de sous classement d'une editbox pour afficher un numéro de téléphone quand on appuie sur entrée

Code : Tout sélectionner

;------------------------------------------------------
;Window et Gadget
;------------------------------------------------------
Enumeration
  #MainForm
  #EdtTelephone
EndEnumeration
;------------------------------------------------------
;Variables globales
;------------------------------------------------------
;handle de la fenetre
Global hWnd.l
;handle de l'editbox (peut etre recupere avec gadgetid())
Global hEdtTelephone.l
;proc normale de l'editbox
Global EdtTelephoneOldProc.l

Global Quit.b = #False
;------------------------------------------------------
;Procedure de sous classement
;------------------------------------------------------
Procedure EdtTelephoneWndProc(WindowID, Message, wParam, lParam)

  Select Message
    Case #WM_KEYDOWN
      chaine$=GetGadgetText(#EdtTelephone)
      If wParam = #VK_RETURN
        If Len(chaine$) >8
          SetGadgetText(#EdtTelephone, Mid(chaine$, 0, 2) +"-"+Mid(chaine$, 3, 2) +"-" +Mid(chaine$, 5, 2)  +"-" +Mid(chaine$,7, 2) +"-" +Mid(chaine$, 9, 2) )
          SendMessage_(WindowID,#EM_SETSEL,0,15) 
          ProcedureReturn 0
        EndIf
      EndIf
  EndSelect
  
  ProcedureReturn CallWindowProc_(EdtTelephoneOldProc, WindowID, Message, wParam, lParam) 
EndProcedure
;------------------------------------------------------
;Debut de programme
;------------------------------------------------------
hWnd = OpenWindow(#MainForm, 0, 0, 220, 40, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget,"SousClassement")
If hWnd
  If CreateGadgetList(WindowID(#MainForm))
     hEdtTelephone = StringGadget(#EdtTelephone, 10,10, 200, 20,"", #PB_String_Numeric)
     EdtTelephoneOldProc = SetWindowLong_(hEdtTelephone, #GWL_WNDPROC, @EdtTelephoneWndProc())
  EndIf   
EndIf

Repeat
  EventID = WaitWindowEvent()
  Select EventID
    Case #PB_Event_CloseWindow
        Quit = #True
  EndSelect
Until Quit = #True
  
End
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Oui, très bien. :)
Répondre