Thème pour GuiTab(onglets)

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
serpafi
Niveau 3
Niveau 3
Messages : 40
Enregistré le : ven. 25 oct. 2019 21:19
Status : Hors ligne

Thème pour GuiTab(onglets)

#1

Message par serpafi »

Toujours à tous,
Pour un autre projet, j'ai cherché comment créer des thèmes mais le système d'onglet posait problème.
A force j'ai pu obtenir quelque chose de sympa et fonctionnel mais encore améliorable.

Je vous le partage avec plaisir et si vous souhaitez l'améliorer, n’hésitez pas à faire un retour.

Bonne journée

le code :
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <GuiTab.au3>



;~ coloration
Global   $text_color, $TAB_bk_color, $TAB_B_select_color, $TAB_B_color, $TAB_bar_color, $gui_color, $taille, $police, $tab_text_color

Local $aTabPos, $Abouton

 _couleur()

$debut = GUICtrlCreateDummy()
#Region ### START Koda GUI section ### Form=K:\TAO-MKV\TAO-MKV beta\guitab skin.kxf
$Form2 = GUICreate("guitab skin", 601, 544, 600, 149, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_TABSTOP))
$Tab1 = GUICtrlCreateTab(40, 64, 497, 425)
GUICtrlSetResizing(-1, $GUI_DOCKAUTO)

_GUICtrlTab_SetBkColor($Form2, $Tab1, $TAB_bk_color)

$TabSheet1 = GUICtrlCreateTabItem("longueur affichable")
$Edit1 = GUICtrlCreateEdit("", 80, 112, 409, 313)
GUICtrlSetData(-1, "Edit1")
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$ListView1 = GUICtrlCreateListView("", 64, 112, 418, 326)
$TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
$Group1 = GUICtrlCreateGroup("Group1", 72, 104, 209, 169)
$Button1 = GUICtrlCreateButton("Button1", 104, 144, 75, 25)
$Button2 = GUICtrlCreateButton("Button2", 104, 192, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Group2", 296, 248, 225, 217)
$Radio1 = GUICtrlCreateRadio("Radio1", 320, 296, 113, 17)
$Radio2 = GUICtrlCreateRadio("Radio2", 320, 328, 113, 17)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 320, 360, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 320, 392, 97, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$TabSheet4 = GUICtrlCreateTabItem("TabSheet4")
$Label1 = GUICtrlCreateLabel("Label1", 64, 112, 36, 17)
$Combo1 = GUICtrlCreateCombo("Combo1", 112, 112, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$List1 = GUICtrlCreateList("", 136, 224, 273, 201)
GUICtrlCreateTabItem("")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###

$fin = GUICtrlCreateDummy()

_GUICtrlTab_SetBarColor($Form2, $Tab1, $TAB_bk_color, $gui_color)
_GUICtrl_SetColor($Form2, $debut, $fin)
_Tabitem($Tab1)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND_GENERAL")
GUISetState(@SW_SHOW,$Form2)




While 1

   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit

   EndSwitch
WEnd




; #CODE COULEUR# ================================================================================================================
; Fonction.......: lecture des codes couleurs
; ===============================================================================================================================
Func _couleur()
$text_color=0XFFFFFF            ; couleur du texte
$TAB_bk_color=0x292929        ; couleur de fond des onglets
$TAB_B_select_color=0x292929    ; couleur bouton sélectionné
$TAB_B_color=0x373560         ; couleur bouton
$TAB_bar_color=-1           ; "-1" pour éffacer la barre après les onglets
$gui_color=0x151515        ; couleur de fond de l'interface
$taille=8                     ; taille de la police
$police="Russo One"               ; police
$tab_text_color=0XFFFFFF       ; couleur du texte dans onglet
EndFunc   ;==>_couleur




Func WM_COMMAND_GENERAL($hWnd, $Msg, $wParam, $lParam)  ; changement d'onglet
   #forceref $hWnd, $Msg, $lParam

;~ onglets
If _ArraySearch ($Abouton, BitAND($wParam, 0xFFFF)) = -1 Then
   Return
Else
GUICtrlSetState ( $Tab1, $GUI_HIDE )
_GUICtrlTab_ActivateTab($Tab1,_ArraySearch ($Abouton, BitAND($wParam, 0xFFFF)))
GUICtrlSetBkColor($Abouton[0], $TAB_B_color)
GUICtrlSetBkColor($Abouton[1], $TAB_B_color)
GUICtrlSetBkColor($Abouton[2], $TAB_B_color)
GUICtrlSetBkColor($Abouton[3], $TAB_B_color)

Select
   Case BitAND($wParam, 0xFFFF) =  _WinAPI_GetDlgCtrlID(ControlGetHandle($hWnd, "", $Abouton[0]))
      GUICtrlSetBkColor(BitAND($wParam, 0xFFFF), $TAB_B_select_color)
   Case BitAND($wParam, 0xFFFF) =  _WinAPI_GetDlgCtrlID(ControlGetHandle($hWnd, "", $Abouton[1]))
      GUICtrlSetBkColor(BitAND($wParam, 0xFFFF), $TAB_B_select_color)
   Case BitAND($wParam, 0xFFFF) =  _WinAPI_GetDlgCtrlID(ControlGetHandle($hWnd, "", $Abouton[2]))
      GUICtrlSetBkColor(BitAND($wParam, 0xFFFF), $TAB_B_select_color)
   Case BitAND($wParam, 0xFFFF) =  _WinAPI_GetDlgCtrlID(ControlGetHandle($hWnd, "", $Abouton[3]))
      GUICtrlSetBkColor(BitAND($wParam, 0xFFFF), $TAB_B_select_color)


EndSelect
EndIf

EndFunc   ;==>WM_COMMAND_GENERAL





; #FONCTION# ====================================================================================================================
; Fonction.......: créer une couleur au dessus de l'onglet selectionné
; ===============================================================================================================================
Func _Tabitem($hSysTab32)

         GUICtrlSetColor($Abouton[_GUICtrlTab_GetCurSel ($hSysTab32)], $tab_text_color)
         GUICtrlSetBkColor($Abouton[_GUICtrlTab_GetCurSel ($hSysTab32)], $TAB_B_select_color)
EndFunc   ;==>_TabEvent



; #FONCTION# ====================================================================================================================
; Fonction.......: créer une couleur sur chaque onglet
; ===============================================================================================================================
Func _GUICtrlTab_SetBkColor($hWnd, $hSysTab32, $TAB_bk_color)

   Global $aTabPos = ControlGetPos($hWnd, "", $hSysTab32)
   Local $aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, -1)

   GUICtrlCreateLabel("", $aTabPos[0], $aTabPos[1] + $aTab_Rect[3] + 8, $aTabPos[2] , $aTabPos[3] - $aTab_Rect[3]-10)
   GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetState($hSysTab32, $GUI_HIDE)


EndFunc   ;==>_GUICtrlTab_SetBkColor



; #FONCTION# ====================================================================================================================
; Fonction.......: créer les boutons et la couleur
; ===============================================================================================================================
Func _GUICtrlTab_SetBarColor($hWnd, $hSysTab32, $TAB_bk_color, $gui_color)

Local $aTab_Rect, $longueur, $PosH

GUICtrlSetDefBkColor ( $TAB_bk_color)

Global $aTabPos = ControlGetPos($hWnd, "", $hSysTab32) ; récupère la position du TAB

$aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, 0) ; récupère les positions des boutons d'onglet d'origine
$longueur = $aTab_Rect[2]-$aTab_Rect[0]


