Page 4 sur 4

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

Posté : dim. 03 mai 2020 21:58
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.

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

Posté : dim. 03 mai 2020 22:51
par jchd
Eh oui, c'est bien pour ça que j'avais précisé et lâché un petit exemple.

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

Posté : lun. 04 mai 2020 16:26
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

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

Posté : lun. 04 mai 2020 19:23
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

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

Posté : mar. 12 mai 2020 07:35
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

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

Posté : jeu. 02 juin 2022 02:25
par Anthony
Mise à jour...
Correction de bug et ajout d'une version light.
Vous devez retélécharger UDF

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

Posté : lun. 17 mars 2025 09:40
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.

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

Posté : mer. 19 mars 2025 05:38
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