[R] Comment résoudre le conflit du code ci-joint : GUICtrlCreateTab

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[R] Comment résoudre le conflit du code ci-joint : GUICtrlCreateTab

#1

Message par Boulanza »

Bonjour tout le monde,
- Le code ci-dessous a été créé avec une interface graphique qui utilise des onglets (GUICtrlCreateTab) et GUICtrlCreateTabItem.
- J'utilise des entrées dans les onglets Tab1 : Université, Tab2 : Enseignant(e), Tab3 : Filière de formation.
- On ouvrant l’onglette et lorsque on ajoutant une nouvelle filière avec le bouton ‘Ajouter filière’, les Labels :

Code : Tout sélectionner

$Filiere01 = GUICtrlCreateLabel("Veuillez saisir l'intitulé de la filière N°"& $count&" :", 30, 200, 220, 20)
$AbregeFiliere01 = GUICtrlCreateLabel("Saisissez l'abrégé de ladite filière N°"& $count&" :", 400, 190, 100, 30, $SS_CENTER)
Ont les trouve aussi sur les onglettes Tab1 : Université, Tab2 : Enseignant(e), en plus de la couleur bleu qui sélection involontairement les Labels. Ce comportement me semble pas normal. Comment sortir de ce problème épineux. Merci de votre aide.
N.B : Pour ajouter les numéros successives sur les Labels de chaque filière ajoutés, j’utilise comme solution le script qui se trouve dans la fonction: ‘Ajouterlabel01()’ du code joint !? Est-ce que, ceci peut être la cause de mon problème ?
Je suis conscient qu'il peut y avoir des incohérences dans mon code, et pour ce qui est de la recherche, je n'ai pas trouvé de résultat concret un mon problème. Par avance, merci de votre aide.
Cordialement.
#AutoIt3Wrapper_Run_AU3Check=n
;========================================================================================
#include <Constants.au3>
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
 #include <GuiTab.au3>
 #include <StaticConstants.au3>
#include-once
;===================================================================================
Global $Button1, $Button2, $Button3, $Button4, $List1, $Quitter
Global $Abrege, $i, $j, $C1, $_C1, $C2
Global $i, $hGUI, $InputFiliere01, $InputAbregeFiliere01, $Filiere01, $button, $Enseignant, $Universite, $FiliereDeFormation, $FiliereDeFormation
Global $infocount, $count, $read, $Filiere01, $Filiere011, $Filiere012, $widthCell, $AbregeFiliere01, $NumberLine, $TabSheet1
Global $InputMatiereEnseigner, $InputMatiereAbrege, $InputDepartementEnseignant, $InputDepartementAbrege
;========================================================================================
Func Application02()
$_C1 = GUICtrlRead($InputFiliere01)
$C1 = StringUpper($_C1) ; Fonction pour mettre automatiquement input  minuscules en majuscules .
$_C2 = GUICtrlRead($InputAbregeFiliere01)
$C2 = StringUpper($_C2) ; Fonction pour mettre automatiquement input  minuscules en majuscules .
EndFunc
;========================================================================================
RafraichirIni()
Func RafraichirIni()
;;Supprimer un Config.ini
FileSetAttrib(@ScriptDir&"\Config.ini", "-A-H-R-S", 1)
Sleep(1000)
FileDelete(@ScriptDir&"\Config.ini")
Sleep(100)
Formulaire()
EndFunc
;====================================================
Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)
;========================================
Func Formulaire()
#Region ### START Koda GUI section ### Form=
;=================================================
$hGUI = GUICreate("Formulaire01", 540, 480, 292, 252)
GUISetBkColor(0x1034A6) ;
;=================================================
$PageControl1 = GUICtrlCreateTab(10, 40, 523, 390)
$TabSheet1 = GUICtrlCreateTabItem("Université")
 _GUICtrlTab_SetBkColor($hGUI, $PageControl1, 0xFFC0C0)
$iOld_AppTheme = _SetThemeAppProperties(0)
$Button1 = GUICtrlCreateButton("Enregister Etape1", 210, 280, 120, 30, 0)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
;=================================================
$Group1 = GUICtrlCreateGroup("Information sur l'Université ", 20, 70, 500, 260)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetFont(-1, 10, 200, 2, "Tahoma")
;=================================================
$Label1 = GUICtrlCreateLabel("Formulaire à remplir par l'enseignant(e) :", 0, 0, 490, 37, BitOR($SS_CENTER,$SS_CENTERIMAGE))
GUICtrlSetColor(-1, 0xFCF8F8)
GUICtrlSetFont(-1, 10, 800, 0, "Verdana")
;=====================================================
$Universite = GUICtrlCreateLabel("Le nom de votre Université :", 30, 107, 220, 20)
;GUICtrlSetColor(-1, 0xFCF8F8)
GUICtrlSetFont(-1, 11, 900, 0, "MS Sans Serif")
;=====================================================
$Enseignant = GUICtrlCreateTabItem("Enseignant(e)")
 _GUICtrlTab_SetBkColor($hGUI, $PageControl1, 0xFFC0C0)
$iOld_AppTheme = _SetThemeAppProperties(0)
$Button2 = GUICtrlCreateButton("Enregister Etape2", 190, 378, 150, 30)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
;=================================================
$Group2 = GUICtrlCreateGroup("Information sur l'enseignant(e) ", 20, 70, 500, 350)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetFont(-1, 10, 200, 2, "Tahoma")
;=================================================
$Label1 = GUICtrlCreateLabel("Formulaire à remplir par l'enseignant(e) :", 0, 0, 490, 37, BitOR($SS_CENTER,$SS_CENTERIMAGE))
GUICtrlSetColor(-1, 0xFCF8F8)
GUICtrlSetFont(-1, 10, 800, 0, "Verdana")
;=====================================================
$FiliereDeFormation = GUICtrlCreateTabItem("Filière de formation")
  _GUICtrlTab_SetBkColor($hGUI, $PageControl1, 0xFFC0C0)
$iOld_AppTheme = _SetThemeAppProperties(0)
$Button3 = GUICtrlCreateButton("Enregister Etape3", 210, 385, 120, 30)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Local $labelButton3 = GUICtrlCreateLabel("Pour passer à l'étape suivante il faut clique sur le bouton :", 50, 355, 440, 20, $SS_CENTER)
GUICtrlSetFont(-1, 12, 200, 2, "Arial")
;=================================================
$Group3 = GUICtrlCreateGroup("Information sur la filière qui correspond à vos domaines d'intervention", 20, 70, 500, 270)
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetFont(-1, 10, 200, 2, "Tahoma")
;=================================================
$Label01= GUICtrlCreateLabel("Formulaire à remplir par l'enseignant(e) :", 0, 0, 490, 37, BitOR($SS_CENTER,$SS_CENTERIMAGE))
GUICtrlSetColor(-1, 0xFCF8F8)
GUICtrlSetFont(-1, 10, 800, 0, "Verdana")
;====================================================================
Local $label02 = GUICtrlCreateLabel("Veuillez saisir la filière qui correspond à vos domaines d'intervention...", 80, 110, 390, 50, $SS_CENTER)
GUICtrlSetFont(-1, 16, 900, 0, "Arial")
;===============================================================
Ajouterlabel01()
;===============================================================
$InputFiliere01 = GUICtrlCreateInput("", 30, 220, 350, 20)
GUICtrlSetLimit(-1, 0) ; to limit the entry to 3 chars 0 à l'infini
$Filiere011 = GUICtrlSetTip(-1, " Veuillez saisir la filière qui correspond à vos domaines d'intervention. Par exemple : « DUT en Génie Thermique et Energétique (GTE) »")
$widthCell = 150 ; first cell 70 width
;======================================= Suite
$InputAbregeFiliere01 = GUICtrlCreateInput("", 400, 220, 100, 20)
$Filiere012 = GUICtrlSetTip(-1, " Veuillez saisir l'abrégé de la filière qui correspond à vos domaines d'intervention.Par exemple : « GTE »")
$widthCell = 150 ; first cell 70 width
;===============================================================
$Button4 = GUICtrlCreateButton("Ajouter filière", 210, 290, 120, 30)
GUICtrlSetOnEvent($button4, AjouterInputFiliere01)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Local $labelButton4 = GUICtrlCreateLabel("Pour ajouter une nouvelle filière, il faut clique sur le bouton :", 50, 260, 440, 20, $SS_CENTER)
GUICtrlSetFont(-1, 12, 200, 2, "Arial")
;=====================================================
GUICtrlCreateTabItem("")
$Quitter = GUICtrlCreateButton("Quitter", 440, 443, 75, 25, 0)
;========================================
GUICtrlCreateGroup("", -99, -99, 1, 1)
_SetThemeAppProperties($iOld_AppTheme)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlCreateTabItem("")
GUISetState()
_Main1()
 EndFunc
;=======================================================================================
Func Ajouterlabel01()
Local Static $count = 0
      Local $read = GUICtrlRead($Filiere01)
   GUICtrlSetData($Filiere01, "")
       $count += 1
