CreateButtonColor

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

CreateButtonColor

Message par Shadow »

Salut,

Voici une version assez complète d'un bouton
coloré paramétrable à souhait:

--- Fonctionnalités: ---

- 4 Style de bouton au choix: Standard, Flat, Sans Bordures, 3D.
- Possibilité de choisir la Couleur du font du bouton (Alpha compris).
- Texte personnalisable: Couleur (Alpha compris), Angle, Style, Police, Taille de la police, Possibilité d'ajuster la position du texte avec 9 position possible (Fonctionne que si le texte n'est pas pivoté):
Haut Gauche, Haut Centré, Haut droite, Gauche Centré, Centré (Par Défaut), Droite Centré, Bas Gauche, Bas Centré, Bas droite.
Et aussi (OffSet X et Y).
- Possibilité de choisir des couleurs (De 2, Jusqu'à 5) pour créer un dégradé horizontale ou verticale sur le font ainsi que sur le texte du bouton.
- Possibilité de choisir le curseur de la souris du bouton quand la souris passe dessus.
- Possibilité de mettre une image avec choix de la transparence sur le bouton avec 9 position possible:
Haut Gauche (Par Défaut), Haut Centré, Haut droite, Gauche Centré, Centré, Droite Centré, Bas Gauche, Bas Centré, Bas droite.
Ainsi que la Possibilité d'ajuster la position de l'image (OffSet X et Y).
- Option Bouton A bascule.

----------------------

Note: Le Texte Multi Ligne n'est pas pris en charge :(
Fichier Zip contenant le code, un exemple et l'aide: http://www.aht.li/3047473/CreateButtonColor.7z

Et une ch'tite image, c'est mieux qu'un long discourt:
Image

Code : Tout sélectionner

; Créé par Monsieur Dieppedalle David le 22/03/2017.
; Amélioré par Michel Lye (Structure + Tableau) le 24.03.2027.
; Amélioration et Optimisation par Monsieur Dieppedalle David le 24/03/2017.
; Ajouté par la suite moult fonctions et améliorations.
; Faute d'orthographe corrigée par Micoute.

;{ Structure
Structure Caracteristiques
  BoutonImageID.i
  Texte.s
  PositionTexteBouton.i
  XTexte.i
  YTexte.i
  CouleurTexte.i
  AngleTexte.i
  StyleTexte.i
  PoliceTexte.s
  TailleTexte.i
  FontTexte.i
  OffsetXTexteBouton.i
  OffsetYTexteBouton.i
  CouleurBouton.i
  StyleBouton.i
  Curseur.i
  ImageBouton.i
  TransparenceImageBouton.i
  PositionImageBouton.i
  XImageBouton.i
  YImageBouton.i
  OffsetXImageBouton.i
  OffsetYImageBouton.i
  CouleurGradientTexte1.i
  CouleurGradientTexte2.i
  CouleurGradientTexte3.i
  CouleurGradientTexte4.i
  CouleurGradientTexte5.i
  CouleurGradientFond1.i
  CouleurGradientFond2.i
  CouleurGradientFond3.i
  CouleurGradientFond4.i
  CouleurGradientFond5.i
  GradientModeTexte.i
  GradientModeFond.i
  Interrupteur.b
EndStructure  
;}

;{ Variables Globales
Global NewMap ArrayButtonColor.Caracteristiques()
;}

;{ Constantes personnalisées:

; Valeurs possibles pour le Curseur:
#BC_Cursor_ARROW = 32512 ; la flèche (le curseur normal)
#BC_Cursor_IBEAM = 32513 ; curseur sélection de texte
#BC_Cursor_UPARROW = 32516 ; flèche qui pointe vers le haut
#BC_Cursor_APPSTARTING = 32650 ; curseur attente (flèche + sablier)
#BC_Cursor_WAIT = 32514        ; curseur occupé (sablier)
#BC_Cursor_CROSS = 32515       ; curseur précision de la sélection (croix)
#BC_Cursor_SIZENWSE = 32642    ; curseur de dimensionnement, pointe le NordOuest et le SudEst
#BC_Cursor_SIZENESW = 32643    ; curseur de dimensionnement, pointe le NE et le SO
#BC_Cursor_SIZEWE = 32644      ; curseur de dimensionnement, pointe le E et le O
#BC_Cursor_SIZENS = 32645      ; curseur de dimensionnement, pointe le N et le S
#BC_Cursor_SIZEALL = 32646     ; curseur de déplacement, pointe le N, S, E et O
#BC_Cursor_HELP = 32651        ; curseur aide
#BC_Cursor_HAND = 32649        ; curseur main
#BC_Cursor_NO = 32648          ; curseur "interdit" (panneau d'interdiction)

; Valeurs possibles pour les Fontes:
#BC_Font_Bold = #PB_Font_Bold
#BC_Font_Italic = #PB_Font_Italic
#BC_Font_Underline = #PB_Font_Underline
#BC_Font_StrikeOut = #PB_Font_StrikeOut

; Valeurs possibles pour les AAttributs:
#BC_TextColor = 1
#BC_GradiantTextMode = 2
#BC_GradiantTextColor1 = 3
#BC_GradiantTextColor2 = 4
#BC_GradiantTextColor3 = 5
#BC_GradiantTextColor4 = 6
#BC_GradiantTextColor5 = 7
#BC_TextPosition = 8
#BC_TextX = 9
#BC_TextY = 10
#BC_TextOffSetX = 11
#BC_TextOffSetY = 12
#BC_BackColor = 13
#BC_GradiantFondMode = 14
#BC_GradiantBackColor1 = 15
#BC_GradiantBackColor2 = 16
#BC_GradiantBackColor3 = 17
#BC_GradiantBackColor4 = 18
#BC_GradiantBackColor5 = 19
#BC_AngleText = 20
#BC_Cursor = 21
#BC_Image = 22
#BC_ImageTransparence = 23
#BC_ImageX = 24
#BC_ImageY = 25
#BC_ImageOffSetX = 26
#BC_ImageOffSetY = 27
#BC_ImagePosition = 28
#BC_Toogle = 29
#BC_Style = 30

; Valeurs possibles pour les Styles:
#BC_Style_Default = 31
#BC_Style_Flat = 32
#BC_Style_NoBorder = 33
#BC_Style_3D = 34

;}

;{ Procédures

; Procédure pour changer le curseur de la souris au dessus d'un gadget.

; Auteur : Le Soldat Inconnu
; Version de PB : 4.50
Procedure SetGadgetCursor_SubClassProc(hwnd, msg, wparam, lparam)
  Protected oldproc, Cursor
  oldproc = GetProp_(hwnd, "oldproc")
  
  Select msg
    Case #WM_NCDESTROY
      RemoveProp_(hwnd, "oldproc")
      RemoveProp_(hwnd, "cursor")
      
    Case #WM_SETCURSOR
      Cursor = GetProp_(hwnd, "cursor")
      SetCursor_(Cursor)
      ProcedureReturn 0
      
  EndSelect   
  ProcedureReturn CallWindowProc_(oldproc, hwnd, msg, wparam, lparam)
EndProcedure

 ; Change le curseur de la souris au dessus d'un Gadget.
Procedure SetGadgetCursor(Gadget, Cursor)
  If IsGadget(Gadget)
    If GetProp_(GadgetID(Gadget), "cursor")
      RemoveProp_(GadgetID(Gadget), "cursor")
    EndIf
    SetProp_(GadgetID(Gadget), "cursor", Cursor)
    If GetProp_(GadgetID(Gadget), "oldproc") = 0
      SetProp_(GadgetID(Gadget), "oldproc", SetWindowLongPtr_(GadgetID(Gadget), #GWL_WNDPROC, @SetGadgetCursor_SubClassProc()))
    EndIf
    SendMessage_(GadgetID(Gadget), #WM_SETCURSOR , 0, 0)
  EndIf
EndProcedure

; Créer un nouveau Bouton Coloré.
Procedure.b CreateButtonColor(Gadget.i, X.i, Y.i, Largeur.i, Hauteur.i, Texte.s, CouleurTexte.i = 0, CouleurBouton.i = 0, Interrupteur.b = #False, Curseur.i = #BC_Cursor_ARROW)
  
  If Largeur.i > 9 And Hauteur.i > 9
    
    With ArrayButtonColor(Str(Gadget.i))
      
      If CouleurTexte.i = 0
        CouleurTexte.i = RGBA(0, 0, 0, 255)
      EndIf
      
      \Texte = Texte.s
      \CouleurTexte = CouleurTexte.i
      \CouleurBouton = CouleurBouton.i
      \Interrupteur = Interrupteur.b
      \Curseur = Curseur.i
      
      If IsImage(\BoutonImageID)
        FreeImage(\BoutonImageID)
      EndIf
      
      ButtonImage.i = CreateImage(#PB_Any, Largeur.i - 7, Hauteur.i - 7, 32, #PB_Image_Transparent)
      
      If IsImage(ButtonImage.i)
        
        \BoutonImageID = ButtonImage.i
        
        If Not IsFont(\FontTexte)
          
          ButtonFont.i = LoadFont(#PB_Any, "", 8, #PB_Font_HighQuality)
          
          If IsFont(ButtonFont.i)
            \PoliceTexte = ""
            \TailleTexte = 8
            \StyleTexte = #PB_Font_HighQuality
            \FontTexte = ButtonFont.i
          EndIf
          
        EndIf
        
        If StartDrawing(ImageOutput(ButtonImage.i))
          
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          Box(0, 0, ImageWidth(ButtonImage.i), ImageHeight(ButtonImage.i), CouleurBouton.i)
          
          If \GradientModeFond = 1
            
            DrawingMode(#PB_2DDrawing_Gradient)
            
            ; Dégradé en Horizontal.
            LinearGradient(ImageWidth(ButtonImage.i), 0, 0, 0)
            
          ElseIf \GradientModeFond = 2
            
            DrawingMode(#PB_2DDrawing_Gradient)
            
            ; Dégradé en Vertical.
            LinearGradient(0, ImageHeight(ButtonImage.i), 0, 0)
            
          EndIf
          
          If \GradientModeFond = 1 Or \GradientModeFond = 2
            
            If \CouleurGradientFond1 <> -1 And \CouleurGradientFond2 <> -1 And \CouleurGradientFond3 <> -1 And \CouleurGradientFond4 <> -1 And \CouleurGradientFond5 <> -1
              GradientColor(0.00, \CouleurGradientFond1)
              GradientColor(0.25, \CouleurGradientFond2)   
              GradientColor(0.50, \CouleurGradientFond3)
              GradientColor(0.75, \CouleurGradientFond4)
              GradientColor(1.00, \CouleurGradientFond5)
              
            ElseIf \CouleurGradientFond1 <> -1 And \CouleurGradientFond2 <> -1 And \CouleurGradientFond3 <> -1 And \CouleurGradientFond4 <> -1
              GradientColor(0.00, \CouleurGradientFond1)
              GradientColor(0.33, \CouleurGradientFond2)   
              GradientColor(0.66, \CouleurGradientFond3)
              GradientColor(1.00, \CouleurGradientFond4)
              
            ElseIf \CouleurGradientFond1 <> -1 And \CouleurGradientFond2 <> -1 And \CouleurGradientFond3 <> -1
              GradientColor(0.00, \CouleurGradientFond1)
              GradientColor(0.50, \CouleurGradientFond2)   
              GradientColor(1.00, \CouleurGradientFond3)
              
            ElseIf \CouleurGradientFond1 <> -1 And \CouleurGradientFond2 <> -1
              GradientColor(0.00, \CouleurGradientFond1)
              GradientColor(1.00, \CouleurGradientFond2)   
              
            Else
              DrawingMode(#PB_2DDrawing_AlphaBlend)
              
            EndIf
            
          EndIf
          
          Box(0, 0, ImageWidth(ButtonImage.i), ImageHeight(ButtonImage.i), CouleurBouton.i)
          DrawingMode(#PB_2DDrawing_AlphaBlend)
          
          If IsFont(\FontTexte)
            DrawingFont(FontID(\FontTexte))
          EndIf
          
          AngleTexte.i = (\AngleTexte - \AngleTexte - \AngleTexte)
          
          If AngleTexte.i = 0
            
            Select \PositionTexteBouton
                
              Case 0 ; Centre
                XTexte.i = (ImageWidth(ButtonImage.i) - TextWidth(Texte.s)) / 2 + \OffsetXTexteBouton
                YTexte.i = (ImageHeight(ButtonImage.i) - TextHeight(Texte.s)) / 2 + \OffsetYTexteBouton
                
              Case 1 ; Haut Gauche
                XTexte.i = 1 + \OffsetXTexteBouton
                YTexte.i = \OffsetYTexteBouton - 2
                
              Case 2 ; Haut centre
                XTexte.i = 1 + (ImageWidth(ButtonImage.i) - TextWidth(Texte.s)) / 2 + \OffsetXTexteBouton
                YTexte.i = \OffsetYTexteBouton - 2
                
              Case 3 ; Haut droite
                XTexte.i = ImageWidth(ButtonImage.i) - TextWidth(Texte.s) + \OffsetXTexteBouton - 1
                YTexte.i = \OffsetYTexteBouton - 2
                
              Case 4 ; Gauche centre
                XTexte.i = 1 + \OffsetXTexteBouton
                YTexte.i = (ImageHeight(ButtonImage.i) - TextHeight(Texte.s)) / 2 + \OffsetYTexteBouton
                
              Case 5 ; Droite centre
                XTexte.i = (ImageWidth(ButtonImage.i) - TextWidth(Texte.s)) + \OffsetXTexteBouton - 1
                YTexte.i = (ImageHeight(ButtonImage.i) - TextHeight(Texte.s)) / 2 + \OffsetYTexteBouton
                
              Case 6 ; Bas gauche
                XTexte.i = 1 + \OffsetXTexteBouton
                YTexte.i = (ImageHeight(ButtonImage.i) - TextHeight(Texte.s)) + \OffsetYTexteBouton
                
              Case 7 ; Bas centre
                XTexte.i = 1 + (ImageWidth(ButtonImage.i) - TextWidth(Texte.s)) / 2 + \OffsetXTexteBouton
                YTexte.i = (ImageHeight(ButtonImage.i) - TextHeight(Texte.s)) + \OffsetYTexteBouton
                
              Case 8 ; Bas droite
                XTexte.i = ImageWidth(ButtonImage.i) - TextWidth(Texte.s) + \OffsetXTexteBouton - 1
                YTexte.i = (ImageHeight(ButtonImage.i) - TextHeight(Texte.s)) + \OffsetYTexteBouton
                
              Default ; Centre
                XTexte.i = (ImageWidth(ButtonImage.i) - TextWidth(Texte.s)) / 2 + \OffsetXTexteBouton
                YTexte.i = (ImageHeight(ButtonImage.i) - TextHeight(Texte.s)) / 2 + \OffsetYTexteBouton
                
            EndSelect
            
          Else
            
            XTexte.i = (ImageWidth(ButtonImage.i) - TextWidth(\Texte) * Cos(Radian(AngleTexte.i)) - TextHeight(\Texte) * Sin(Radian(AngleTexte.i))) / 2
            YTexte.i = (ImageHeight(ButtonImage.i) + TextWidth(\Texte) * Sin(Radian(AngleTexte.i)) - TextHeight(\Texte) * Cos(Radian(AngleTexte.i))) / 2
            
            XTexte.i + \OffsetXTexteBouton
            YTexte.i + \OffsetYTexteBouton
            
          EndIf
          
          \XTexte = XTexte.i
          \YTexte = YTexte.i
          
          If IsImage(\ImageBouton)
            
            Select \PositionImageBouton
                
              Case 0 ; Haut Gauche
                XImage.i = 1
                YImage.i = 1
                
              Case 1 ; Haut centre
                XImage.i = (ImageWidth(ButtonImage.i) - ImageWidth(\ImageBouton)) / 2 + \OffSetXImageBouton
                YImage.i = 1 + \OffSetYImageBouton
                
              Case 2 ; Haut droite
                XImage.i = (ImageWidth(ButtonImage.i) - ImageWidth(\ImageBouton)) - 1 + \OffSetXImageBouton
                YImage.i = 1 + \OffSetYImageBouton
                
              Case 3 ; Gauche centre
                XImage.i = 1 + \OffSetXImageBouton
                YImage.i = (ImageHeight(ButtonImage.i) - ImageHeight(\ImageBouton)) / 2 + \OffSetYImageBouton
                
              Case 4 ; Centre
                XImage.i = (ImageWidth(ButtonImage.i) - ImageWidth(\ImageBouton)) / 2 + \OffSetXImageBouton
                YImage.i = (ImageHeight(ButtonImage.i) - ImageHeight(\ImageBouton)) / 2 + \OffSetYImageBouton
                
              Case 5 ; Droite centre
                XImage.i = (ImageWidth(ButtonImage.i) - ImageWidth(\ImageBouton)) - 1 + \OffSetXImageBouton
                YImage.i = (ImageHeight(ButtonImage.i) - ImageHeight(\ImageBouton)) / 2 + \OffSetYImageBouton
                
              Case 6 ; Bas gauche
                XImage.i = 1 + \OffSetXImageBouton
                YImage.i = ImageHeight(ButtonImage.i) - ImageHeight(\ImageBouton) - 1 + \OffSetYImageBouton
                
              Case 7 ; Bas centre
                XImage.i = (ImageWidth(ButtonImage.i) - ImageWidth(\ImageBouton)) / 2 + \OffSetXImageBouton
                YImage.i = ImageHeight(ButtonImage.i) - ImageHeight(\ImageBouton) - 1 + \OffSetYImageBouton
                
              Case 8 ; Bas droite
                XImage.i = ImageWidth(ButtonImage.i) - ImageWidth(\ImageBouton) - 1 + \OffSetXImageBouton
                YImage.i = ImageHeight(ButtonImage.i) - ImageHeight(\ImageBouton) - 1 + \OffSetYImageBouton
                
              Default ; Haut Gauche
                XImage.i = 1 + \OffSetXImageBouton
                YImage.i = 1 + \OffSetYImageBouton
                
            EndSelect
            
            \XImageBouton = XImage.i
            \YImageBouton = YImage.i
            
            DrawAlphaImage(ImageID(\ImageBouton), XImage.i, YImage.i, \TransparenceImageBouton)
            
          EndIf
          
          ResetGradientColors()
          
          If \GradientModeTexte = 1 Or \GradientModeTexte = 2
            
            DrawingMode(#PB_2DDrawing_AlphaBlend | #PB_2DDrawing_Gradient)
            
            If \GradientModeTexte = 1
              
              ; Dégradé en Horizontal.
              LinearGradient(XTexte.i, YTexte.i, TextWidth(Texte.s), YTexte.i)
              
            ElseIf \GradientModeTexte = 2
              
              ; Dégradé en Vertical.
              LinearGradient(XTexte.i, YTexte.i, XTexte.i, YTexte.i + TextHeight(Texte.s))
              
            EndIf
            
            If \CouleurGradientTexte1 <> -1 And \CouleurGradientTexte2 <> -1 And \CouleurGradientTexte3 <> -1 And \CouleurGradientTexte4 <> -1 And \CouleurGradientTexte5 <> -1
              GradientColor(0.00, \CouleurGradientTexte1)
              GradientColor(0.25, \CouleurGradientTexte2)   
              GradientColor(0.50, \CouleurGradientTexte3)
              GradientColor(0.75, \CouleurGradientTexte4)
              GradientColor(1.00, \CouleurGradientTexte5)
              
            ElseIf \CouleurGradientTexte1 <> -1 And \CouleurGradientTexte2 <> -1 And \CouleurGradientTexte3 <> -1 And \CouleurGradientTexte4 <> -1
              GradientColor(0.00, \CouleurGradientTexte1)
              GradientColor(0.33, \CouleurGradientTexte2)   
              GradientColor(0.66, \CouleurGradientTexte3)
              GradientColor(1.00, \CouleurGradientTexte4)
              
            ElseIf \CouleurGradientTexte1 <> -1 And \CouleurGradientTexte2 <> -1 And \CouleurGradientTexte3 <> -1
              GradientColor(0.00, \CouleurGradientTexte1)
              GradientColor(0.50, \CouleurGradientTexte2)   
              GradientColor(1.00, \CouleurGradientTexte3)
              
            ElseIf \CouleurGradientTexte1 <> -1 And \CouleurGradientTexte2 <> -1
              GradientColor(0.00, \CouleurGradientTexte1)
              GradientColor(1.00, \CouleurGradientTexte2)
              
            Else
              DrawingMode(#PB_2DDrawing_AlphaBlend)
              
            EndIf
            
          EndIf
          
          If AngleTexte.i = 0
            DrawText(XTexte.i, YTexte.i, Texte.s, CouleurTexte.i, 0)
            
          Else
            DrawRotatedText(XTexte.i, YTexte.i, Texte.s, AngleTexte.i, CouleurTexte.i)
            
          EndIf
          
          StopDrawing()
          
        Else
          ProcedureReturn 0
          
        EndIf
        
        If Interrupteur.b = #True
          ButtonImageGadget(Gadget.i, X.i, Y.i, Largeur.i, Hauteur.i, ImageID(ButtonImage.i), #PB_Button_Toggle)
        Else
          ButtonImageGadget(Gadget.i, X.i, Y.i, Largeur.i, Hauteur.i, ImageID(ButtonImage.i))
        EndIf
        
      Else
        ProcedureReturn 0
        
      EndIf
      
      Select \StyleBouton
          
      Case #BC_Style_Flat
        SetWindowLong_(GadgetID(Gadget.i), #GWL_STYLE, #BS_FLAT | GetWindowLong_(GadgetID(Gadget.i), #GWL_STYLE))
        SetWindowTheme_(GadgetID(Gadget), @" ", @" ")
        
      Case #BC_Style_NoBorder
        SetWindowLong_(GadgetID(Gadget.i), #GWL_STYLE, #BS_USERBUTTON | GetWindowLong_(GadgetID(Gadget.i), #GWL_STYLE))
        SetWindowTheme_(GadgetID(Gadget.i), @" ", @" ")
        
      Case #BC_Style_3D
        SetWindowLong_(GadgetID(Gadget.i), #GWL_STYLE, 0 | GetWindowLong_(GadgetID(Gadget.i), #GWL_STYLE))
        SetWindowTheme_(GadgetID(Gadget.i), @" ", @" ")
        
      EndSelect
      
      Select Curseur.i
          
        Case #BC_Cursor_APPSTARTING, #BC_Cursor_ARROW, #BC_Cursor_CROSS, #BC_Cursor_HAND, #BC_Cursor_HELP, #BC_Cursor_IBEAM, #BC_Cursor_NO, #BC_Cursor_SIZEALL, #BC_Cursor_SIZENESW, #BC_Cursor_SIZEWE, #BC_Cursor_SIZENS, #BC_Cursor_SIZENWSE, #BC_Cursor_UPARROW, #BC_Cursor_WAIT
          
        Default
          Curseur.i = #BC_Cursor_ARROW
          
      EndSelect
      
      SetGadgetCursor(Gadget.i, LoadCursor_(0, Curseur.i)) ; Applique le curseur au gadget
      ProcedureReturn 1
      
    EndWith
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Change le texte du bouton.
Procedure.b SetButtonColorText(Gadget.i, Texte.s)
  
  If IsGadget(Gadget.i)
    With ArrayButtonColor(Str(Gadget.i))
      \Texte = Texte.s
      CreateButtonColor(Gadget.i, GadgetX(Gadget.i), GadgetY(Gadget.i), GadgetWidth(Gadget.i), GadgetHeight(Gadget.i), Texte.s, \CouleurTexte, \CouleurBouton, \Interrupteur, \Curseur)
      ProcedureReturn 1
    EndWith
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure

; Change la police du bouton.
Procedure.b SetGadgetColorFont(Gadget.i, PoliceTexte.s, TailleTexte.i = 10, StyleTexte.i = 0)
  
  ; StyleTexte: #BC_Font_Bold | #BC_Font_Italic | #BC_Font_Underline | #BC_Font_StrikeOut
  
  If IsGadget(Gadget.i)
    
    With ArrayButtonColor(Str(Gadget.i))
      
      If IsFont(\FontTexte)
        FreeFont(\FontTexte)
      EndIf
      
      ButtonFont.i = LoadFont(#PB_Any, PoliceTexte.s, TailleTexte.i, StyleTexte.i | #PB_Font_HighQuality)

      If IsFont(ButtonFont.i)
        \PoliceTexte = PoliceTexte.s
        \TailleTexte = TailleTexte.i
        \StyleTexte = StyleTexte.i | #PB_Font_HighQuality
        \FontTexte = ButtonFont.i
        
      Else
        ProcedureReturn 0
        
      EndIf
      
      CreateButtonColor(Gadget.i, GadgetX(Gadget.i), GadgetY(Gadget.i), GadgetWidth(Gadget.i), GadgetHeight(Gadget.i), \Texte, \CouleurTexte, \CouleurBouton, \Interrupteur, \Curseur)
      ProcedureReturn 1
      
    EndWith
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Change les couleurs gradient du texte du bouton.
Procedure.b SetButtonColorGradientTextColor(Gadget.i, Mode.i, Couleur1.i, Couleur2.i, Couleur3.i, Couleur4.i, Couleur5.i)
  
  If IsGadget(Gadget.i)
    
    With ArrayButtonColor(Str(Gadget.i))
      
      If Mode.i < 1
        Mode.i = 1
      ElseIf Mode.i > 2
        Mode.i = 2
      EndIf
      
      \GradientModeTexte = Mode.i
      
      \CouleurGradientTexte1 = Couleur1.i
      \CouleurGradientTexte2 = Couleur2.i
      \CouleurGradientTexte3 = Couleur3.i
      \CouleurGradientTexte4 = Couleur4.i
      \CouleurGradientTexte5 = Couleur5.i
      
      CreateButtonColor(Gadget.i, GadgetX(Gadget.i), GadgetY(Gadget.i), GadgetWidth(Gadget.i), GadgetHeight(Gadget.i), \Texte, \CouleurTexte, \CouleurBouton, \Interrupteur, \Curseur)
      ProcedureReturn 1
      
    EndWith
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure
  
; Change les couleurs gradient du fond du bouton.
Procedure.b SetButtonColorGradientBackColor(Gadget.i, Mode.i, Couleur1.i, Couleur2.i, Couleur3.i, Couleur4.i, Couleur5.i)
  
  If IsGadget(Gadget.i)
    
    With ArrayButtonColor(Str(Gadget.i))
      
      If Mode.i < 1
        Mode.i = 1
      ElseIf Mode.i > 2
        Mode.i = 2
      EndIf
      
      \GradientModeFond = Mode.i
      
      \CouleurGradientFond1 = Couleur1.i
      \CouleurGradientFond2 = Couleur2.i
      \CouleurGradientFond3 = Couleur3.i
      \CouleurGradientFond4 = Couleur4.i
      \CouleurGradientFond5 = Couleur5.i
      
      CreateButtonColor(Gadget.i, GadgetX(Gadget.i), GadgetY(Gadget.i), GadgetWidth(Gadget.i), GadgetHeight(Gadget.i), \Texte, \CouleurTexte, \CouleurBouton, \Interrupteur, \Curseur)
      ProcedureReturn 1
      
    EndWith
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Change un attribut du bouton.
Procedure.b SetButtonColorAttribute(Gadget.i, Attribut.i, Valeur.i)
  
  If IsGadget(Gadget.i)
    
    With ArrayButtonColor(Str(Gadget.i))
      
      Select Attribut.i
          
        Case #BC_TextColor
          \CouleurTexte = Valeur.i
          
        Case #BC_TextPosition
          \PositionTexteBouton = Valeur.i
          
        Case #BC_TextOffSetX
          \OffsetXTexteBouton = Valeur.i
          
        Case #BC_TextOffSetY
          \OffsetYTexteBouton = Valeur.i
          
        Case #BC_BackColor
          \CouleurBouton = Valeur.i
          
        Case #BC_AngleText
          \AngleTexte = Valeur.i
          
        Case #BC_Cursor ; #BC_Cursor_APPSTARTING, #BC_Cursor_ARROW, #BC_Cursor_CROSS, #BC_Cursor_HAND, #BC_Cursor_HELP, #BC_Cursor_IBEAM, #BC_Cursor_NO, #BC_Cursor_SIZEALL, #BC_Cursor_SIZENESW, #BC_Cursor_SIZEWE, #BC_Cursor_SIZENS, #BC_Cursor_SIZENWSE, #BC_Cursor_UPARROW, #BC_Cursor_WAIT
          \Curseur = Valeur.i
          
        Case #BC_Image
          \TransparenceImageBouton = 255
          \ImageBouton = Valeur.i
          
        Case #BC_ImageTransparence
          \TransparenceImageBouton = Valeur.i
          
        Case #BC_ImagePosition
          \PositionImageBouton = Valeur.i
          
        Case #BC_ImageOffSetX
          \OffsetXImageBouton = Valeur.i
          
        Case #BC_ImageOffSetY
          \OffsetYImageBouton = Valeur.i
          
        Case #BC_Toogle
          
          If Valeur.i <> 0 And Valeur.i <> 1
            Valeur.i = #False
          EndIf
          
          \Interrupteur = Valeur.i
          
        Case #BC_Style ; #BC_Style_Default, #BC_Style_Flat, #BC_Style_NoBorder, #BC_Style_3D
          \StyleBouton = Valeur.i
          
      EndSelect
      
      CreateButtonColor(Gadget.i, GadgetX(Gadget.i), GadgetY(Gadget.i), GadgetWidth(Gadget.i), GadgetHeight(Gadget.i), \Texte, \CouleurTexte, \CouleurBouton, \Interrupteur, \Curseur)
      ProcedureReturn 1
      
    EndWith
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

; Retourne le numéro d'identification de l'image (ImageID) qui compose le bouton.
Procedure.i GetButtonColorImageID(Gadget.i)
  If IsGadget(Gadget.i)
    ProcedureReturn ArrayButtonColor(Str(Gadget.i))\BoutonImageID
  Else
    ProcedureReturn 0
  EndIf
EndProcedure

; Retourne le texte du bouton.
Procedure.s GetButtonColorText(Gadget.i)
  If IsGadget(Gadget.i)
    ProcedureReturn ArrayButtonColor(Str(Gadget.i))\Texte
  Else
    ProcedureReturn ""
  EndIf
EndProcedure

; Retourne le nom de la police du bouton.
Procedure.s GetButtonColorFontName(Gadget.i)
  If IsGadget(Gadget.i)
    ProcedureReturn ArrayButtonColor(Str(Gadget.i))\PoliceTexte
  Else
    ProcedureReturn ""
  EndIf
EndProcedure

; Retourne la taille de la police du bouton.
Procedure.i GetButtonColorFontSize(Gadget.i)
  If IsGadget(Gadget.i)
    ProcedureReturn ArrayButtonColor(Str(Gadget.i))\TailleTexte
  Else
    ProcedureReturn 0
  EndIf
EndProcedure

; Retourne le style de la police du bouton.
Procedure.i GetButtonColorFontStyle(Gadget.i)
  If IsGadget(Gadget.i)
    ProcedureReturn ArrayButtonColor(Str(Gadget.i))\StyleTexte
  Else
    ProcedureReturn 0
  EndIf
EndProcedure

; Retourne un attribut du bouton.
Procedure.i GetButtonColorAttribute(Gadget.i, Attribut.i)
  
  If IsGadget(Gadget.i)
    
    With ArrayButtonColor(Str(Gadget.i))
      
      Select Attribut.i
          
        Case #BC_TextColor
          ProcedureReturn \CouleurTexte
          
        Case #BC_GradiantTextMode
          ProcedureReturn \GradientModeTexte
          
        Case #BC_GradiantTextColor1
          ProcedureReturn \CouleurGradientTexte1
          
        Case #BC_GradiantTextColor2
          ProcedureReturn \CouleurGradientTexte2
          
        Case #BC_GradiantTextColor3
          ProcedureReturn \CouleurGradientTexte3
          
        Case #BC_GradiantTextColor4
          ProcedureReturn \CouleurGradientTexte4
          
        Case #BC_GradiantTextColor5
          ProcedureReturn \CouleurGradientTexte5
          
        Case #BC_TextX
          ProcedureReturn \XTexte
          
        Case #BC_TextY
          ProcedureReturn \YTexte
          
        Case #BC_TextPosition
          ProcedureReturn \PositionTexteBouton
          
        Case #BC_TextOffSetX
          ProcedureReturn \OffsetXTexteBouton
          
        Case #BC_TextOffSetY
          ProcedureReturn \OffsetYTexteBouton
          
        Case #BC_BackColor
          ProcedureReturn \CouleurBouton
          
        Case #BC_GradiantFondMode
          ProcedureReturn \GradientModeFond
          
        Case #BC_GradiantBackColor1
          ProcedureReturn \CouleurGradientFond1
          
        Case #BC_GradiantBackColor2
          ProcedureReturn \CouleurGradientFond2
          
        Case #BC_GradiantBackColor3
          ProcedureReturn \CouleurGradientFond3
          
        Case #BC_GradiantBackColor4
          ProcedureReturn \CouleurGradientFond4
          
        Case #BC_GradiantBackColor5
          ProcedureReturn \CouleurGradientFond5
          
        Case #BC_AngleText
          ProcedureReturn \AngleTexte
          
        Case #BC_Cursor
          ProcedureReturn \Curseur
          
        Case #BC_Image
          ProcedureReturn \ImageBouton
          
        Case #BC_ImageTransparence
          ProcedureReturn \TransparenceImageBouton
          
        Case #BC_ImageX
          ProcedureReturn \XImageBouton
          
        Case #BC_ImageY
          ProcedureReturn \YImageBouton
          
        Case #BC_ImageOffSetX
          ProcedureReturn \OffsetXImageBouton
          
        Case #BC_ImageOffSetY
          ProcedureReturn \OffsetYTexteBouton
          
        Case #BC_ImagePosition
          ProcedureReturn \PositionImageBouton
          
        Case #BC_Toogle
          ProcedureReturn \Interrupteur
          
        Case #BC_Style
          ProcedureReturn \StyleBouton
          
        Default
          ProcedureReturn 0
          
      EndSelect
      
    EndWith
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

;}

; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Exemple d'utilisation
; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;{ Aide

; ---------------------------
; Aide Fonction ButtonColor:
; ---------------------------

; - Crée un nouveau bouton coloré.
; - CouleurTexte.i ainsi que CouleurBouton.i doivent être des couleurs au format RGBA().
; - Curseur possible: #BC_Cursor_APPSTARTING, #BC_Cursor_ARROW (Par défaut), #BC_Cursor_CROSS, #BC_Cursor_HAND, #BC_Cursor_HELP, #BC_Cursor_IBEAM, #BC_Cursor_NO
;                     #BC_Cursor_SIZEALL, #BC_Cursor_SIZENESW, #BC_Cursor_SIZEWE, #BC_Cursor_SIZENS, #BC_Cursor_SIZENWSE, #BC_Cursor_UPARROW, #BC_Cursor_WAIT.
; Largeur.i ainsi que Hauteur.i doivent être supérieures ou égales à 10.
; CreateButtonColor(Gadget.i, X.i, Y.i, Largeur.i, Hauteur.i, Texte.s, CouleurTexte.i = 0, CouleurBouton.i = 0, Interrupteur.b = #False, Curseur.i = #BC_Cursor_ARROW)

; - Change le texte du bouton.
; SetButtonColorText(Gadget.i, Texte.s)

; - Change la police du Bouton.
; - StyleTexte: #BC_Font_Bold | #BC_Font_Italic | #BC_Font_Underline | #BC_Font_StrikeOut.
; SetGadgetColorFont(Gadget.i, PoliceTexte.s, TailleTexte.i, StyleTexte.i)

; - Change les couleurs gradient du texte du bouton.
; - -1 peut être indiqué pour ne pas utiliser de couleur, mais doit être utilisé à la fin:
; - Ex: Couleur1.i, Couleur2.i, Couleur3.i, Couleur4.i, -1
; - Ex: Couleur1.i, Couleur2.i, Couleur3.i, -1, -1
; - Ex: Couleur1.i, Couleur2.i, -1, -1, -1

; - Mode: 1 = dégradé horizontal, 2 = dégradé vertical
; SetButtonColorGradientTextColor(Gadget.i, Mode.i, Couleur1.i, Couleur2.i, Couleur3.i, Couleur4.i, Couleur5.i)

; - Change les couleurs gradient du fond du bouton.
; - -1 peut être indiqué pour ne pas utiliser de couleur, mais doit être utilisé à la fin:
; - Ex: Couleur1.i, Couleur2.i, Couleur3.i, Couleur4.i, -1
; - Ex: Couleur1.i, Couleur2.i, Couleur3.i, -1, -1
; - Ex: Couleur1.i, Couleur2.i, -1, -1, -1

; - Mode: 1 = dégradé horizontal, 2 = dégradé vertical
; SetButtonColorGradientBackColor(Gadget.i, Mode.i, Couleur1.i, Couleur2.i, Couleur3.i, Couleur4.i, Couleur5.i)

; - Change un attribut du bouton.
; SetButtonColorAttribute(Gadget.i, Attribut.i, Valeur.i)

; Note: Toutes les fonctions Setxxx retournent 1 si celles-ci ont été exécutées correctement ou 0 si elles ont échoué.
;       chaque fonction recrée ensuite le bouton si elle a été exécutée correctement.

; ------------------------------
; Aide SetButtonColorAttribute:
; ------------------------------

; Attributs possibles: #BC_TextColor, #BC_TextPosition, #BC_TextOffSetX, #BC_TextOffSetY, #BC_BackColor, #BC_AngleText,
;                      #BC_Cursor, #BC_Image, #BC_ImageTransparence, #BC_ImagePosition, #BC_ImageOffSetX, #BC_ImageOffSetY, #BC_Toogle, #BC_Style.

; Attributs: #BC_TextX et #BC_TextY
; Valeurs possibles: Position en X et en Y du texte sur le bouton.

; Attributs: #BC_TextColor:
; Valeur Possible: Couleur au Format RGBA().

; Attributs: #BC_TextPosition:
; Valeurs possibles: Position du texte, 0 = Centré (Par Défaut), Haut Gauche, 1 = Haut Centré, 2 = Haut droite, 3 = Gauche Centré,
;                                       4 = Droite Centré, 5 = Bas Gauche, 6 = Bas Centré, 7 = Droite bas.

; Attributs: #BC_TextOffSetX et #BC_TextOffSetY:
; Valeur possible: Position de justification du texte en X et Y, Valeur Positif = le Texte se décale à Droite
;                  pour X et en Bas pour Y, Valeur Négatif = le Texte se décale à Gauche pour X et en Haut pour Y.

; Attributs: #BC_BackColor:
; Valeur Possible: Couleur au Format RGBA().

; Attributs: #BC_AngleText:
; Valeur Possible: Valeur de 0 à 360 ou -0 à -360.

; Attributs: #BC_Cursor:
; Curseurs possibles: #BC_Cursor_APPSTARTING, #BC_Cursor_ARROW, #BC_Cursor_CROSS, #BC_Cursor_HAND, #BC_Cursor_HELP, #BC_Cursor_IBEAM, 
;                     #BC_Cursor_NO, #BC_Cursor_SIZEALL, #BC_Cursor_SIZENESW, #BC_Cursor_SIZEWE, #BC_Cursor_SIZENS, #BC_Cursor_SIZENWSE, 
;                     #BC_Cursor_UPARROW, #BC_Cursor_WAIT.

; Attributs: #BC_Image:
; Valeur possible: Numéro Identifiant de l'image (ImageID).

; Attributs: #BC_ImageTransparence:
; Valeurs possibles: Valeur entre 0 et 255.

; Attributs: #BC_ImageX et #BC_ImageY
; Valeurs possibles: Position en X et en Y de l'image additionnel du bouton.

; Attributs: #BC_ImagePosition:
; Valeurs Possibles: Position de l'image additionnelle, 0 = Haut Gauche, 1 = Haut Centré, 2 = Haut droite, 3 = Gauche Centré, 
;                                                       4 = Centré (Par Défaut), 5 = Droite Centré, 6 = Bas Gauche, 7 = Bas Centré, 8 =  droite.

; Attributs: #BC_ImageOffSetX et #BC_ImageOffSetY:
; Valeurs possibles: Position de justification de l'image additionnelle en X et Y, Valeur positive = l'image se décale à droite
;                    pour X et en bas pour Y, Valeur négative = l'image se décale à gauche pour X et en haut pour Y.

; Attributs: #BC_Toogle:
; Valeurs possibles: 0 ou 1.

; Attributs: #BC_Style:
; Styles Boutons possibles: #BC_Style_Default, #BC_Style_Flat, #BC_Style_NoBorder, #BC_Style_3D.

; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

; - Retourne le numéro d'identification de l'image (ImageID) qui compose le bouton.
; GetButtonColorImageID(Gadget.i)

; - Retourne le texte du bouton.
; GetButtonColorText(Gadget.i)

; - Retourne le nom de la police du bouton.
; GetButtonColorFontName(Gadget.i)

; - Retourne la taille de la police du bouton.
; GetButtonColorFontSize(Gadget.i)

; - Retourne le style de la police du bouton.
; GetButtonColorFontStyle(Gadget.i)

; - Retourne un attribut du bouton.
; GetButtonColorAttribute(Gadget.i, Attribut.i)

; ------------------------------
; Aide GetButtonColorAttribute:
; ------------------------------

; Attributs possibles: #BC_TextColor, #BC_GradiantTextMode, #BC_GradiantTextColor1, #BC_GradiantTextColor2, #BC_GradiantTextColor3, 
;                      #BC_GradiantTextColor4, #BC_GradiantTextColor5, #BC_TextX, #BC_TextY, #BC_TextPosition;#BC_TextOffSetX, 
;                      #BC_TextOffSetY, #BC_BackColor, #BC_GradiantFondMode, #BC_GradiantBackColor1, #BC_GradiantBackColor2, 
;                      #BC_GradiantBackColor3, #BC_GradiantBackColor4, #BC_GradiantBackColor5, #BC_AngleText, #BC_Cursor, #BC_Image, 
;                      #BC_ImageTransparence, #BC_ImageX, #BC_ImageY, #BC_ImageOffSetX, #BC_ImageOffSetY, #BC_ImagePosition, #BC_Toogle, #BC_Style

; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;}

Enumeration Fenetres  
  #Fenetre
EndEnumeration

Enumeration Gadgets
  #ButonGadgetColor0
  #ButonGadgetColor1
  #ButonGadgetColor2
  #ButonGadgetColor3
  #ButonGadgetColor4
  #ButonGadgetColor5
  #ButonGadgetColor6
  #ButonGadgetColor7
  #ButonGadgetColor8
  #ButonGadgetColor9
  #ButonGadgetColor10
  #ButonGadgetColor11
  #ButonGadgetColor12
  #ButonGadgetColor13
  #ButonGadgetColor14
  #ButonGadgetColor15
  #ButonGadgetColor16
  #ButonGadgetColor17
  #ButonGadgetColor18
  #ButonGadgetColor19
  #ButonGadgetColor20  
EndEnumeration

;{ DataSection
DataSection
  
  Piece_d_or:
  ; size : 684 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1100000011000000,$476D3B0000000608,$474B6206000000FA,$A0FF00FF00FF0044,$700900000093A7BD,$00130B0000735948,$189C9A0001130B00,$454D497407000000
  Data.q $120B1B171408E007,$4939020000CC9D16,$3194ADCB38544144,$724FFFC718511A68,$D04F155A82292742,$A97493A1D9ED06E5,$4B240D6388643A04,$C1A86249926866C6,$43B10B17474B8845,$D2E34BA2E8648706
  Data.q $34AA152DE0EA5E0C,$0EBE42F51D520346,$B86E0FB1D4F4EF2F,$BEFBFFFF7BF7DEFB,$62C64AD5611118FB,$899B95B1A68A814B,$2AAA6D2AAA6CF2C8,$11110CBD268CF2B5,$C5B11233CAD40351,$EC5D00DC9980259C
  Data.q $0580D401CFB57449,$462C649D84C79F36,$1CC50824A13FF7B9,$75E01FFB0849F1E0,$E8CA6E307688E005,$EFBBD00575E177DD,$82A2DECCE5F5FD22,$92A346795A893D8B,$7A4D00D44C92A34C,$A6C92A3432F49A19
  Data.q $DDC4D68A987DABAA,$FD84301FA88F8728,$CF5EBC20386D3CCC,$74E080E182767DA0,$14229E22ED5E98F3,$8EEF4C6C26D73C6A,$778804C00090D7F1,$C3FEA19BA7002BAF,$C58C906F6F8FB05A,$3B3ED0824A0006C8
  Data.q $3FAFC0005E579BC1,$B818EC6C6444886B,$0AEBC0ED11C2CD3E,$9283D1BDF093E3C0,$8949EA788655E820,$239A7114FC070EA0,$D6B3DD380CBD41DA,$7A98192E781ADFE8,$FED9BEC5B6451632,$038E62818EC6C19C
  Data.q $9BFC825195990494,$2440CBD4865D9FBD,$329B8C59FBDA37C2,$97E701CC55B72094,$0FC788EB6869531D,$C69A2A413F2F511F,$1C1957A4B4D5350A,$01ADFE866E9C0ED1,$29E39BE412824F8F,$54D428C777A62A98
  Data.q $3B2FCE76998D3454,$4DD841252066A788,$897E6E9C03FF6103,$7D6CF0CABD0CA6E3,$7D8E964B33A7D71B,$2AF4079A6EC1BA17,$023ADA1ECA2BCB33,$6AB6B7C590F97C00,$0948058BFF9B2C76,$789F17F60AA2E972
  Data.q $9600B0DFF4180EE5,$C912C4C04023F320,$1FE4F31FFB0246AB,$6EE9E4CC506B93A8,$444E454900000000
  Data.b $AE,$42,$60,$82
  
  Lingot_d_or:
  ; size : 537 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$1600000015000000,$D7832F0000000608,$474B620600000038,$A0FF00FF00FF0044,$700900000093A7BD,$00130B0000735948,$189C9A0001130B00,$454D497407000000
  Data.q $1B2320171408E007,$49A60100000EDA11,$2D95ADCB38544144,$34DEDF861450C26F,$596405425B34CC35,$1C310F92AD85921A,$98609BE090431313,$1999D044986FC101,$082721D9899216FC,$D54101510C4C2C16
  Data.q $5BDBDEE3F4A274D4,$E4F379EF4D31D920,$441E79E4AD26E79C,$2E7CC7E6C48C34D5,$20EFA8E034E4A521,$D344BA6773A9D553,$E43E022CB034BC30,$AA4BA670EB54C817,$60A9276528EAA997,$EA7C70F855DE0222
  Data.q $1E1C9243D4217652,$A387584E1660B202,$FE285C55C60423BE,$A9A877D461AC6DF3,$3C0868DE1750ED09,$F64FBE580040862B,$FAE5439A721D239E,$C00AA259773DC00B,$A72284F09B90E444,$681FB9371B3D0384
  Data.q $6031DEC00102A721,$5E5DA5FA1DE133C6,$9AAFACFFE2B3C0F1,$72A10786E4A80A2B,$D486E4A0F75DD35A,$91B8DD9897BAEE06,$D9ECC47F53342153,$AF281AE767856002,$3B8FD66543BF4A9A,$54DD82303DDDDBD4
  Data.q $9C238D3A06D6FEFC,$D0606930300081C6,$79CBBB7AC0E0DADF,$22FD82B9AA875996,$EA27127E778B3C61,$8771CB3D638BFC34,$8E55A160AD42D303,$16F75FCFFA7EBDFC,$C15A8152ABE16579,$2EF6B30A49FBF89F
  Data.q $40AD5FCE3C047EB6,$D3041870247366BB,$D9AEF32AD02A69FC,$FECE0BF09E79E49C,$B1DE4801FDCD8EEC,$0000006899C0CBDE,$6042AE444E454900
  Data.b $82
  
EndDataSection
;}

UsePNGImageDecoder()

OpenWindow(#Fenetre, 327, 177, 496, 320, "Exemple bouton coloré...",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar)
CreateButtonColor(#ButonGadgetColor0, 10, 10, 150, 30, "")

CreateButtonColor(#ButonGadgetColor1, 160, 10, 150, 30, "Bouton coloré simple")
CreateButtonColor(#ButonGadgetColor2, 310, 10, 175, 30, "Bouton coloré simple bleu", RGBA(0, 0, 255, 255))
CreateButtonColor(#ButonGadgetColor3, 10, 40, 150, 30, "Bouton coloré alpha", RGBA(255, 0, 0, 100), RGBA(255, 200, 0, 50))
CreateButtonColor(#ButonGadgetColor4, 160, 40, 150, 30, "", RGBA(0, 0, 0, 0), RGBA(0, 255, 0, 255))
CreateButtonColor(#ButonGadgetColor5, 310, 40, 175, 30, "Bouton coloré + curseur", RGBA(255, 255, 0, 255), RGBA(255, 0, 0, 255), #False, #BC_Cursor_HAND)
CreateButtonColor(#ButonGadgetColor6, 10, 70, 150, 30, "Bouton coloré interrupteur", RGBA(0, 100, 0, 255), RGBA(0, 0, 0, 0), #True)

CreateButtonColor(#ButonGadgetColor7, 160, 70, 150, 30, "Bouton coloré avec font", RGBA(255, 255, 255, 255), RGBA(0, 0, 255, 25))
SetGadgetColorFont(#ButonGadgetColor7, "Times New Roman", 8, #BC_Font_Bold | #BC_Font_Italic)

CreateButtonColor(#ButonGadgetColor8, 310, 70, 175, 30, "Bouton coloré mix 1", RGBA(255, 0, 255, 255), RGBA(0, 255, 255, 25), #True, #BC_Cursor_WAIT)
SetGadgetColorFont(#ButonGadgetColor8, "Arial", 8, #BC_Font_Italic | #BC_Font_Underline)

CreateButtonColor(#ButonGadgetColor9, 10, 100, 300, 30, "Bouton coloré avec un joli texte dégradé horizontal", 0, RGBA(0, 0, 0, 50))
SetButtonColorGradientTextColor(#ButonGadgetColor9, 1, RGBA(0, 0, 255, 255), RGBA(0, 255, 0, 255), RGBA(255, 255, 0, 255), RGBA(255, 0, 0, 255), RGBA(0, 0, 255, 255))

CreateButtonColor(#ButonGadgetColor10, 10, 130, 300, 30, "Bouton coloré avec un joli texte dégradé vertical", 0, RGBA(0, 0, 0, 125))
SetButtonColorGradientTextColor(#ButonGadgetColor10, 2, RGBA(0, 0, 255, 255), RGBA(0, 255, 0, 255), RGBA(255, 255, 0, 255), RGBA(255, 0, 0, 255), RGBA(0, 0, 255, 255))

CreateButtonColor(#ButonGadgetColor11, 310, 100, 175, 60, "Bouton coloré + icône", RGBA(0, 0, 255, 100))
SetButtonColorAttribute(#ButonGadgetColor11, #BC_Image, CatchImage(#PB_Any, ?Lingot_d_or))
SetButtonColorAttribute(#ButonGadgetColor11, #BC_ImageTransparence, 75)
SetButtonColorAttribute(#ButonGadgetColor11, #BC_ImagePosition, 3)
SetButtonColorAttribute(#ButonGadgetColor11, #BC_ImageOffSetX, 10)
SetButtonColorAttribute(#ButonGadgetColor11, #BC_TextOffSetX, 15)

CreateButtonColor(#ButonGadgetColor12, 10, 160, 300, 30, "Bouton coloré avec un joli fond dégradé horizontal", RGBA(0, 0, 0, 112), RGBA(0, 0, 0, 100))
SetButtonColorGradientBackColor(#ButonGadgetColor12, 1, RGBA(0, 0, 255, 255), RGBA(0, 255, 0, 255), RGBA(255, 255, 0, 255), RGBA(255, 0, 0, 255), RGBA(0, 0, 255, 255))

CreateButtonColor(#ButonGadgetColor13, 10, 190, 300, 30, "Bouton coloré avec un joli fond dégradé vertical", RGBA(0, 0, 0, 112), RGBA(0, 0, 0, 100))
SetButtonColorGradientBackColor(#ButonGadgetColor13, 2, RGBA(0, 0, 255, 255), RGBA(0, 255, 0, 255), RGBA(255, 255, 0, 255), RGBA(255, 0, 0, 255), RGBA(0, 0, 255, 255))

CreateButtonColor(#ButonGadgetColor14, 310, 160, 175, 60, "Bouton coloré + texte pivoté", RGBA(255, 0, 0, 125))
SetButtonColorAttribute(#ButonGadgetColor14, #BC_AngleText, 12)

CreateButtonColor(#ButonGadgetColor15, 10, 220, 300, 30, "Bouton coloré + texte cadré à droite", RGBA(0, 0, 255, 255), RGBA(0, 255, 0, 75))
SetButtonColorAttribute(#ButonGadgetColor15, #BC_TextPosition, 5)
SetButtonColorAttribute(#ButonGadgetColor15, #BC_TextOffSetX, -5)

CreateButtonColor(#ButonGadgetColor16, 310, 220, 175, 30, "Bouton coloré désactivé", RGBA(100, 100, 0, 150))
DisableGadget(#ButonGadgetColor16, #True)

CreateButtonColor(#ButonGadgetColor17, 11, 251, 150, 28, "Bouton coloré type flat", RGBA(255, 255, 255, 255), RGBA(255, 0, 0, 255))
SetButtonColorAttribute(#ButonGadgetColor17, #BC_Style, #BC_Style_Flat)

CreateButtonColor(#ButonGadgetColor18, 163, 251, 146, 28, "Bouton coloré type 3D", RGBA(255, 0, 0, 255), RGBA(255, 200, 0, 255))
SetButtonColorAttribute(#ButonGadgetColor18, #BC_Style, #BC_Style_3D)

CreateButtonColor(#ButonGadgetColor19, 311, 251, 173, 55, "Bouton coloré mix 2", 0, RGBA(0, 0, 0, 255))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Cursor, #BC_Cursor_HAND)
SetGadgetColorFont(#ButonGadgetColor19, "Times New Roman", 9, #BC_Font_Bold | #BC_Font_Italic | #BC_Font_Underline)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Style, #BC_Style_Flat)
SetButtonColorGradientTextColor(#ButonGadgetColor19, 2, RGBA(255, 0, 0, 255), RGBA(255, 150, 0, 255), RGBA(255, 0, 0, 255), -1, -1)
SetButtonColorGradientBackColor(#ButonGadgetColor19, 2, RGBA(0, 0, 255, 255), RGBA(0, 255, 0, 255), RGBA(255, 255, 0, 255), RGBA(255, 0, 0, 255), RGBA(0, 0, 255, 255))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Image, CatchImage(#PB_Any, ?Piece_d_or))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImagePosition, 5)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImageOffSetX, -15)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImageOffSetY, 10)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextPosition, 4)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextOffSetX, 15)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextOffSetY, 10)

CreateButtonColor(#ButonGadgetColor20, 10, 280, 300, 30, "Bouton coloré type sans bordure", RGBA(255, 255, 255, 255), RGBA(0, 0, 255, 100))
SetButtonColorAttribute(#ButonGadgetColor20, #BC_Style, #BC_Style_NoBorder)

Repeat ; Départ de la boucle des évènements.
  
  Event = WaitWindowEvent(1) ; Cette ligne attend pendant (Minuteur) qu'un évènement soit reçu par la fenêtre.
  EventGadget = EventGadget(); Pour savoir sur quel gadget s'est produit l'évènement.
  
  Select Event 
      
    Case #PB_Event_Gadget
      
      Select EventGadget
          
        Case 0
          
      EndSelect
      
  EndSelect
  
Until Event = #PB_Event_CloseWindow ; Fin de la boucle des évènements.
Dernière modification par Shadow le sam. 01/avr./2017 13:57, modifié 2 fois.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: CreateButtonColor

Message par Ar-S »

C'est très bien. Le seul truc que tu n'as pas pris en compte c'est les DPI pour un affichage sur un windows à affichage zoomé. dans ce cas certains textes dépassent des boutons.

Par contre je ne suis pas sûr que tu sois dans la bonne section. Ici on propose des logiciels. Ton code à plus sa place dans la section "trucs et astuces".
Tu aurais fait un générateur de boutons ça ferait l'affaire ici. Tu nous proposes plutôt un affichage de boutons colorés qui pourra servir mais qui du coup n'est pas une application. Ne re-post pas, je déplacerai le message dans la journée.

Bravo encore, cette fois tu fais un code utile et propre, ça fait plaisir.
~~~~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
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: CreateButtonColor

Message par Mindphazer »

Je ne comprends pas pourquoi il n'a pas mis à jour son autre thread, plutôt que d'en créer un autre avec exactement le même titre...
Enfin bon, bref....
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: CreateButtonColor

Message par Shadow »

Le seul truc que tu n'as pas pris en compte c'est les DPI pour un affichage sur un windows à affichage zoomé
Merci du retour Ar'S, je ne connais rien là dessus, est ce que je pourrais avoir de l'aide svp ?

J'aurais besoin d'un maximum d'information sur cette bibliothèque.
Fonctionne t-elle sur tous les système de Pure Basic ?

Comment la trouvez vous, est ce que c'est fluide, facile, etc ?
Toutes critique constructive et utile est la bienvenue, hésitez pas surtout.

Merci à vous :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Mindphazer
Messages : 639
Inscription : mer. 24/août/2005 10:42

Re: CreateButtonColor

Message par Mindphazer »

Shadow a écrit : Fonctionne t-elle sur tous les système de Pure Basic ?
Vu que tu fais appel à des API Windows un peu partout, la réponse est non.
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: CreateButtonColor

Message par Shadow »

Ah mince :|
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: CreateButtonColor

Message par JohnJohnsonSHERMAN »

Merci Shadow ! Un truc utile :mrgreen:
En tout cas j'apprécie bien le bouton + icone, c'est un truc que j'ai toujours eu la flemme de faire moi même :lol:
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: CreateButtonColor

Message par Shadow »

Mais de rien :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: CreateButtonColor

Message par Ar-S »

Mindphazer a écrit :Je ne comprends pas pourquoi il n'a pas mis à jour son autre thread, plutôt que d'en créer un autre avec exactement le même titre...
Enfin bon, bref....
J'ai supprimé second topic doublon.
~~~~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
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: CreateButtonColor

Message par falsam »

Code : Tout sélectionner

; Valeurs possibles pour le Curseur:
#BC_Cursor_ARROW = 32512 ; la flèche (le curseur normal)
#BC_Cursor_IBEAM = 32513 ; curseur sélection de texte
#BC_Cursor_UPARROW = 32516 ; flèche qui pointe vers le haut
#BC_Cursor_APPSTARTING = 32650 ; curseur attente (flèche + sablier)
#BC_Cursor_WAIT = 32514        ; curseur occupé (sablier)
#BC_Cursor_CROSS = 32515       ; curseur précision de la sélection (croix)
#BC_Cursor_SIZENWSE = 32642    ; curseur de dimensionnement, pointe le NordOuest et le SudEst
#BC_Cursor_SIZENESW = 32643    ; curseur de dimensionnement, pointe le NE et le SO
#BC_Cursor_SIZEWE = 32644      ; curseur de dimensionnement, pointe le E et le O
#BC_Cursor_SIZENS = 32645      ; curseur de dimensionnement, pointe le N et le S
#BC_Cursor_SIZEALL = 32646     ; curseur de déplacement, pointe le N, S, E et O
#BC_Cursor_HELP = 32651        ; curseur aide
#BC_Cursor_HAND = 32649        ; curseur main
#BC_Cursor_NO = 32648          ; curseur "interdit" (panneau d'interdiction)
Pourquoi tu n'utilises pas les constantes de PureBasic ? #PB_Cursor_Arrows, #PB_Cursor_Busy, etc ....

Code : Tout sélectionner

; Valeurs possibles pour les Fontes:
#BC_Font_Bold = #PB_Font_Bold
#BC_Font_Italic = #PB_Font_Italic
#BC_Font_Underline = #PB_Font_Underline
#BC_Font_StrikeOut = #PB_Font_StrikeOut
Pas utile non plus. Autant utiliser les constantes prédéfinis dans les paramètres de ta fonction.
Fonctionne t-elle sur tous les système de Pure Basic ?
je te confirme que ton code n'est pas multiplate-forme car tu utilises des constantes et fonctionnalités propes à Windows et donc non compatibles Linux ou Mac. #WM_NCDESTROY, #WM_SETCURSOR, GetProp_(hwnd, "cursor"), etc ...

Au risque de me faire incendier, Je préfère utiliser les fonctions natives (ButtonImageGadget() & CanvasGadget()) pour créer un bouton image simple ou complexe plutôt que de faire comme cela

Code : Tout sélectionner

CreateButtonColor(#ButonGadgetColor19, 311, 251, 173, 55, "Bouton coloré mix 2", 0, RGBA(0, 0, 0, 255))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Cursor, #BC_Cursor_HAND)
SetGadgetColorFont(#ButonGadgetColor19, "Times New Roman", 9, #BC_Font_Bold | #BC_Font_Italic | #BC_Font_Underline)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Style, #BC_Style_Flat)
SetButtonColorGradientTextColor(#ButonGadgetColor19, 2, RGBA(255, 0, 0, 255), RGBA(255, 150, 0, 255), RGBA(255, 0, 0, 255), -1, -1)
SetButtonColorGradientBackColor(#ButonGadgetColor19, 2, RGBA(0, 0, 255, 255), RGBA(0, 255, 0, 255), RGBA(255, 255, 0, 255), RGBA(255, 0, 0, 255), RGBA(0, 0, 255, 255))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Image, CatchImage(#PB_Any, ?Piece_d_or))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImagePosition, 5)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImageOffSetX, -15)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImageOffSetY, 10)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextPosition, 4)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextOffSetX, 15)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextOffSetY, 10)
Et pour des boutons circulaires ou de formes complexes, il y a les fonctionnalités vectorielles de PureBasic :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: CreateButtonColor

Message par Shadow »

falsam a écrit :

Code : Tout sélectionner

; Valeurs possibles pour le Curseur:
#BC_Cursor_ARROW = 32512 ; la flèche (le curseur normal)
#BC_Cursor_IBEAM = 32513 ; curseur sélection de texte
#BC_Cursor_UPARROW = 32516 ; flèche qui pointe vers le haut
#BC_Cursor_APPSTARTING = 32650 ; curseur attente (flèche + sablier)
#BC_Cursor_WAIT = 32514        ; curseur occupé (sablier)
#BC_Cursor_CROSS = 32515       ; curseur précision de la sélection (croix)
#BC_Cursor_SIZENWSE = 32642    ; curseur de dimensionnement, pointe le NordOuest et le SudEst
#BC_Cursor_SIZENESW = 32643    ; curseur de dimensionnement, pointe le NE et le SO
#BC_Cursor_SIZEWE = 32644      ; curseur de dimensionnement, pointe le E et le O
#BC_Cursor_SIZENS = 32645      ; curseur de dimensionnement, pointe le N et le S
#BC_Cursor_SIZEALL = 32646     ; curseur de déplacement, pointe le N, S, E et O
#BC_Cursor_HELP = 32651        ; curseur aide
#BC_Cursor_HAND = 32649        ; curseur main
#BC_Cursor_NO = 32648          ; curseur "interdit" (panneau d'interdiction)
Pourquoi tu n'utilises pas les constantes de PureBasic ? #PB_Cursor_Arrows, #PB_Cursor_Busy, etc ....
C'est les même valeurs tu es sur ?

Code : Tout sélectionner

; Valeurs possibles pour les Fontes:
#BC_Font_Bold = #PB_Font_Bold
#BC_Font_Italic = #PB_Font_Italic
#BC_Font_Underline = #PB_Font_Underline
#BC_Font_StrikeOut = #PB_Font_StrikeOut
Pas utile non plus. Autant utiliser les constantes prédéfinis dans les paramètres de ta fonction.
C'est à dire ?
Fonctionne t-elle sur tous les système de Pure Basic ?
je te confirme que ton code n'est pas multiplate-forme car tu utilises des constantes et fonctionnalités propes à Windows et donc non compatibles Linux ou Mac. #WM_NCDESTROY, #WM_SETCURSOR, GetProp_(hwnd, "cursor"), etc ...
Et bien j’espère avec votre aide amélioré tous ça :)

Au risque de me faire incendier, Je préfère utiliser les fonctions natives (ButtonImageGadget() & CanvasGadget()) pour créer un bouton image simple ou complexe plutôt que de faire comme cela

Code : Tout sélectionner

CreateButtonColor(#ButonGadgetColor19, 311, 251, 173, 55, "Bouton coloré mix 2", 0, RGBA(0, 0, 0, 255))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Cursor, #BC_Cursor_HAND)
SetGadgetColorFont(#ButonGadgetColor19, "Times New Roman", 9, #BC_Font_Bold | #BC_Font_Italic | #BC_Font_Underline)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Style, #BC_Style_Flat)
SetButtonColorGradientTextColor(#ButonGadgetColor19, 2, RGBA(255, 0, 0, 255), RGBA(255, 150, 0, 255), RGBA(255, 0, 0, 255), -1, -1)
SetButtonColorGradientBackColor(#ButonGadgetColor19, 2, RGBA(0, 0, 255, 255), RGBA(0, 255, 0, 255), RGBA(255, 255, 0, 255), RGBA(255, 0, 0, 255), RGBA(0, 0, 255, 255))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_Image, CatchImage(#PB_Any, ?Piece_d_or))
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImagePosition, 5)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImageOffSetX, -15)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_ImageOffSetY, 10)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextPosition, 4)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextOffSetX, 15)
SetButtonColorAttribute(#ButonGadgetColor19, #BC_TextOffSetY, 10)
Et pour des boutons circulaires ou de formes complexes, il y a les fonctionnalités vectorielles de PureBasic :wink:
Pas de soucis Falsam, dis ainsi aucun problème, tu as parfaitement le droit de ne pas aimer, merci à toi ;)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: CreateButtonColor

Message par Ar-S »

Code : Tout sélectionner

; Valeurs possibles pour les Fontes:
#BC_Font_Bold = #PB_Font_Bold
#BC_Font_Italic = #PB_Font_Italic
#BC_Font_Underline = #PB_Font_Underline
#BC_Font_StrikeOut = #PB_Font_StrikeOut
C'est à dire ?
C'est à dire autant ecrire #PB_Font_Bold etc.. puisque c'est natif. C'est ajouter des constantes pour rien.
C'est aussi improbable que d’écrire par exemple #PB_Window_TitleBar = #FE_Window_TitleBar
Du coup tu dénatures le code natif et tu pompes un poil de mémoire en plus pour chaque constantes allouée pour rien.
~~~~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
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: CreateButtonColor

Message par Shadow »

Merci Ar'S, je prends Note mais je vais laisser t'elle quel pour cette version-ci :)
Zip ajouté avec le code, un exemple et l'Aide.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: CreateButtonColor

Message par Shadow »

Au vus des quelques petits problèmes de cette bibliothèque, Notament les Api's
Je vais la refaire entièrement mais cette fois avec un Canvas.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: CreateButtonColor

Message par falsam »

Shadow a écrit :Au vus des quelques petits problèmes de cette bibliothèque, Notament les Api's
Je vais la refaire entièrement mais cette fois avec un Canvas.
Je renouvelle ce que je t'ai préconisé sur un topic identique à celui là et qui depuis n'existe plus.

Ce sera pour toi l'occasion de faire un nouveau sujet sur le bouton gadget :mrgreen:

:idea: Base toi sur le CanvasGadget()

Ce squelette de code me semble une bonne base. J'insiste ..... C'est un squelette.

A toi de donner la forme du bouton et les effets visuels que tu souhaites.

Dans cet exemple tu as une gestion automatique des événements. J'ai juste ajouté l'apparition de la main au survol du bouton.

Je connais déja ta question : Est ce qu'on peut rendre le canvas transparent ? et bien oui c'est possible en lui donnant la couleur de la fenêtre. Je te laisse chercher comment faire.

Au final ton code fonctionnera avec tous les OS.

Code : Tout sélectionner

;Ton include ou module
Procedure ButtonEvent()  
  Protected Gadget = EventGadget()
  
  Select EventType()
    Case #PB_EventType_MouseEnter      ; The mouse cursor entered the gadget
      Debug "#PB_EventType_MouseEnter"  
      SetGadgetAttribute(Gadget, #PB_Canvas_Cursor, #PB_Cursor_Hand)
      
    Case #PB_EventType_MouseLeave      ; The mouse cursor left the gadget
      Debug "#PB_EventType_MouseLeave"  
      
    Case #PB_EventType_MouseMove      ; The mouse cursor moved
      Debug "#PB_EventType_MouseMove"
      
    Case #PB_EventType_MouseWheel    ; The mouse wheel was moved
      Debug "#PB_EventType_MouseWheel"
      
    Case #PB_EventType_LeftButtonDown ; The left mouse button was pressed
      Debug "#PB_EventType_LeftButtonDown"
      
    Case #PB_EventType_LeftButtonUp    ; The left mouse button was released
      Debug "#PB_EventType_LeftButtonUp"
      
    Case #PB_EventType_LeftClick       ; A click With the left mouse button
      Debug "#PB_EventType_LeftClick"
      
    Case #PB_EventType_LeftDoubleClick ; A double-click With the left mouse button
      Debug "#PB_EventType_LeftDoubleClick"
      
    Case #PB_EventType_RightButtonDown ; The right mouse button was pressed
      Debug "#PB_EventType_RightButtonDown"
      
    Case #PB_EventType_RightButtonUp   ; The right mouse button was released
      Debug "#PB_EventType_RightButtonUp"
      
    Case #PB_EventType_RightClick      ; A click With the right mouse button
      Debug "#PB_EventType_RightClick"
      
    Case #PB_EventType_RightDoubleClick ; A double-click With the right mouse button
      Debug "#PB_EventType_RightDoubleClick"
      
    Case #PB_EventType_MiddleButtonDown ; The middle mouse button was pressed
      Debug #PB_EventType_MiddleButtonDown
      
    Case #PB_EventType_MiddleButtonUp  ; The middle mouse button was released
      Debug "#PB_EventType_MiddleButtonUp"
      
    Case #PB_EventType_Focus           ; The gadget gained keyboard focus
      Debug "#PB_EventType_Focus"
      
    Case #PB_EventType_LostFocus       ; The gadget lost keyboard focus
      Debug #PB_EventType_LostFocus
      
    Case #PB_EventType_KeyDown        ; A key was pressed
      Debug "#PB_EventType_KeyDown"
      
    Case #PB_EventType_KeyUp           ; A key was released
      Debug "#PB_EventType_KeyUp"
      
  EndSelect
EndProcedure

Procedure Button(Gadget, x, y, Width, Height, Text.s)   
  ;je te laisse gérer le #PB_Any
  CanvasGadget(Gadget, x, y, Width, height)
  
  ;Dessin du texte (A toi de faire ce que tu veux)
  
  StartDrawing(CanvasOutput(Gadget))
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawText(5, 5, Text, RGB(0, 0, 0))
  StopDrawing()
  
  ;Et maintenant le déclencheur 
  BindGadgetEvent(Gadget, @ButtonEvent())
EndProcedure

;////// ZONE DE TEST ///////////////////

;Plan de l'application
Declare Start()
Declare Exit()

Start()

Procedure Start()
  OpenWindow(0, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  Button(1, 700, 20, 80, 24, "Button 1")
  Button(2, 700, 60, 80, 24, "Button 2")
  
  ;Triggers
  BindEvent(#PB_Event_CloseWindow, @Exit())
  
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure Exit()  
  End
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre