GUI et fichiers INI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Ciol13
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mer. 01 juin 2016 19:10
Status : Hors ligne

GUI et fichiers INI

#1

Message par Ciol13 » sam. 17 déc. 2016 20:16

Bonsoir à tous, je souhaitais faire quelque chose, mais je ne sais pas si c'est possible, et vu que ça fait des heures que je cherche, je me dis que si ce n'est pas possible, ben c'est idiot de chercher encore

Voici mon problème :
J'essaye de créer un script qui demande des renseignement avant de pouvoir le compiler, pour ce faire, j'ai créé une GUI afin de afin de collecter les premiers éléments au fonctionnement du script qui viendra ensuite (qui lui fonctionne déjà)

Ce travail est réalisé pour une entreprise à portée nationale, et comme toutes les grandes entreprises, on a tendance à changer de nom et d'organisation interne assez régulièrement, afin d'adapter ça, je pensais passer pas un fichier ini afin de ne pas avoir à rééditer le script et recompiler à chaque fois, et renvoyer aux différents interlocuteurs...

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>

Global $Version = "TahLP V.1.0 Beta"
Global $Uniteregion = "Centre de Maintenance"
$ini = "C:\Users\Ciol13\Deskto[quote][/quote]p\General.ini"

Func Centre_Maintenance ()
#Region ### START Koda GUI section ### Form=c:\users\ciol13\desktop\centre maintenance.kxf
$Form1_1 = GUICreate($Version, 379, 566, -1, -1)
GUISetBkColor(0x000000)


#cs
$Button1 = GUICtrlCreateButton("Lilles", 200, 88, 147, 25)
$Button2 = GUICtrlCreateButton("Lyon", 200, 120, 147, 25)
$Button3 = GUICtrlCreateButton("Marseille", 200, 152, 147, 25)
$Button4 = GUICtrlCreateButton("Nancy", 200, 184, 147, 25)
$Button5 = GUICtrlCreateButton("Nantes", 200, 216, 147, 25)
$Button6 = GUICtrlCreateButton("Paris", 200, 248, 147, 25)
$Button7 = GUICtrlCreateButton("Toulouse", 200, 280, 145, 25)
#ce