$Filiere01 = GUICtrlCreateLabel("Veuillez saisir l'intitulé de la filière N°"& $count&" :", 30, 200, 220, 20)
$AbregeFiliere01 = GUICtrlCreateLabel("Saisissez l'abrégé de ladite filière N°"& $count&" :", 400, 190, 100, 30, $SS_CENTER)
GUICtrlSetColor($Filiere01, 0xE73E01)
GUICtrlSetColor($AbregeFiliere01, 0xE73E01)
EndFunc
;=================================================================
Func InfoChampsInputsFiliere()
Application02()
If $C1 = "" Then
Msgbox($MB_SYSTEMMODAL, "Attention", "Vous n'avez pas saisie l'intitulé qui correspond à la filière que vous enseignez!",5)
ElseIf $C2 = "" Then
Msgbox($MB_SYSTEMMODAL, "Attention", "Vous n'avez pas saisie l'abréviation de l'intitulé qui correspond à la filière que vous enseignez!",5)
Else
AjouterInputFiliere01()
EndIf
EndFunc
;===============================================================
Func AjouterInputFiliere01()
     Local Static $count = 0
      $count += 1
;======================================== Suite
Local $read = GUICtrlRead($InputFiliere01)
GUICtrlSetData($InputFiliere01, "")
IniWrite(@ScriptDir & "\Config.ini", "Parametres", "$Filiere" & $count, $read)
Sleep(100)
GUICtrlSetState($InputFiliere01, $GUI_DISABLE)
;======================================== Suite
Local $read = GUICtrlRead($InputAbregeFiliere01)
GUICtrlSetData($InputAbregeFiliere01, "")
IniWrite(@ScriptDir & "\Config.ini", "Parametres", "$AbregeFiliere" & $count, $read)
Sleep(100)
GUICtrlSetState($InputAbregeFiliere01, $GUI_DISABLE)
Ajouterlabel01()
; return $count
EndFunc
;===============================================================
Func DesableInputEtape3()
GUICtrlSetState($InputFiliere01, $GUI_DISABLE)
GUICtrlSetState($InputAbregeFiliere01, $GUI_DISABLE)
GUICtrlSetState($Button3, $GUI_DISABLE)
GUICtrlSetState($Button4, $GUI_DISABLE)
EndFunc
;==============================================================
Func _Main1()
GUISetState()
$i = 0
While $i < 100
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
   Case($List1)
      ;URLListeUniversites()
Case $Button1
 GUICtrlSetState($Enseignant, $GUI_SHOW) ;$Universite
ContinueLoop
Case $Button2
GUICtrlSetState($FiliereDeFormation, $GUI_SHOW)
ContinueLoop
Case $Button3
;~ DesableInputEtape3()
GUICtrlSetState($TabSheet1, $GUI_SHOW)
Sleep(100)
ContinueLoop
;========================================================
Case $Button4
GUICtrlSetState($InputFiliere01, $GUI_ENABLE)
GUICtrlSetState($InputAbregeFiliere01, $GUI_ENABLE)
InfoChampsInputsFiliere()
ContinueLoop
;========================================================
   Case $Quitter
      Exit
EndSwitch
WEnd
EndFunc
;=============================================================
Func _GUICtrlTab_SetBkColor($hWnd, $hSysTab32, $sBkColor)
   ;Couleur pour GUICtrlCreateTabItem
    Local $aTabPos = ControlGetPos($hWnd, "", $hSysTab32)
    Local $aTab_Rect = _GUICtrlTab_GetItemRect($hSysTab32, -1)
    GUICtrlCreateLabel("", $aTabPos[0] + 2, $aTabPos[1] + $aTab_Rect[3] + 4, $aTabPos[2] - 6, $aTabPos[3] - $aTab_Rect[3] - 7) ; Create label
     GUICtrlSetBkColor(-1, $sBkColor) ; Colour label
    GUICtrlSetState(-1, $GUI_DISABLE) ; Disable label
EndFunc   ;==>_GUICtrlTab_SetBkColor
;=============================================================
Func _SetThemeAppProperties($iTheme=0)
    If Not StringInStr(@OSTYPE, "WIN32_NT") Then Return 0
    Local $a_Old_AppTheme = DllCall("uxtheme.dll", "int", "GetThemeAppProperties")
    If @error Then Return 0
    DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", $iTheme)
    If @error Then Return 0
    Return $a_Old_AppTheme[0]
EndFunc
Modifié en dernier par Boulanza le mer. 23 déc. 2020 10:14, modifié 2 fois.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Comment résoudre le conflit du code ci-joint : GUICtrlCreateTab

#2

Message par walkson »

Bonjour,
Je vous mets un exemple récupéré sur le forum us d'un ajout de control sur un tabitem

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

Example()

