Page 1 sur 1
[..] GUI "dynamique"
Posté : ven. 14 août 2015 19:40
par TiDi
Bonjour,
Je ne sais pas si le titre correspond bien à mon problème.
Dans une interface, je liste des données contenus dans un fichier .ini avec des labels. Le problème, c'est que le nombre de label va dépendre de l'utilisateur, si il y a un trop grand nombre de label, ils dépasseront de la GUI. De plus, comment définir la position des labels lors de l'appelle de la fonction GUICtrlCreateLabel.
Voici ce que j'ai fait :
► Afficher le texteCréation de l'interface
Code : Tout sélectionner
Local $aGUI = GuiCreate("GETNP++", 500, 200, 200, 200)
Local $aMenu1 = GUICtrlCreateMenu("Espace de travail")
Local $aMenu1Item1 = GUICtrlCreateMenuItem("Nouveau...", $hMenu1)
Local $aMenu1Item2 = GUICtrlCreateMenuItem("Supprimer...", $hMenu1)
Local $aMenu2 = GUICtrlCreateMenu("Mise à jour")
Local $aMenu2Item1 = GUICtrlCreateMenuItem("Mise à jour", $hMenu2)
Local $aMenu2Item2 = GUICtrlCreateMenuItem("Mise à jour automatique", $hMenu2)
Local $aMenu3 = GUICtrlCreateMenu("GETNP++")
Local $aMenu3Item1 = GUICtrlCreateMenuItem("Aide", $hMenu3)
Local $aMenu3Item2 = GUICtrlCreateMenuItem("Fermer", $hMenu3)
For $i = 1 To UBound($aEspaceTravail)
Local $aLabel&$i = GUICtrlCreateLabel($aEspaceTravail[$i-1], ?, ?, ?, ?)
Next
Re: [..] GUI "dynamique"
Posté : ven. 14 août 2015 21:26
par jguinch
Il faut stocker la position Y dans une variable et l'incrémenter au fur et à mesure de la création des labels.
Puis WinMove pour redimensionner la fenêtre (tu peux calculer la bonne dimension dès la création de la GUI aussi)
Ex :
► Afficher le texte
Code : Tout sélectionner
#Include <GUIConstantsEx.au3>
$iLabelNumber = 10
$hGui = GUICreate("GUI")
$iPosY = 10
$iSpaceBetween = 10
$iLabelH = 25
For $i = 0 To $iLabelNumber - 1
GUICtrlCreateLabel("Label " & $i + 1, 10, $iPosY, Default, $iLabelH)
ConsoleWrite($iPosY & @CRLF)
$iPosY += $iLabelH + $iSpaceBetween
Next
WinMove($hGui, "", Default, Default, Default, $iPosY + $iLabelH)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Re: [..] GUI "dynamique"
Posté : sam. 15 août 2015 14:31
par TiDi
Voici ce que j'ai fait à part de mon programme pour tester la gui dynamique. J'ai un petit problème, seul les 5 premières valeurs de l'array s'affiche, les autres non. Pourtant j'utilise la fonction UBound dans la boucle for.
► Afficher le texte
Code : Tout sélectionner
; Déclarations des variables dynamiques
Local $iaCtrlTop = 10
Local $iaCtrlSpace = 10
Local $iaCtrlHeight = 25
Local $ibCtrlTop = 10
Local $ibCtrlHeight = 20
Local $aEspaceTravailNom[7] = ["A", "B", "C", "D", "E", "F", "G"]
; Création de l'interface principale (a)
Local $aGUI = GuiCreate("GETNP++", 450, 200, -1, -1)
Local $aMenu1 = GUICtrlCreateMenu("Espace de travail")
Local $aMenu1Item1 = GUICtrlCreateMenuItem("Nouveau...", $aMenu1)
Local $aMenu1Item2 = GUICtrlCreateMenuItem("Supprimer...", $aMenu1)
Local $aMenu2 = GUICtrlCreateMenu("Mise à jour")
Local $aMenu2Item1 = GUICtrlCreateMenuItem("Mise à jour", $aMenu2)
Local $aMenu2Item2 = GUICtrlCreateMenuItem("Mise à jour automatique", $aMenu2)
Local $aMenu3 = GUICtrlCreateMenu("GETNP++")
Local $aMenu3Item1 = GUICtrlCreateMenuItem("Aide", $aMenu3)
Local $aMenu3Item2 = GUICtrlCreateMenuItem("Fermer", $aMenu3)
For $i = 0 To UBound($aEspaceTravailNom)-1
Local $aLabel = GUICtrlCreateLabel($aEspaceTravailNom[$i], 10, $iaCtrlTop, 430, $iaCtrlHeight)
$iaCtrlTop += $iaCtrlSpace + $iaCtrlHeight
Next
WinMove($aGUI, "", Default, Default, Default, $iaCtrlTop + $iaCtrlHeight)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Re: [..] GUI "dynamique"
Posté : sam. 15 août 2015 22:04
par mikell
Les labels s'affichent bien, c'est juste que la gui n'est pas assez haute pour qu'on puisse les voir
Relis le post de jguinch
Re: [..] GUI "dynamique"
Posté : mar. 25 août 2015 21:20
par TiDi
La GUI ne fonctionne pas correctement avec mon programme. J'ai mit longtemps avant de comprendre d'où venait le problème mais je ne sais pas comment le résoudre :
► Afficher le texte
Code : Tout sélectionner
#Include <GUIConstantsEx.au3>
$iLabelNumber = 10
$hGui = GUICreate("GUI")
;~ $aMenu1 = GUICtrlCreateMenu("Espace de travail")
;~ $aMenu1Item1 = GUICtrlCreateMenuItem("Nouveau...", $aMenu1)
;~ $aMenu1Item2 = GUICtrlCreateMenuItem("Supprimer...", $aMenu1)
;~ $aMenu2 = GUICtrlCreateMenu("Mise à jour")
;~ $aMenu2Item1 = GUICtrlCreateMenuItem("Mise à jour", $aMenu2)
;~ $aMenu2Item2 = GUICtrlCreateMenuItem("Mise à jour automatique", $aMenu2)
;~ $aMenu3 = GUICtrlCreateMenu("GETNP++")
;~ $aMenu3Item1 = GUICtrlCreateMenuItem("Aide", $aMenu3)
;~ $aMenu3Item2 = GUICtrlCreateMenuItem("Fermer", $aMenu3)
$iPosY = 10
$iSpaceBetween = 5
$iLabelH = 25
For $i = 0 To $iLabelNumber - 1
GUICtrlCreateLabel("Label " & $i + 1, 10, $iPosY, Default, $iLabelH)
ConsoleWrite($iPosY & @CRLF)
$iPosY += $iLabelH + $iSpaceBetween
Next
WinMove($hGui, "", Default, Default, Default, $iPosY + $iLabelH)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Lorsque je laisse le reste de la GUI en commentaires, tout fonctionne parfaitement mais lorsque je vais intégrer mon menu dans la GUI, les labels sont coupés.
Re: [..] GUI "dynamique"
Posté : mar. 25 août 2015 22:08
par jguinch
Ah oui, le menu prend de la place dans la GUI et décale tout...
Tu dois pouvoir calculer la taille du menu, mais j'avoue que j'ai pas trop cherché dans les UDF, j'ai fait au plus simple avec l'utilisation de 2 WinGetClientSize (un avant et un après la création du menu)
► Afficher le texte
Code : Tout sélectionner
#Include <GUIConstantsEx.au3>
#include <GuiMenu.au3>
#include <Array.au3>
$iLabelNumber = 10
$hGui = GUICreate("GUI", 400, 400)
$aClientSize = WinGetClientSize($hGui)
$aMenu1 = GUICtrlCreateMenu("Espace de travail")
$aMenu1Item1 = GUICtrlCreateMenuItem("Nouveau...", $aMenu1)
$aMenu1Item2 = GUICtrlCreateMenuItem("Supprimer...", $aMenu1)
$aMenu2 = GUICtrlCreateMenu("Mise à jour")
$aMenu2Item1 = GUICtrlCreateMenuItem("Mise à jour", $aMenu2)
$aMenu2Item2 = GUICtrlCreateMenuItem("Mise à jour automatique", $aMenu2)
$aMenu3 = GUICtrlCreateMenu("GETNP++")
$aMenu3Item1 = GUICtrlCreateMenuItem("Aide", $aMenu3)
$aMenu3Item2 = GUICtrlCreateMenuItem("Fermer", $aMenu3)
$iPosY = 10
$iSpaceBetween = 5
$iLabelH = 25
$aClientSizeWithMenu = WinGetClientSize($hGui)
$iMenuHeight = $aClientSize[1] - $aClientSizeWithMenu[1]
For $i = 0 To $iLabelNumber - 1
GUICtrlCreateLabel("Label " & $i + 1, 10, $iPosY, Default, $iLabelH)
$iPosY += $iLabelH + $iSpaceBetween
Next
WinMove($hGui, "", Default, Default, Default, $iPosY + $iLabelH + $iMenuHeight)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd