Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Comment annuler la dernière modification d'un StringGadget (undo) ?
auteur : Progi1984
Pour cela, nous utilisons la fonction SendMessage() de l'API Windows pour envoyer un message au StringGadget lui demandant d'annuler sa dernière modification.

If OpenWindow(0, 100, 200, 200, 200, "Annulation - undo")
  ; Crée la liste de gadgets
  If CreateGadgetList(WindowID(0))
    StringGadget(0, 0, 0, 100, 20, "Texte initial")  
    ButtonGadget(1, 100, 100, 100, 100, "Annuler")
  EndIf
  
  Repeat
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_CloseWindow
      Quit = 1
    EndIf
    If EventID = #PB_Event_Gadget
      GadgetID = EventGadget()
      If GadgetID = 1
        SendMessage_(GadgetID(0), #EM_UNDO, 0, 0)
      EndIf
    EndIf

  Until Quit = 1
  
EndIf

Comment ajouter dynamiquement des gadgets dans une fenêtre ?
auteur : Progi1984

La gestion des gadgets dans une fenêtre est réalisée via une GadgetList. Il suffit d'ouvrir cette GadgetList et d'y ajouter le gadget souhaité.

Declare AjouteGadget(No, x, y, width, height, texte.s)

If OpenWindow(0, 100, 200, 200, 200, "Ajout gadgets")
  ; Crée la liste de gadgets
  If CreateGadgetList(WindowID(0))
    ButtonGadget(0, 0, 0, 100, 100, "Bouton 0")  
  EndIf
  
  Repeat
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_CloseWindow
      Quit = 1
    ElseIf EventID = #PB_Event_Gadget
      Select EventGadget()
        Case 0
          AjouteGadget(1, 100, 100, 100, 100, "Bouton 1") 
        Case 1
          If IsGadget(2)=0 ; Test si le gadget n'existe pas
            AjouteGadget(2, 0, 100, 100, 100, "Bouton 2")
          EndIf                      
      EndSelect
    EndIf

  Until Quit = 1
  
EndIf

Procedure AjouteGadget(No, x, y, width, height, texte.s)
  ; Ouvre la liste de gadgets
  If OpenGadgetList(0)
    ButtonGadget(No, x, y, width, height, texte)
  EndIf
EndProcedure

Comment détecter le passage de la souris sur un gadget ?
auteur : Nico
En testant le message #WM_SETCURSOR

  • wParam renvoie le Handle du gadget sur lequel se trouve la souris.
  • GetDlgCtrlID_() renvoie l'identifiant du gadget.
Il faut que l'ID du Gadget soit supérieur à zéro car le message renvoie null s'il n'est pas au dessus un Gadget.

De plus le gadget ne sera pas détecté s'il est désactivé.

Procedure ProcedureCallback(WindowID, Message, wParam, lParam)
  Select Message
    Case #WM_SETCURSOR
      ;Affiche le Handle et l'identifiant du gadget dans la barre de titre
	  SetWindowTitle(0,"Handle= "+Str(wParam)+"   , "+"ID= "+Str(GetDlgCtrlID_(wParam)))
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Enumeration
  #Window
  #StringG     ;ID=1
  #Button      ;ID=2
  #CheckBox    ;ID=3
EndEnumeration

If OpenWindow(#Window,0,0,400,400,"PureBasic",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  CreateGadgetList(WindowID(#Window))
  StringGadget(#StringG   , 20,  20, 200, 20, "StringGadget Normal ...")
  ButtonGadget(#Button    , 20,  60, 200, 20, "Bouton Standard")
  CheckBoxGadget(#CheckBox, 20, 100, 200, 20, "CheckBox standard")
 
  ;DisableGadget(#Button,1)
 
  SetWindowCallback(@ProcedureCallback())

  Repeat
    EventID.l=WaitWindowEvent()
    Select EventID
      Case #WM_CLOSE
        Quit=1
    EndSelect
  Until Quit=1
EndIf 

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com