$Button3 = GUICtrlCreateButton(_GUICtrlTab_GetItemText($hSysTab32, 0), $aTabPos[0],$aTabPos[1]+5, $longueur, 20)

GUICtrlSetColor(-1, $text_color)
GUICtrlSetBkColor(-1, $TAB_B_color)
GUICtrlSetResizing ( -1,$GUI_DOCKAUTO)



$aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, 0)
$PosH += $aTab_Rect[2]-$aTab_Rect[0]

; GUICtrlCreateButton(  récupère le nom de l'onglet  ,  position du TAB + longueur du bouton précédent ,  hauteur du TAB + 5  ,   longueur   ,  hauteur)

$Button4 = GUICtrlCreateButton(_GUICtrlTab_GetItemText($hSysTab32, 1),$aTabPos[0] + $PosH, $aTabPos[1]+5, $longueur, 20)

GUICtrlSetColor(-1, $text_color)
GUICtrlSetBkColor(-1, $TAB_B_color)
GUICtrlSetResizing ( -1,$GUI_DOCKAUTO)


$aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, 0)
$PosH += $aTab_Rect[2]-$aTab_Rect[0]

$Button5 = GUICtrlCreateButton(_GUICtrlTab_GetItemText($hSysTab32, 2),$aTabPos[0] + $PosH, $aTabPos[1]+5, $longueur, 20)

GUICtrlSetColor(-1, $text_color)
GUICtrlSetBkColor(-1, $TAB_B_color)
GUICtrlSetResizing ( -1,$GUI_DOCKAUTO)



$aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, 0)
$PosH += $aTab_Rect[2]-$aTab_Rect[0]

$Button6 = GUICtrlCreateButton( _GUICtrlTab_GetItemText($hSysTab32, 3),$aTabPos[0] + $PosH, $aTabPos[1]+5, $longueur, 20)

GUICtrlSetColor(-1, $text_color)
GUICtrlSetBkColor(-1, $TAB_B_color)
GUICtrlSetResizing ( -1,$GUI_DOCKAUTO)

GUISetBkColor ($gui_color) ;couleur du fond


Dim $Abouton[5] = [$Button3, $Button4, $Button5, $Button6]
EndFunc   ;==>_GUICtrlTab_SetBarColor



; #FONCTION# ====================================================================================================================
; Fonction.......: coloration des controles et réglage de la résolution
; ===============================================================================================================================
Func _GUICtrl_SetColor($hWnd, $debut, $fin)

   GUICtrlSetDefBkColor ( $GUI_BKCOLOR_TRANSPARENT)

   Dim $ID_bouton[30] = ["11", "12"]
   Dim $ID_liste[10] = ["6", "23"]
   For $iID = $debut + 1 To $fin - 1
         If _ArraySearch($ID_bouton, $iID) > -1 Then
         GUICtrlSetColor($iID, $text_color)
         GUICtrlSetBkColor($iID, $TAB_B_color)
         GUICtrlSetFont($iID,$taille, 100, 0, $police)
      ElseIf _ArraySearch($ID_liste, $iID) > -1 Then
         GUICtrlSetColor($iID, $text_color)
         GUICtrlSetBkColor($iID, $TAB_B_color)
         GUICtrlSetFont($iID,$taille, 100, 0, $police)
      Else
         DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle($iID), "wstr", 0, "wstr", 0)
         GUICtrlSetColor($iID, $tab_text_color)
         GUICtrlSetBkColor($iID, $TAB_bk_color)
         GUICtrlSetFont($iID,$taille, 100, 0, $police)
      EndIf
   Next
EndFunc   ;==>_GUICtrl_SetColor
 
Fichiers joints
Capture d’écran (11).png
Capture d’écran (9).png
guitab skin.au3
(9.18 Kio) Téléchargé 443 fois
Répondre