Page 1 sur 1

[R] Création d'onglet automatique  

Posté : mer. 20 juil. 2016 14:41
par lap1formatik
Bonjour

Je suis nouveau sur Autoit, cela fait que 2,3 semaines que je code sur SciTE :D
Après plusieurs recherches sur des forums et sur la documentation, je n'arrive pas à faire ce que je souhaite avec les onglets.

Mon objectif est de pouvoir créer des onglets à la voler. Je m'explique, lorsque je clic sur un bouton ( dans mon cas cet appui provient d'une seconde fenêtre ouverte préalablement), je veut qu'un nouvelle onglet apparaisse, et cela pas indéfiniment mais presque :wink:
Tout les onglets sont constitué de la même façon, quelques labels, 3 radios et une liste. A l'heure actuel je défini trois onglets directement en dur dans le code avec des copier coller, et je modifie l'état de chaque Control pour qu'il s'affiche au bon moment. C'est pas la joie...
Je voudrais donc savoir si il est possible de définir une sorte de structure, qui à chaque fois que je l'appelle me génère un onglet avec des Control prédéfini.

Je me la partie graphique du code actuel si ça peut aider à éclairer ma demande
Opt("GUIOnEventMode", 1)
$Main_GUI = GUICreate("", 1885, 983, 10, 10)
GUISetOnEvent($GUI_EVENT_CLOSE, "Main_GUIClose")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Main_GUIMinimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Main_GUIMaximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Main_GUIRestore")

$MenuItem1 = GUICtrlCreateMenu("Création")

$MenuItem2 = GUICtrlCreateMenuItem("Création d'entreprise", $MenuItem1)
GUICtrlSetOnEvent(-1, "MenuItem2Click")

$MenuItem3 = GUICtrlCreateMenu("Suppression")
GUICtrlSetState(-1,$GUI_DISABLE)

$MenuItem4 = GUICtrlCreateMenuItem("Suppression d'entreprise", $MenuItem3)
GUICtrlSetOnEvent(-1, "MenuItem4Click")

$Tab1 = GUICtrlCreateTab(0, 0, 1881, 961)
GUICtrlSetOnEvent(-1, "Change_ongletClick")

;~

$Entreprise1 = GUICtrlCreateTabItem(" ")

