Obtenir l'état (activé ou désactivé) d'un gadget

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Obtenir l'état (activé ou désactivé) d'un gadget

Message par Progi1984 »

Code : Tout sélectionner

ProcedureDLL GetDisableGadget(Gadget.l)
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Linux;{
      Protected *Widget.GtkWidget = GadgetID(Gadget)
      Protected *Object.GtkObject = *Widget\object
      If *Object\flags & #GTK_SENSITIVE <> 0
        ProcedureReturn #False
      Else
        ProcedureReturn #True
      EndIf
    ;}
    CompilerCase #PB_OS_Windows;{
      ProcedureReturn #True-IsWindowEnabled_(GadgetID(gadget))
    ;}
  CompilerEndSelect
EndProcedure
  If OpenWindow(0, 0, 0, 250, 105, "DisableGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ButtonGadget(0, 10, 15, 230, 30, "Bouton désactivé") : DisableGadget(0, 1)
    ButtonGadget(1, 10, 60, 230, 30, "Bouton activé") : DisableGadget(1, 0)
    Debug GetDisableGadget(0)
    Debug GetDisableGadget(1)
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
Manque plus que MacOS :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

C'est quoi la différence avec un getgadgetstate ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Pour MacOS, Possibilité de tester avec ca ?

Code : Tout sélectionner

    CompilerCase #PB_OS_MacOs;{
      ProcedureReturn #True-IsControlEnabled_(GadgetID(gadget))
    ;}
La différence avec un getgadgetstate est que l'on saura si le gadget est ou non désactivé. Par exemple, dans le cadre d'un bouton, cela renvoie ces ifnormations :

Code : Tout sélectionner

- ButtonGadget(): renvoie l'état d'un bouton poussoir (#PB_Button_Toggle): 1 = pressé, 0 = normal. 
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Merci Progi1984 8)

Autrement j'avais le meme style de code de FLYPE, mais avec des macros, si ça peut compléter ce POST :wink:

http://www.purebasic.fr/french/viewtopi ... 7535#47535

Code : Tout sélectionner

Macro GetDisableGadget(gadget) 
  (#True-IsWindowEnabled_(GadgetID(gadget))) 
EndMacro 

If OpenWindow(0, 0, 0, 250, 105, "DisableGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  ButtonGadget(0, 10, 15, 230, 30, "Bouton désactivé") : DisableGadget(0, 1) 
  ButtonGadget(1, 10, 60, 230, 30, "Bouton activé") : DisableGadget(1, 0) 
  Debug GetDisableGadget(0) 
  Debug GetDisableGadget(1) 
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
EndIf 
 
Répondre