Page 1 sur 1

[EX] Bouton couleur, texte couleur, alignement texte

Posté : dim. 15 sept. 2019 22:01
par walkson
Bonjour,
Étant déçu des boutons de Windows où on ne peut pas mettre de couleurs, ou placer un texte comme on veut, je me suis fait un UDF qui répond à mes attentes et que je vous propose.
Ce bouton est totalement virtuel, dessiné en GdiPlus (pas d’image importée ou autres). Le bouton a 4 positions, en pause, au survole de la souris, au clic et enfin désactivé. Je vous ai mis un vilain pas beau en bas du GUI pour voir la différence.
ImageA.jpg
Cliquez sur l'image pour agrandir
L'entête de l'UDF
; FUNCTIONS ====================================================================================================================
; Name ..........: _ADD_Button
; Name ..........: _ButtonState
; Name ..........: _ButtonDelete
; #FUNCTION# ====================================================================================================================
; Name ..........: _ADD_Button
; Description ...: Crée un pseudo bouton avec couleur, alignement et couleur texte. En surbrillance sous la souris et s'assombrit au clic
; Syntax ........: _ADD_Button($Left, $Top, $width, $height, $Text[, $AlignTextH = 1[, $AlignTextV = 1[, $ColorText = 0xFF000000[,
;                  $hFont = "Arial"[, $fSize = 9[, $iStyle = 0[, $MargeGauche = 0[, $MargeHaute = 0[, $Masq = 0]]]]]]]]])
; Parameters ....: $Left                - La coordonnée X du coin supérieur gauche du contrôle.
;                  $Top                 - La coordonnée Y du coin supérieur gauche du contrôle.
;                  $width               - Largeur du contrôle
;                  $height              - Hauteur du contrôle
;                  $Text                - texte du contrôle.
;                  $AlignTextH          - [optional] Alignement horizontale du texte. 0=gauche 1=milieu 2= droite. Default is 1.
;                  $AlignTextV          - [optional] Alignement verticale du texte. Alignement = 0 haut, 1 milieu, 2 bas. Default is 1.
;                  $ColorText           - [optional] Couleur du texte ARGB. Default is 0xFF000000.
;                  $hFont               - [optional] Nom de la police. Default is "Arial".
;                  $fSize               - [optional] Taille de la police. Default is 9.
;                  $iStyle              - [optional] Style de la police. 0 = normal, 1 = gras, 2 = Italique, etc... Default is 0. (voir _GDIPlus_FontCreate().)
;                  $MargeGauche         - [optional] Marge sur la gauche. Default is 0.
;                  $MargeHaute          - [optional] Marge haute. Default is 0.
;                  $Masq                - [optional] Masque de couleur ARGB en superposition, eg: 0x20FFFF00. Default is 0 (pas de masque).
; Return values .: L'Id du control
; Author ........: Walkson
; Modified ......:
; Remarks .......:
; ===============================================================================================================================
Le texte peut être à droite, au centre ou à gauche, en haut, au milieu ou en bas en jouant sur $AlignTextH ou $AlignTextV. On peut affiner la position en jouant sur les marges gauche et haute avec des données positives ou négatives en utilisant $MargeGauche et $MargeHaute. Le texte peut être coloré, choix de la police, taille etc… Une remarque, le texte ne peut pas être modifié. Si vous voulez le modifier, il faut créer un nouveau bouton (voir exemple).

Le bouton peut être coloré par un masque $Masq en jouant sur la transparence afin de ne pas cacher les effets de relief. Toutes les couleurs (bouton ou texte) sont en ARGB (0xAARRGGBB), c’est-à-dire à 4 canaux, alpha (transparence), rouge, vert, bleu et en hexadécimal (ex : 0xFFA9B500 vert). Pour ceux qui ne connaissent pas, chaque canal s’écrit en deux nombres ou lettres, du plus clair au plus foncé, de F à A puis de 9 à 0. Blanc = 0xFFFFFFFF et noir = 0xFF000000 avec toutes les combinaisons possible. Pour le canal alpha, 0xFF rend opaque et 0x00 rend totalement transparent. A titre d’exemple, le bouton jaune de l’exemple a comme valeur 0x20FFFF00 et le bouton grisé 0x609A9A9A. On a une forte transparence proche de 0x00.

Pour désactiver le bouton, utilisez _ButtonState() et pour le détruire _ButtonDelete() (efface les handles du array et évite des conflits). Autrement, le bouton (qui est en fait un label) réagit à GUICtrlSetState() ou GUICtrlRead () comme n’importe quel control, seul le texte ne peut être changé.

Dans le Zip, l’UDF et un exemple.
Réalisé avec Autoit v3.3.14.5 Sous Win 7 (32)

Merci de vos observations ou remarques

Re: [EX] Bouton couleur, texte couleur, alignement texte

Posté : mar. 02 févr. 2021 14:53
par Mehdi350
c'est super
merci beaucoup

Re: [EX] Bouton couleur, texte couleur, alignement texte

Posté : jeu. 04 févr. 2021 17:07
par walkson
@Mehdi350
Content de savoir que cet UDF vous plaise :D