[UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 17/03/2025

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Avatar du membre
Anthony
Niveau 7
Niveau 7
Messages : 321
Enregistré le : lun. 17 janv. 2011 14:08
Localisation : France
Status : Hors ligne

Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 03/05/2020, 19h45

#61

Message par Anthony »

Nous sommes sur un UDF donc gestion d’erreurs, mais l'exemple de jchd permet de voir certaines fonctions sympas.
Mieux vaut trop que pas assez, même si en passant par ici on m'à vite raccourci le code de base et pour la bonne cause.
J'aimerai comprendre mes erreurs alors je fais une pause que vous puissiez parcourir mon code actuel sur le post #1 ou lien UDF dans ma signature.
Merci.
Je suis diagnostiqué pour trouble de la concentration, soyez indulgent
Merci à tous pour votre aide.
UDF: GuiStatusBarEx --- 2025/03/17 --- Une StatusBar complète, rapide et simple
Code: Code-Texte fusion --- Une GUI pour fusionner des GCodes pour CNC 3018
Cool: Base64 Compression Tool --- des fichiers dans vos scripts
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 03/05/2020, 19h45

#62

Message par jchd »

Eh oui, c'est bien pour ça que j'avais précisé et lâché un petit exemple.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1036
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30

#63

Message par walkson »

walkson a écrit : dim. 03 mai 2020 19:48 petite remarque en passant
If Not Number($id_Ctrl) Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber))
Dans le cas présent, on ne contrôle pas un nombre mais un Handle. C'est pas pareil :mrgreen:
Faut visiter tous les "Is...."
Je me suis planté, c'est un ID
Mais c'est de votre faute :mrgreen:
; Parameters ....: $id_Ctrl             - Handle du contrôle.
;                  $IndexFunc           - Index de la fonction.
;                  $iState             - Options de la fonction.
:P
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Anthony
Niveau 7
Niveau 7
Messages : 321
Enregistré le : lun. 17 janv. 2011 14:08
Localisation : France
Status : Hors ligne

Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 03/05/2020, 19h45

#64

Message par Anthony »

Oui çà arrive, j'y suis aussi pour quelque chose :lol:
Sinon quoi de pas bon, le sapin de Noël est rangé ?
Je viens de voir qu'avec des "GUICtrlCreateListView" çà flike :x Grrrr
Je suis diagnostiqué pour trouble de la concentration, soyez indulgent
Merci à tous pour votre aide.
UDF: GuiStatusBarEx --- 2025/03/17 --- Une StatusBar complète, rapide et simple
Code: Code-Texte fusion --- Une GUI pour fusionner des GCodes pour CNC 3018
Cool: Base64 Compression Tool --- des fichiers dans vos scripts
Avatar du membre
Anthony
Niveau 7
Niveau 7
Messages : 321
Enregistré le : lun. 17 janv. 2011 14:08
Localisation : France
Status : Hors ligne

Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 15/05/2020, 07h30

#65

Message par Anthony »

Mise à jour voir Post #1
Il est maintenant possible de mettre en fond une photo ou un dégradé ou les deux... où l'on veut.
_GUICtrlCreateGradientColor à été remplacé par _GUICtrlCreateBackGround et est maintenant indépendant, merci walkson et mikell récupérer l'ID est important :P
Je suis diagnostiqué pour trouble de la concentration, soyez indulgent
Merci à tous pour votre aide.
UDF: GuiStatusBarEx --- 2025/03/17 --- Une StatusBar complète, rapide et simple
Code: Code-Texte fusion --- Une GUI pour fusionner des GCodes pour CNC 3018
Cool: Base64 Compression Tool --- des fichiers dans vos scripts
Avatar du membre
Anthony
Niveau 7
Niveau 7
Messages : 321
Enregistré le : lun. 17 janv. 2011 14:08
Localisation : France
Status : Hors ligne

Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 02/06/2022

#66

Message par Anthony »

