Page 1 sur 1
[R] GUI - Générer dynamiquement des controles dans un tab
Posté : jeu. 09 août 2012 17:59
par Alaghir
Petite question, comment fait-on pour gérer la création dynamique de contrôles dans un tab ?
Je m'explique, j'ai une fonction qui me permet de génerer une partie de mon interface graphique en fonction d'un clic sur un bouton radio.
Sur ce clic j'aimerai avoir un tab, avec une tabitem + n controles générés automatiquement, or je n'ai pas la génération dynamique des controles dans une tabitem...
Je poste mon code pour être plus clair :
► Afficher le texteAutoit
Code : Tout sélectionner
#region Include
;Include GUI
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;~ Include Controls
;~ #include <ListViewConstants.au3>
#include <TabConstants.au3>
;~ #include <ButtonConstants.au3>
#include <EditConstants.au3>
;~ Include DBO
;~ #include <Array.au3>
;~ #include <SQLite.au3>
;~ #include <SQLite.dll.au3>
;~ Include Fichiers
;~ #include <file.au3>
#endregion Include
#Region ###GUI section ###
Global $frm_online = GUICreate("Config Site", 539, 164, 194, 129)
Global $Group1 = GUICtrlCreateGroup("", 48, 24, 433, 41)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Opt_Online = GUICtrlCreateRadio("Online", 96, 40, 81, 17)
Global $Opt_Offline = GUICtrlCreateRadio("Offline", 328, 40, 73, 17)
GUISetState(@SW_SHOW)
#EndRegion ###GUI section ###
#region Variant
Dim $Tab1,$TabSheet1,$Input1
#endregion Variant
#region Main
While 1
DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $Opt_Offline
gui_online(0)
case $Opt_Online
gui_online(1)
EndSwitch
WEnd
#endregion Main
Func gui_online($ind_select)
#CS
Permet de générer une GUI paramétrée en fonction du bouton radio sélectionné
par l'utilisateur, ici la version online de la GUI
#CE
gui_ctrl_delete($Tab1,$TabSheet1,$Input1)
if $ind_select = 1 Then
$Tab1 = GUICtrlCreateTab(56, 80, 433, 65)
$TabSheet1 = GUICtrlCreateTabItem("Online")
$Input1 = GUICtrlCreateInput("Val1", 184, 112, 185, 21)
Else
$Tab1 = GUICtrlCreateTab(56, 80, 433, 65)
$TabSheet1 = GUICtrlCreateTabItem("Offline")
$Input1 = GUICtrlCreateInput("Val2", 200, 112, 137, 21)
EndIf
EndFunc
Func gui_ctrl_delete($TabSheet,$Input,$Tab)
GUICtrlDelete($TabSheet)
GUICtrlDelete($Input)
GUICtrlDelete($Tab)
EndFunc
Merci de vos lumières ?
Re: [..] GUI - Générer dynamiquement des controles dans un t
Posté : jeu. 09 août 2012 21:51
par jguinch
Bonsoir.
Il semblerait que ça corrige le problème en forçant l'état de chaque contrôle sur $GUI_SHOW :
► Afficher le texte
Code : Tout sélectionner
Func gui_online($ind_select)
#CS
Permet de générer une GUI paramétrée en fonction du bouton radio sélectionné
par l'utilisateur, ici la version online de la GUI
#CE
gui_ctrl_delete($Tab1,$TabSheet1,$Input1)
if $ind_select = 1 Then
$Tab1 = GUICtrlCreateTab(56, 80, 433, 65)
$TabSheet1 = GUICtrlCreateTabItem("Online")
$Input1 = GUICtrlCreateInput("Val1", 184, 112, 185, 21)
[b]GUICtrlSetState(-1, $GUI_SHOW)[/b]
Else
$Tab1 = GUICtrlCreateTab(56, 80, 433, 65)
$TabSheet1 = GUICtrlCreateTabItem("Offline")
$Input1 = GUICtrlCreateInput("Val2", 200, 112, 137, 21)
[b]GUICtrlSetState(-1, $GUI_SHOW)[/b]
EndIf
EndFunc
Re: [..] GUI - Générer dynamiquement des controles dans un t
Posté : ven. 10 août 2012 09:00
par Alaghir
Merci pour l'info, je vais voir si je peux gérer ça avec une boucle en stockant les id_controls dans un tableau, ce serait plus simple.