Func Example()
    Local $IdButton0, $IdButton2
    Local $hGui = GUICreate("My GUI Tab", 250, 250); will create a dialog box that when displayed is centered

    GUISetBkColor(0x00E0FFFF)
    GUISetFont(9, 300)

    Local $idTab = GUICtrlCreateTab(10, 10, 200, 220)

    Local $IdTab0 = GUICtrlCreateTabItem("tab0")
    GUICtrlCreateLabel("label0", 30, 80, 50, 20)
    Local $IdOK0 = GUICtrlCreateButton("OK0", 20, 50, 50, 20)
    GUICtrlCreateInput("default", 80, 50, 70, 20)

    Local $IdTab1 = GUICtrlCreateTabItem("tab----1")
    GUICtrlCreateLabel("label1", 30, 80, 50, 20)
    GUICtrlCreateCombo("", 20, 50, 60, 120)
    GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo|guinness", "Jon"); default Jon
    Local $IdOK1 = GUICtrlCreateButton("Delete", 80, 50, 50, 20)

    Local $IdTab2 = GUICtrlCreateTabItem("tab2")
    GUICtrlSetState(-1, $GUI_SHOW); will be display first
    GUICtrlCreateLabel("label2", 30, 80, 50, 20)
    Local $IdOK2 = GUICtrlCreateButton("OK2", 140, 50, 50)

    GUICtrlCreateTabItem(""); end tabitem definition

    GUICtrlCreateLabel("Click on tab and see the title", 20, 230, 250, 20)

    GUISetState(@SW_SHOW)

    Local $idMsg
    ; Loop until the user exits.
    While 1
        $idMsg = GUIGetMsg()
        Switch $idMsg

            Case $GUI_EVENT_CLOSE
                ExitLoop
        Case $idTab
            ; display the clicked tab
            WinSetTitle("My GUI Tab", "", "My GUI Tab" & GUICtrlRead($idTab))
            Case $IdOK0
                If Not $IdButton0 Then
                GUISwitch($hGui, $IdTab0)
                $IdButton0 = GUICtrlCreateButton("Added", 140, 130)
                GUICtrlCreateTabItem("")
                EndIF
            Case $IdOK1
                ConsoleWrite("DELETE")
                GUICtrlDelete($IdButton0)
                GUICtrlDelete($IdButton2)
                $IdButton0 = 0
                $IdButton2 = 0
            Case $IdOk2
                If Not $IdButton2 Then
                GUISwitch($hGui, $IdTab2)
                $IdButton2 = GUICtrlCreateButton("Added", 20, 100)
                GUICtrlCreateTabItem("")
                Endif
        EndSwitch
    WEnd
EndFunc   ;==>Example
Mais je pense que vous n'en aurez pas besoin que le problème se situe sur les GUICtrlCreateLabel() que vous superposez alors que la logique voudrez que vous modifiez les labels par des GUICtrlSetData()
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment résoudre le conflit du code ci-joint : GUICtrlCreateTab

#3

Message par Boulanza »

Bonjour Walkson,
Merci pour votre réponse. Je n'ai pas trouvé de solution sur les forums AutoIt à mon problème ! à ce jour.
Je continue les recherche de solution à mon problème.
Cordialement.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Comment résoudre le conflit du code ci-joint : GUICtrlCreateTab

#4

Message par walkson »

C'est pourtant simple !
Quand vous cliquez sur $Button4 = GUICtrlCreateButton("Ajouter filière") vous créez un nouveau label qui se superpose alors que c'est le texte qui doit être modifié
Il faut mettre ceci dans le tabitem lors de la création du GUICtrlCreateTab()
$Filiere01 = GUICtrlCreateLabel("Veuillez saisir l'intitulé de la filière N°"& $count&" :", 30, 200, 220, 20)
$AbregeFiliere01 = GUICtrlCreateLabel("Saisissez l'abrégé de ladite filière N°"& $count&" :", 400, 190, 100, 30, $SS_CENTER)
GUICtrlSetColor($Filiere01, 0xE73E01)
GUICtrlSetColor($AbregeFiliere01, 0xE73E01)
et modifier la fonction
Func Ajouterlabel01()
Local Static $count = 0
      Local $read = GUICtrlRead($Filiere01)
   GUICtrlSetData($Filiere01, "")
       $count += 1
GUICtrlSetData($Filiere01,"Veuillez saisir l'intitulé de la filière N°"& $count&" :")
GUICtrlSetData($AbregeFiliere01,"Saisissez l'abrégé de ladite filière N°"& $count&" :")
EndFunc
autre remarque, si vous voulez incrémenté $count, il faut le déclarer en début de code en global et supprimer Local Static $count = 0 car dans le cas présent $count restera toujours à 1
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment résoudre le conflit du code ci-joint : GUICtrlCreateTab

#5

Message par Boulanza »

Re-Bonjour walkson,
"GUICtrlSetData" est la solution à mon problème. Bien vu cher walkson. Bravo.
Un grand merci pour votre soutien et pour votre collaboration.
Joyeux Noël d'avance.
Cordialement.
Répondre