Mise à jour...
Correction de bug et ajout d'une version light.
Vous devez retélécharger UDF
Je suis diagnostiqué pour trouble de la concentration, soyez indulgent
Merci à tous pour votre aide.
UDF: GuiStatusBarEx --- 2025/03/17 --- Une StatusBar complète, rapide et simple
Code: Code-Texte fusion --- Une GUI pour fusionner des GCodes pour CNC 3018
Cool: Base64 Compression Tool --- des fichiers dans vos scripts
Avatar du membre
Anthony
Niveau 7
Niveau 7
Messages : 321
Enregistré le : lun. 17 janv. 2011 14:08
Localisation : France
Status : Hors ligne

Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 17/03/2025

#67

Message par Anthony »

Mise à jour...
Correction de la position des Objets dans la StatusBarEx.
Ajout de:
; Clock..........: $id_Ctrl, 1, [$iState]
; [0] = Affiche une date et/ou une heure.
; S'il y a une partie de date, l'afficher comme une date courte.
; S'il y a une partie d'une heure, l'afficher comme une heure longue.
; Si présent, les deux parties sont affichées.
; [1] = Affiche une date en utilisant la date au format long spécifié dans les paramètres régionaux de votre ordinateur.
; [2] = Affiche une date en utilisant la date au format court spécifié dans les paramètres régionaux de votre ordinateur.
; [3] = Affiche une heure en utilisant l'heure au format spécifié dans les paramètres régionaux de votre ordinateur.
; [4] = Affiche une heure en utilisant le format 24 heures (hh:mm).
; [5] = Affiche une heure en utilisant le format 24 heures (hh:mm:ss).
; [6] = Identique à [0] avec le jour format court de la semaine avant la date.
; [7] = Identique à [0] avec le jour format long de la semaine avant la date.
; [8] = Identique à [0] avec le jour format court de la semaine avant la date et numéro de la semaine à la fin.
; [9] = Identique à [0] avec le jour format long de la semaine avant la date et numéro de la semaine à la fin.
Vous devez retélécharger l'UDF et démos.
Je suis diagnostiqué pour trouble de la concentration, soyez indulgent
Merci à tous pour votre aide.
UDF: GuiStatusBarEx --- 2025/03/17 --- Une StatusBar complète, rapide et simple
Code: Code-Texte fusion --- Une GUI pour fusionner des GCodes pour CNC 3018
Cool: Base64 Compression Tool --- des fichiers dans vos scripts
Avatar du membre
Anthony
Niveau 7
Niveau 7
Messages : 321
Enregistré le : lun. 17 janv. 2011 14:08
Localisation : France
Status : Hors ligne

Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 17/03/2025

#68

Message par Anthony »

Bonjour à tous,

Voici un code fonctionnel pour 2 StatusBar dans la même GUI et je souhaiterai l'intégrer dans mon UDF GuiStatusBarEx.au3 pour 2, 3, 4... plusieurs quoi
Y aurrait t'il une âme charitable qui, en se promenant par ici qui aurait une idée d'intégration propre ?

Voilou.
#include <Array.au3>
#include <Date.au3>
#include <DateTimeConstants.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>
#include <WinAPISysWin.au3>
#include <WinAPITheme.au3>
#include <WindowsConstants.au3>

; Création de la fenêtre principale
Global $hGui = GUICreate("Interface Principale", 800, 220, -1, 80, $WS_OVERLAPPEDWINDOW)

; Forcer le positionnement initial
_MY_WM_SIZE_Handler($hGui, $WM_SIZE, 0, 0)

; Affichage
GUISetState(@SW_SHOW, $hGui)

;~ ConsoleWrite( @ScriptLineNumber & " = " & $X &", "& $Y &", "& $W &", "& $H & @CRLF)

; Affichage des coordonnées pour vérification
_ArrayDisplay( $aInfo_Status_1, @ScriptLineNumber & " Coordonnées Status 1")
_ArrayDisplay($aInfo_Status_2, @ScriptLineNumber & " Coordonnées Status 2")

; Boucle principale
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd

GUIDelete($hGui_Status_1)
GUIDelete($hGui_Status_2)
GUIDelete($hGui)

Func _MY_WM_SIZE_Handler($hWnd, $iMsg, $wParam, $lParam)

   If Not IsDeclared("hGui_Status_1") Then

      Local $aSize = WinGetClientSize($hWnd)

      ; *********> Barre d'état "Chiffre d'affaire" **********
      Global $hGui_Status_1 = GUICreate("", $aSize[0], 22, 0, $aSize[1] - 22, $WS_CHILD, 0, $hWnd)
      Global $a_StatusBar_1 = ["Total CA", "Jour: 0€", "Semaine: 0€", "Mois: 0€", "Année: 0€", "Date et heure: "]

      ; Fonction pour calculer la largeur des parties
      Local $iWidth = $aSize[0] / UBound( $a_StatusBar_1)
      Local $aParts[UBound( $a_StatusBar_1)]

      For $i = 0 To UBound( $a_StatusBar_1) - 1
         $aParts[$i] = $iWidth
      Next

      Global $hStatus_Status_1 = _GUICtrlStatusBar_Create( $hGui_Status_1, $aParts, "")
      _WinAPI_SetWindowTheme( $hStatus_Status_1, "", "")


      Global $aInfo_Status_1[UBound( $a_StatusBar_1)][7]
      For $i = 0 To UBound( $a_StatusBar_1) - 1
         Local $aBorder = _GUICtrlStatusBar_GetBorders( $hStatus_Status_1)
         Local $vBorderHor = $aBorder[0]
         Local $vBorderVer = $aBorder[1]
         Local $vBorderBet = $aBorder[2]

         Local $id_Tmp_Ctrl = GUICtrlCreateButton( "Temp " & $i, -1, -1)
         Local $h_Tmp_Ctrl = GUICtrlGetHandle( $id_Tmp_Ctrl)
         _GUICtrlStatusBar_EmbedControl( $hStatus_Status_1, $i, $h_Tmp_Ctrl, 4)
         Local $aPartPos = ControlGetPos( $hGui_Status_1, "", $id_Tmp_Ctrl)
         GUICtrlDelete( $id_Tmp_Ctrl)

         Local $aRet = _GUICtrlStatusBar_GetRect( $hStatus_Status_1, $i)
         Local $X = $aRet[0] + $vBorderBet / 2
         Local $Y = $aRet[1]
         Local $W = $aPartPos[2] + $vBorderVer
         Local $H = $aPartPos[3] + $vBorderBet / 2

         Local $id_Label = GUICtrlCreateLabel( $a_StatusBar_1[$i], $X, $Y, $W, $H, $SS_CENTER + $SS_CENTERIMAGE)
         Local $h_Label = GUICtrlGetHandle( $id_Label)
         GUICtrlSetBkColor( $id_Label, 0xE0E0E0)   ;     0xB8B8B8 0xE8E8E8 0xE0E0E0
         GUICtrlSetResizing( $id_Label, $GUI_DOCKLEFT + $GUI_DOCKSIZE + $GUI_DOCKBOTTOM)

         ; Stockage des informations dans le tableau
         $aInfo_Status_1[$i][0] = $a_StatusBar_1[$i]
         $aInfo_Status_1[$i][1] = $id_Label
         $aInfo_Status_1[$i][2] = $h_Label
         $aInfo_Status_1[$i][3] = $X
         $aInfo_Status_1[$i][4] = $Y
         $aInfo_Status_1[$i][5] = $W
         $aInfo_Status_1[$i][6] = $H
      Next
     ; <********* Barre d'état "Chiffre d'affaire" **********


     ; *********> Barre d'état "Chiffre par mois" **********
      Global $hGui_Status_2 = GUICreate("", $aSize[0], 22, 0, $aSize[1] - 44, $WS_CHILD, 0, $hWnd)
      Global $a_StatusBar_2 = ["Jan: 0€", "Fév: 0€", "Mar: 0€", "Avr: 0€", "Mai: 0€", "Juin: 0€", "Juil: 0€", "Août: 0€", "Sep: 0€", "Oct: 0€", "Nov: 0€", "Déc: 0€"]

      ; Fonction pour calculer la largeur des parties
      Local $iWidth = $aSize[0] / UBound( $a_StatusBar_2)
      Local $aParts[UBound( $a_StatusBar_2)]

      For $i = 0 To UBound( $a_StatusBar_2) - 1
         $aParts[$i] = $iWidth
      Next

      Global $hStatus_Status_2 = _GUICtrlStatusBar_Create( $hGui_Status_2, $aParts, "")
      _WinAPI_SetWindowTheme( $hStatus_Status_2, "", "")


      Global $aInfo_Status_2[UBound( $a_StatusBar_2)][7]
      For $i = 0 To UBound( $a_StatusBar_2) - 1
         Local $aBorder = _GUICtrlStatusBar_GetBorders( $hStatus_Status_2)
         Local $vBorderHor = $aBorder[0]
         Local $vBorderVer = $aBorder[1]
         Local $vBorderBet = $aBorder[2]

         Local $id_Tmp_Ctrl = GUICtrlCreateButton( "Temp " & $i, -1, -1)
         Local $h_Tmp_Ctrl = GUICtrlGetHandle( $id_Tmp_Ctrl)
         _GUICtrlStatusBar_EmbedControl( $hStatus_Status_2, $i, $h_Tmp_Ctrl, 4)
         Local $aPartPos = ControlGetPos( $hGui_Status_2, "", $id_Tmp_Ctrl)
         GUICtrlDelete( $id_Tmp_Ctrl)

         Local $aRet = _GUICtrlStatusBar_GetRect( $hStatus_Status_2, $i)
         Local $X = $aRet[0] + $vBorderBet / 2
         Local $Y = $aRet[1]
         Local $W = $aPartPos[2] + $vBorderVer
         Local $H = $aPartPos[3] + $vBorderBet / 2

         Local $id_Label = GUICtrlCreateLabel( $a_StatusBar_2[$i], $X, $Y, $W, $H, $SS_CENTER + $SS_CENTERIMAGE)
         Local $h_Label = GUICtrlGetHandle( $id_Label)
         GUICtrlSetBkColor( $id_Label, 0xE0E0E0)   ;     0xB8B8B8 0xE8E8E8 0xE0E0E0
         GUICtrlSetResizing( $id_Label, $GUI_DOCKLEFT + $GUI_DOCKSIZE + $GUI_DOCKBOTTOM)

         ; Stockage des informations dans le tableau
         $aInfo_Status_2[$i][0] = $a_StatusBar_2[$i]
         $aInfo_Status_2[$i][1] = $id_Label
         $aInfo_Status_2[$i][2] = $h_Label
         $aInfo_Status_2[$i][3] = $X
         $aInfo_Status_2[$i][4] = $Y
         $aInfo_Status_2[$i][5] = $W
         $aInfo_Status_2[$i][6] = $H
      Next
     ; <********* Barre d'état "Chiffre par mois" **********

     GUISetState(@SW_SHOW, $hGui_Status_1)
     GUISetState(@SW_SHOW, $hGui_Status_2)

     GUIRegisterMsg($WM_SIZE, "_MY_WM_SIZE_Handler")

   EndIf

    If $hWnd = $hGui Then
     Local $aSize = WinGetClientSize($hWnd)

     WinMove($hGui_Status_1, "", 0, $aSize[1] - 22, $aSize[0], 22)
     WinMove($hGui_Status_2, "", 0, $aSize[1] - 44, $aSize[0], 22)

     _GUICtrlStatusBar_Resize($hStatus_Status_1)
     _GUICtrlStatusBar_Resize($hStatus_Status_2)

     _WinAPI_InvalidateRect($hStatus_Status_1)
     _WinAPI_InvalidateRect($hStatus_Status_2)
    EndIf

    Return $GUI_RUNDEFMSG
EndFunc
Je suis diagnostiqué pour trouble de la concentration, soyez indulgent
Merci à tous pour votre aide.
UDF: GuiStatusBarEx --- 2025/03/17 --- Une StatusBar complète, rapide et simple
Code: Code-Texte fusion --- Une GUI pour fusionner des GCodes pour CNC 3018
Cool: Base64 Compression Tool --- des fichiers dans vos scripts
Répondre