$List1 = GUICtrlCreateList("", 80, 184, 161, 383)
GUICtrlSetOnEvent(-1, "List1Click")
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_entreprise1 = GUICtrlCreateLabel("Entreprise1", 840, 50, 160, 36)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_effectif_entreprise1 = GUICtrlCreateLabel("Effectif : ", 50, 50, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_effectif_entreprise1 = GUICtrlCreateLabel(" ", 100, 50, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_activite_entreprise1 = GUICtrlCreateLabel("Activité : ", 50, 70, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_activite_entreprise1 = GUICtrlCreateLabel(" ", 100, 70, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info1_entreprise1 = GUICtrlCreateRadio("info1", 300, 325, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_repet_entreprise1Click")
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info2_entreprise1 = GUICtrlCreateRadio("info2", 300, 375, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_pene_entreprise1Click")
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info3_entreprise1 = GUICtrlCreateRadio("info3", 300, 425, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_temp_entreprise1Click")
GUICtrlSetState(-1,$GUI_HIDE)

;~

$Entreprise2 = GUICtrlCreateTabItem(" ")

$List2 = GUICtrlCreateList("", 80, 184, 161, 383)
GUICtrlSetOnEvent(-1, "List2Click")
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_entreprise2 = GUICtrlCreateLabel("Entreprise2", 840, 50, 160, 36)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_effectif_entreprise2 = GUICtrlCreateLabel("Effectif : ", 50, 50, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_effectif_entreprise2 = GUICtrlCreateLabel(" ", 100, 50, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_activite_entreprise2 = GUICtrlCreateLabel("Activité : ", 50, 70, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_activite_entreprise2 = GUICtrlCreateLabel(" ", 100, 70, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info1_entreprise2 = GUICtrlCreateRadio("info1", 300, 325, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_repet_entreprise2Click")
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info2_entreprise2 = GUICtrlCreateRadio("info2", 300, 375, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_pene_entreprise2Click")
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info3_entreprise2 = GUICtrlCreateRadio("info3", 300, 425, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_temp_entreprise2Click")
GUICtrlSetState(-1,$GUI_HIDE)
GUISetState(@SW_SHOW)

;~

$Entreprise3 = GUICtrlCreateTabItem(" ")

$List3 = GUICtrlCreateList("", 80, 184, 161, 383)
GUICtrlSetOnEvent(-1, "List3Click")
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_entreprise3 = GUICtrlCreateLabel("Entreprise3", 840, 50, 160, 36)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_effectif_entreprise3 = GUICtrlCreateLabel("Effectif : ", 50, 50, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_effectif_entreprise3 = GUICtrlCreateLabel(" ", 100, 50, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_nom_activite_entreprise3 = GUICtrlCreateLabel("Activité : ", 50, 70, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$lbl_activite_entreprise3 = GUICtrlCreateLabel(" ", 100, 70, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info1_entreprise3 = GUICtrlCreateRadio("info1", 300, 325, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_repet_entreprise3Click")
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info2_entreprise3 = GUICtrlCreateRadio("info2", 300, 375, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_pene_entreprise3Click")
GUICtrlSetState(-1,$GUI_HIDE)

$Radio_info3_entreprise3 = GUICtrlCreateRadio("info3", 300, 425, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_temp_entreprise3Click")
GUICtrlSetState(-1,$GUI_HIDE)
GUISetState(@SW_SHOW)
Merci d'avance pour vos réponses
LAP1

Re: [..] Création d'onglet automatique

Posté : jeu. 28 juil. 2016 13:41
par lap1formatik
Merci a tous ceux qui ont lu ma question, j'ai l'impression quelle ne vous a pas inspiré :P

J'en déduit que ce n'est pas faisable :(

Merci tout de même
A la revoyure pour d'autres questions :mrgreen: !!

Re: [..] Création d'onglet automatique

Posté : jeu. 28 juil. 2016 15:30
par Tlem
Bonjour lap1formatik
Ce n'est pas parce que personne ne vous a répondu que ce n'est pas possible.
En ce moment, c'est la période des vacances donc activité réduite, ensuite, pour vous aider à régler ce problème graphique, il faut un certain temps de recherche et de la motivation. ^^
Peut être qu'actuellement les membres actifs ne sont pas disposés à prendre du temps pour étudier la question.

Pour ma part, après avoir lu votre demande, je ne vois pas ce qui empêcherait de le faire en AutoIt.
Il me semble qu'il n'est pas possible de rajouter un onglet dynamiquement (mais j'en suis pas certain), par contre, rien ne vous empêche de créer le nombre d'onglet maximal et de les masquer.
Par la suite vous les ferez apparaitre au fur et à mesure de vos besoins (cela évitera un problème d'ID sur les éléments à contrôler).

Re: [..] Création d'onglet automatique

Posté : jeu. 28 juil. 2016 15:42
par lap1formatik
Bonjour

C'est vrai je n'avais pas pensé aux vacances :?

Crées mes onglets avant, c'est ce que j'avais commencé à faire. Mais ça me paraissais pas la méthode la plus opti, je pensais qu'il était possible de le faire en dynamique.
Mais bon vive le copier-coller :D

Merci Tlem

Re: [..] Création d'onglet automatique

Posté : jeu. 28 juil. 2016 22:38
par parazitenew
Bonsoir,

C'est possible de créer des onglets dynamiques, un bouton qui créer un tabitem au clique, la fonction de la création de tabitem se lance, seulement ce qui va causer problèmes ceux sont les controls (champs de textes boutons etc.) de chaque tabitem. ça sera juste une "chakchouka".

Re: [..] Création d'onglet automatique

Posté : ven. 29 juil. 2016 16:09
par lap1formatik
Merci
J'ai réussi à faire ce que je voulais :D
J'ai réussi à gérer les controlID en les stockant dans un tableau préalablement défini. Je les stocke au moment de la création et je peux en faire ce que je veux après.
Merci beaucoup sujet résolu :D

Mon code lié au onglets (au cas où quelqu'un est interessé :wink: )
Opt("GUIOnEventMode", 1)
$Main_GUI = GUICreate("", 1885, 983, 10, 10)
GUISetOnEvent($GUI_EVENT_CLOSE, "Main_GUIClose")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Main_GUIMinimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Main_GUIMaximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Main_GUIRestore")
 
$MenuItem1 = GUICtrlCreateMenu("Création")
 
$MenuItem2 = GUICtrlCreateMenuItem("Création d'entreprise", $MenuItem1)
GUICtrlSetOnEvent(-1, "MenuItem2Click")
 
$MenuItem3 = GUICtrlCreateMenu("Suppression")
GUICtrlSetState(-1,$GUI_DISABLE)
 
$MenuItem4 = GUICtrlCreateMenuItem("Suppression d'entreprise", $MenuItem3)
GUICtrlSetOnEvent(-1, "MenuItem4Click")
 
$Tab1 = GUICtrlCreateTab(0, 0, 1881, 961)
GUICtrlSetOnEvent(-1, "Change_ongletClick")
GUISetState(@SW_SHOW)

$nombre_entreprise=0
$nombre_de_control_par_onglet=9
$nombre_max_entreprise=50
Dim $tab[$nombre_de_control_par_onglet][$nombre_max_entreprise]
Global Const $Entreprise=0
Global Const $List=1
Global Const $lbl_nom_effectif_entreprise=2
Global Const $lbl_effectif_entreprise=3
Global Const $lbl_nom_activite_entreprise=4
Global Const $lbl_activite_entreprise=5
Global Const $Radio_info1_entreprise=6
Global Const $Radio_info2_entreprise=7
Global Const $Radio_info3_entreprise=8
;~ ...
Func MenuItem2Click()
   Crea()
   $nombre_entreprise=$nombre_entreprise+1
EndFunc

Func Crea()
$tab[$Entreprise][$nombre_entreprise] = GUICtrlCreateTabItem(" ")
 
$tab[$List][$nombre_entreprise] = GUICtrlCreateList("", 80, 184, 161, 383)
GUICtrlSetOnEvent(-1, "List1Click")
GUICtrlSetState(-1,$GUI_HIDE)
 
$tab[$lbl_nom_entreprise][$nombre_entreprise] = GUICtrlCreateLabel("Entreprise1", 840, 50, 160, 36)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
GUICtrlSetState(-1,$GUI_HIDE)
 
$tab[$lbl_nom_effectif_entreprise][$nombre_entreprise] = GUICtrlCreateLabel("Effectif : ", 50, 50, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)
 
$tab[$lbl_effectif_entreprise][$nombre_entreprise] = GUICtrlCreateLabel(" ", 100, 50, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)
 
$tab[$lbl_nom_activite_entreprise][$nombre_entreprise] = GUICtrlCreateLabel("Activité : ", 50, 70, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)
 
$tab[$lbl_activite_entreprise][$nombre_entreprise] = GUICtrlCreateLabel(" ", 100, 70, 160, 36)
GUICtrlSetState(-1,$GUI_HIDE)
 
$tab[$Radio_info1_entreprise][$nombre_entreprise] = GUICtrlCreateRadio("info1", 300, 325, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_repet_entreprise1Click")
GUICtrlSetState(-1,$GUI_HIDE)
 
$tab[$Radio_info2_entreprise][$nombre_entreprise] = GUICtrlCreateRadio("info2", 300, 375, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_pene_entreprise1Click")
GUICtrlSetState(-1,$GUI_HIDE)
 
$tab[$Radio_info3_entreprise][$nombre_entreprise] = GUICtrlCreateRadio("info3", 300, 425, 113, 17)
GUICtrlSetOnEvent(-1, "Radio_temp_entreprise1Click")
GUICtrlSetState(-1,$GUI_HIDE)
 
EndFunc