$Group1 = GUICtrlCreateGroup("Centre", 8, 48, 345, 265)
GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("Logiciel de Télérelève  automatique  : Choix du " &$Uniteregion, -16, 0, 391, 41, BitOR($SS_CENTER,$SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 400, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
$Button8 = GUICtrlCreateButton("Aide", 32, 496, 99, 25)
$Label2 = GUICtrlCreateLabel("© Tous droits réservés", 280, 544, 78, 14)
GUICtrlSetFont(-1, 6, 400, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
$Button9 = GUICtrlCreateButton("Quitter", 248, 496, 99, 25)
$Group2 = GUICtrlCreateGroup("Group2", 16, 472, 345, 65)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

		Case $Button9
			Exit
	EndSwitch
WEnd
EndFunc
Voici le code en question

Maintenant, j'aimerais que la création de boutons puissent être fait par un fichier extérieur, j'ai donc pensé à un fichier .ini que j'avais construit ainsi :
[Centre_Maintenance]
Lilles=GUICtrlCreateButton("Lilles", 200, 88, 147, 25)
Lyon=GUICtrlCreateButton("Lyon", 200, 120, 147, 25)
Marseille=GUICtrlCreateButton("Marseille", 200, 152, 147, 25)
Nancy=GUICtrlCreateButton("Nancy", 200, 184, 147, 25)
Nantes=GUICtrlCreateButton("Nantes", 200, 216, 147, 25)
Paris=GUICtrlCreateButton("Paris", 200, 248, 147, 25)
Toulouse=GUICtrlCreateButton("Toulouse", 200, 280, 145, 25)
le cas échéant, je me disais que la fonction inireadsection construisait un array, par la suite, je lisais le contenu de l'array, et par conséquent, mon bouton était créé, mais ça ne fonctionne pas, de plus, dans mon idée, comment ensuite connaitre le nom du bouton pour lui associer une action?

par la suite, mais là, je n'ai pas encore essayé, je souhaite que le choix qui est fait par l'utilisateur crée automatiquement un autre fichier ini qui sera renseigné durant la suite des opérations de collecte des informations

en vous souhaitant une très bonne soirée

Loïc

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 661
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: GUI et fichiers INI

#2

Message par walkson » sam. 17 déc. 2016 21:21

Bonjour,
La lecture de votre ini donne des variables et ne peut créer des boutons....
Je vous renvoie au code d'Orax qui crée des buttons à la volée viewtopic.php?f=4&t=14349#p99544
Les ID des buttons sont entrés dans un array
La lecture du ini devrait renvoyer le texte du Button (button1=Lille)
Avec un guictrlsetdata($Buttons[1]) vous écrivez le rôle du buttons
Et si le nombre de buttons est variable, le lecture du ini (IniReadSection ( "filename", "section" )) vous renvoie un array dont on peut déterminer le nombre de lignes et donc le nombre de Buttons.
En espérant avoir été clair...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5830
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: GUI et fichiers INI

#3

Message par mikell » sam. 17 déc. 2016 22:09

En revanche tu peux très bien stocker dans ton ini toutes les infos pour créer les boutons
Exemple
C'est en gros comme a dit walkson sauf que là on comprend :mrgreen:
# test.ini
[Centre_Maintenance]
Lilles=200,88,147,25
Lyon=200,120,147,25

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#Include <Array.au3>

Local $array = IniReadSection("test.ini", "Centre_Maintenance")
_ArrayDisplay($array)    ; juste pour voir le contenu

$gui = GUICreate("test", 379, 566, -1, -1) 
Local $buttons[2]              ; array des boutons
For $i = 1 to $array[0][0]
    ; là on découpe la value pour récupérer les coordonnées, le nom du bouton est dans la key
    $split = StringSplit($array[$i][1], ",")  
    $buttons[$i-1] = GUICtrlCreateButton($array[$i][0], $split[1], $split[2], $split[3], $split[4])
Next
GUISetState()

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $buttons[0] to $buttons[UBound($buttons)-1]
         msgbox(0,"", "clic sur le bouton : " & GuiCtrlRead($nMsg) )
  EndSwitch
WEnd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 661
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: GUI et fichiers INI

#4

Message par walkson » sam. 17 déc. 2016 22:42

La méthode du gros chat vert a ses avantages mais avec l'absence d'info comme le précise Ciol13, je préfère cela :mrgreen:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
$arrayini = IniReadSection ( @ScriptDir & "\AA.ini", "creation" )
_ArrayDisplay($arrayini)
$nbbutton = $arrayini[0][0]
Global $Form1 = GUICreate("Form1", 300, 200, 192, 124)
GUISetState(@SW_SHOW)
Local $Arraybutton[UBound($arrayini)]
Local $top = 10
Local $left = 10
For $i = 1 To $nbbutton
        $Arraybutton[$i] = GUICtrlCreateButton($arrayini[$i][1],$left,$top,50,20)
        $left += 50
        If $left > 250 Then
                $top += 25
                $left = 10
        EndIf

Next
_ArrayDisplay($Arraybutton)



While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
        Case $GUI_EVENT_CLOSE
                Exit
         Case $Arraybutton[1] To $Arraybutton[UBound($Arraybutton) - 1]
                 MsgBox(0,"",GUICtrlRead($nMsg))
 EndSwitch
WEnd
et pour le INI
[creation]
button1=Lille
button2=Dijon
button3=Paris
button4=Lyon
button5=Toulouse
button6=Nime
button7=Bordeaux
button8=Monsols
button8=Liévin
button9=Lens
button9=Béthune
button9=Evry
button9=Oléans
chemin à rectifier au besoin : IniReadSection ( @ScriptDir & "\AA.ini", "creation" )
Je profite de l'occasion pour souhaiter à Mikell et au forum tous mes vœux de fin d'année :mrgreen:
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Ciol13
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mer. 01 juin 2016 19:10
Status : Hors ligne

Re: GUI et fichiers INI

#5

Message par Ciol13 » dim. 18 déc. 2016 00:44

Ca en fait pas mal de réponse, bon, je regarderai tout ça demain, parce que là, mon cerveau commence à fatiguer un peu et j'ai du mal à saisir
Merci beaucoup en tous cas, s'il y a d'autres idées, surtout, n'hésitez pas hein

J'en profite à mon tour pour vous souhaiter à tous de bonnes fêtes de fin d'année

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5830
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: GUI et fichiers INI

#6

Message par mikell » dim. 18 déc. 2016 07:17

walkson a écrit :La méthode du gros chat vert a ses avantages mais
Bien entendu. ce n'était qu'une petite démo

Meilleurs voeux à vous aussi. On serait pas un poil en avance là ? :shock:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Ciol13
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mer. 01 juin 2016 19:10
Status : Hors ligne

Re: GUI et fichiers INI

#7

Message par Ciol13 » dim. 18 déc. 2016 13:21

Bonjour,
trop tôt?
Meilleurs voeux à vous aussi. On serait pas un poil en avance là ? :shock:
c'est la semaine prochaine, d'ailleurs, faudrait songer à quitter les forums et acheter des cadeaux!!!

Bon allez, trêve de considérations sur le temps qui passe trop vite, et revenons en à nos motonnades :
j'ai essayé les deux techniques, et les deux me semblent bien, finalement, j'ai essayé hier soir avec mon cerval fatigué, les deux pratiques fonctionnent parfaitement sans aucun doute, maintenant faudra juste que j'essaye de comprendre exactement les lignes de code, ceci étant, je rencontre maintenant un problème avec les deux techniques : chaque bouton lancera une autre gui, je m'explique :

Centre Toulouse
Aurillac
Mur de Barrez
Limoges
Montpellier
Montpellier
Perpigna
Toulouse
Balma
Portet sur Garonne
Centre Lyon
Albertville
Albertville
Saint Jean de Maurienne
Annemasse
Grenoble
Beaumont Monteux
Grenoble
Lyon
Mions
Lentilly
Montluel...

Bref, vous avez compris le truc, voici maintenant les codes de chacun d'entre vous que j'ai adapté :
je vais commencer commencer à @ Gros chat vert (fallait bien commencer par quelqu'un, et j'aime bien le surnom que Walkson donne au Chat

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>

Global $Version = "TahLP V.1.0 Beta"
Global $Uniteregion = "Centre de Maintenance"
$ini = "C:\Users\Ciol13\Desktop\General.ini"

Func Centre_Maintenance ()
#Region ### START Koda GUI section ### Form=c:\users\ciol13\desktop\centre maintenance.kxf
$Form1_1 = GUICreate($Version, 379, 566, -1, -1)
GUISetBkColor(0x000000)
$Pic1 = GUICtrlCreatePic("C:\Users\Ciol13\Pictures\Saved Pictures\13700192_1189217081099782_1151219815043908903_n.jpg", 8, 112, 188, 172, BitOR($GUI_SS_DEFAULT_PIC,$WS_CLIPSIBLINGS), $GUI_WS_EX_PARENTDRAG)

Local $array = IniReadSection("General.ini", "Centre_Maintenance")
_ArrayDisplay($array)    ; juste pour voir le contenu

;$gui = GUICreate("test", 379, 566, -1, -1)
Local $buttons[$array[0][0]]              ; array des boutons
For $i = 1 to $array[0][0]
    ; là on découpe la value pour récupérer les coordonnées, le nom du bouton est dans la key
    $split = StringSplit($array[$i][1], ",")
    $buttons[$i-1] = GUICtrlCreateButton($array[$i][0], $split[1], $split[2], $split[3], $split[4])
Next


$Group1 = GUICtrlCreateGroup("Centre", 8, 48, 345, 265)
GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("Logiciel de Télérelève  automatique  : Choix du " &$Uniteregion, -16, 0, 391, 41, BitOR($SS_CENTER,$SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 400, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
$Button8 = GUICtrlCreateButton("Aide", 32, 496, 99, 25)
$Label2 = GUICtrlCreateLabel("© Tous droits réservés", 280, 544, 78, 14)
GUICtrlSetFont(-1, 6, 400, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
$Button9 = GUICtrlCreateButton("Quitter", 248, 496, 99, 25)
$Group2 = GUICtrlCreateGroup("Group2", 16, 472, 345, 65)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Pic2 = GUICtrlCreatePic("C:\Users\Ciol13\Pictures\Saved Pictures\slide2.jpg", 8, 320, 364, 148)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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


		Case $Button9
			Exit
	EndSwitch
WEnd
EndFunc

Centre_Maintenance ()
et maintenant, mon code adapté avec l'idée de @Walkson (idée qui me semble plus simple pour la gestion des centres, mais faudra essayer

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>

Global $Version = "TahLP V.1.0 Beta"
Global $Uniteregion = "Centre de Maintenance"
$ini = "C:\Users\Ciol13\Desktop\General.ini"

Func Centre_Maintenance ()
#Region ### START Koda GUI section ### Form=c:\users\ciol13\desktop\centre maintenance.kxf
$Form1_1 = GUICreate($Version, 379, 566, -1, -1)
GUISetBkColor(0x000000)
$Pic1 = GUICtrlCreatePic("C:\Users\Ciol13\Pictures\Saved Pictures\13700192_1189217081099782_1151219815043908903_n.jpg", 7, 99, 188, 172, BitOR($GUI_SS_DEFAULT_PIC,$WS_CLIPSIBLINGS), $GUI_WS_EX_PARENTDRAG)


    $arrayini = IniReadSection ( @ScriptDir & "\test.ini", "Centre_Maintenance" )
    _ArrayDisplay($arrayini)
    $nbbutton = $arrayini[0][0]
;    Global $Form1 = GUICreate("Form1", 300, 200, 192, 124)
;    GUISetState(@SW_SHOW)
    Local $Arraybutton[UBound($arrayini)]
    Local $top = 10
    Local $left = 10
    For $i = 1 To $nbbutton
		$left = 200
		$top += 25
        $Arraybutton[$i] = GUICtrlCreateButton($arrayini[$i][1],$left,$top+63,147,25)
    Next
;    _ArrayDisplay($Arraybutton)

$Group1 = GUICtrlCreateGroup("Centre", 8, 48, 345, 265)
GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("Logiciel de Télérelève  automatique  : Choix du " &$Uniteregion, -16, 0, 391, 41, BitOR($SS_CENTER,$SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 400, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
$Button88 = GUICtrlCreateButton("Aide", 32, 496, 99, 25)
$Label2 = GUICtrlCreateLabel("© Tous droits réservés", 280, 544, 78, 14)
GUICtrlSetFont(-1, 6, 400, 0, "Times New Roman")
GUICtrlSetColor(-1, 0xFFFFFF)
$Button99 = GUICtrlCreateButton("Quitter", 248, 496, 99, 25)
$Group2 = GUICtrlCreateGroup("Group2", 16, 472, 345, 65)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Pic2 = GUICtrlCreatePic("C:\Users\Ciol13\Pictures\Saved Pictures\slide2.jpg", 8, 320, 364, 148)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

			Exit
		Case $Button88
			Exit
		Case $Button99
			Exit
	EndSwitch
WEnd
EndFunc
Centre_Maintenance ()
Bref, en gros, j'en BIP pour trouver ajouter une suite à donner aux boutons ainsi créés, j'ai cherché, cherché, jusqu'à 3h, et après, quand j'ai vu l'heure, ben je suis allé me coucher, voilà que je me réveille à midi et demie!

Bon allez, merci beaucoup pour votre aide si précieuse, autoit me donne tellement d'idées, c'est un truc de ouf, je ne sais pas s'il ne faudrait pas que je passe sur un programme plutôt qu'un script des fois!

Bonne journée

Ciol13
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mer. 01 juin 2016 19:10
Status : Hors ligne

Re: GUI et fichiers INI

#8

Message par Ciol13 » dim. 18 déc. 2016 13:25

zut, dans ma réponse, il manque les tabulations, c'est con pour comprendre
bon je vais la refaire avec des mots

disons que dans le centre de lyon, il y a plusieurs sous unités : Clermont, Grenoble, Albertville, Lyon, Saint Etienne, et dans chaque sous unités, il y a des groupements de maintenance, par exemple, dans la sous unité de lyon, il y a trois groupements : Lentilly, Mions, et Montluel, dans la sous unité de Grenoble, il y a les groupements de Beaumont, et Grenoble...

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5830
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: GUI et fichiers INI

#9

Message par mikell » dim. 18 déc. 2016 17:41

Ciol13 a écrit :chaque bouton lancera une autre gui....
dans le centre de lyon, il y a plusieurs sous unités....
dans chaque sous unités, il y a des groupements....
Bigre. ça se complique, et ça commence à sentir la matriochka :mrgreen:
2 remarques
- si la liste de centres est importante, ça va faire une chiée de boutons :shock:
Pourquoi ne pas utiliser une Combobox avec un seul bouton de validation pour lancer l'autre gui ? ça serait beaucoup plus simple... en plus si ça se trouve avec la place libérée dans la gui principale tu n'aurais peut-être même pas besoin d'une autre gui
- en reprenant le concept de mon code précédent (y avait que ça d'intéressant dedans en fait :mrgreen: ), tu pourrais faire ton ini comme ça
[Lyon] ; centre
Lyon=Lentilly,Mions,Montluel ; sous-unité=groupement1,groupement2,groupement3
Grenoble=Beaumont,Grenoble
Albertville=...
SaintEtienne=... etc
puis utiliser IniReadSectionNames pour avoir la liste des centres et remplir la combo, et une fois le choix fait, IniReadSection, etc

Cela dit s'il y a des "couches" supplémentaires (ex: dans chaque groupement il y a ... etc) une base de données serait plus adaptée
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 17:12
Status : Hors ligne

Re: GUI et fichiers INI

#10

Message par Hugues » lun. 19 déc. 2016 18:01

Salut,

Pour ma part, je suis d'accord avec Mikell. Vu la quantité de données que tu as à gérer une base de données serait pas mal.

Tu peux y stocker un grand nombre de données, faire des liens de tables (je pense par exemple au régions, départements, communes, communes rattachées, code postaux, etc...).

Tu pourras y stocker aussi les réussites d'installation (version software, date d'installation, échec ou réussite de l'installation...).

Enfin bref, je suis loin d'être expert en la matière je balance des idées comme ça. Je suis confronté en ce moment un peu au même problème que toi...

Exemple d'un fichier xls que l'on pourrait mettre en base SQL: Code INSEE

Ciol13
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mer. 01 juin 2016 19:10
Status : Hors ligne

Re: GUI et fichiers INI

#11

Message par Ciol13 » lun. 19 déc. 2016 20:06

Bonsoir, je reste débutant malgré tout, et j'ai bien peur que ça me dépasse, après, c'est à étudier, en attendant, j'ai fait un bout de code qui fonctionne mais qu'il n'est pas évolutif, le but étant de développer mon projet assez rapidement, par la suite, je vais prévoir les évolutions ça me laissera le temps de réfléchir à tout ça, mais déjà, je vous posterai mon code d'ici à la fin de la semaine pour que vous puissiez voir l'étendue des dégâts, et ensuite, vous pourrez voir à quel point mon code peut évoluer, mais je prends en compte toutes vos remarques, et je les essaye en parallèle!

Bonne soirée

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 661
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: GUI et fichiers INI

#12

Message par walkson » lun. 19 déc. 2016 22:45

En reprenant l'idée de Mikell
#include<Array.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $array = IniReadSection("AA.ini","Centre")
;_ArrayDisplay($array)
Local $array1 = IniReadSection("AA.ini","sous unités")
;_ArrayDisplay($array1)
Local $array2 = IniReadSection("AA.ini","groupements")
;_ArrayDisplay($array2)

Global $Form1 = GUICreate("", 600, 124, 192, 124)
Global $Combo1 = GUICtrlCreateCombo("", 16, 16, 177, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
Global $Combo2 = GUICtrlCreateCombo("", 208, 16, 177, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
Global $Combo3 = GUICtrlCreateCombo("", 400, 16, 177, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
Global $Input1 = GUICtrlCreateInput("", 141, 64, 321, 28)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
For $i = 1 To $array[0][0]
        GUICtrlSetData($Combo1,$array[$i][1] & "|")
Next


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

         Case $Combo1
                 GUICtrlSetData($Combo2,"")
                 GUICtrlSetData($Combo3,"")
                 GUICtrlSetData($Input1,"")
                 $val1 = GUICtrlRead($Combo1)
                 For $i = 1 To $array1[0][0]
                         If $val1 = $array1[$i][0] Then GUICtrlSetData($Combo2,$array1[$i][1] & "|")
                Next
         Case $Combo2
                 GUICtrlSetData($Combo3,"")
                 GUICtrlSetData($Input1,"")
                 $val2 = GUICtrlRead($Combo2)
                 For $i = 1 To $array2[0][0]
                         If $val2 = $array2[$i][0] Then GUICtrlSetData($Combo3,$array2[$i][1] & "|")
                Next
         Case $Combo3
                 $val3 = GUICtrlRead($Combo3)
                 GUICtrlSetData($Input1,$val1 &" "& $val2 &" "&  $val3)
                 Switch $val3
                         Case "Lentilly", "Beaumont", "Grenoble"
                                 MsgBox(0,"","Une action 1")
                         Case "Mions"
                                 MsgBox(0,"","Une action 2")
                         Case "Montluel"
                                 MsgBox(0,"","Une action 3")
                         Case Else
                                 MsgBox(0,"","Une action else")
                 EndSwitch

 EndSwitch
WEnd
Avec comme INI
[Centre]
1=Lyon
2=Paris
3=Lille
[sous unités]
Lyon=Clermont
Lyon=Grenoble
Lyon=Albertville
Lyon=Lyon
Lyon=Saint Etienne
Paris=Evry
Paris=Boulogne
Lille=Roubaix
[groupements]
Lyon=Lentilly
Lyon=Mions
Lyon=Montluel
Grenoble=Beaumont
Grenoble=Grenoble
Clermont=Pont du château
Albertville=Albertville1
Saint Etienne=Saint Etienne1
Evry=Courcouronnes
Boulogne=Saint Cloud
Boulogne=Meudon
Roubaix=Croix
Le INI reste valable pour peu de données
S'il y en avait quelques centaines, on peut imaginer un tableau excel dont chaque feuille correspondrait à une section
Et s'il y en a des milliers, SQLite est indispensable !
Vous remarquerez quand fonction du résultat du combo 3, on peut lancer une action spécifique (fonction, gui etc..)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Ciol13
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mer. 01 juin 2016 19:10
Status : Hors ligne

Re: GUI et fichiers INI

#13

Message par Ciol13 » mer. 21 déc. 2016 18:45

Bonsoir?
SQLite est indispensable !
hum, c'est un mammifère marin? c'est ça?
Bon, je me renseigne

Ceci étant, en faisant un mix de tout ça, j'ai fait un bout de chemin, qui m'amène d'autres questions, parce que d'autres idées!! va falloir qu'on en parle!!

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5830
Enregistré le : dim. 29 mai 2011 16:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: GUI et fichiers INI

#14

Message par mikell » mer. 21 déc. 2016 21:16

Hum, walkson a raison (si j'ai lu convenablement entre ses lignes)
Histoire de ne pas coder pour rien, il faudrait peut-être d'abord définir précisément la quantité de données que tu auras à traiter et la façon dont tu devras les traiter, de manière à savoir quel est le meilleur moyen de stockage et donc la direction à donner au code
Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Ciol13
Niveau 2
Niveau 2
Messages : 28
Enregistré le : mer. 01 juin 2016 19:10
Status : Hors ligne

Re: GUI et fichiers INI

#15

Message par Ciol13 » jeu. 19 janv. 2017 18:18

Bonsoir, vu que j'ai un délai relativement court, je prends note, pour des futurs projets, celui-ayant plus ou moins abouti à quelque chose qui me semble satisfaisant.

Certes il y a des choses à améliorer, mais dans un premier temps, il sera distribué en l'état

en tous cas, merci à vous

Répondre