Page 1 sur 1
[R] Ordres des fenetres
Posté : lun. 18 août 2014 10:59
par Idrazil
Bonjour,
J'explique mon problème: j'ai une GUI principale ($MAIN) avec divers éléments, et je voudrais que lorsque je clique sur un bouton, un autre GUI ($SECOND) apparaisse devant la précédente mais sans être devant toutes les autres fenêtres (comme le fait $WS_EX_TOPMOST).
Mais je voudrais en plus que $MAIN ne puisse être modifiée tant que $SECOND n'ai pas fermée, pour être plus clair c'est une espèce de pop-up comme l'on peut avoir sur n'importe quel navigateur internet.
En vous remerciant de votre aide
PS: J'ai cherché sur le forum mais je n'ai trouvé
Re: [..] Ordres des fenetres
Posté : lun. 18 août 2014 11:27
par TommyDDR
Vous décrivez le comportement de base d'une fenêtre.
Pouvez vous fournir votre code ? Vous avez du y mettre un style qu'il ne fallait pas.
Re: [..] Ordres des fenetres
Posté : lun. 18 août 2014 13:53
par Idrazil
Voila:
► Afficher le texte
Code : Tout sélectionner
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <GuiListView.au3>
#include <GuiComboBoxEx.au3>
#include <ListViewConstants.au3>
#include <Array.au3>
#include <Fcts.au3>
_MAIN()
Func _MAIN()
Global $MAIN=GUICreate("FileMover",500,400)
Local $Origin=GUICtrlCreateInput("",10,10)
Local $End=GUICtrlCreateInput("",10,40)
Local $Origin_Path=GUICtrlCreateButton(" Parcourir ",250,10)
Local $End_Path=GUICtrlCreateButton(" Parcourir ",250,40)
Local $Get_Exts=GUICtrlCreateButton(" Extension ",10,250)
Local $Save=GUICtrlCreateButton(" Enregistrer ",10,300)
Dim $Exts
Dim $Name
Dim $Last[10000]
Dim $Final[10000]
Dim $nb
Local $i,$j
GUISetState(@SW_SHOW, $MAIN)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Origin_Path
GUICtrlSetData($Origin,FileSelectFolder("folder",""))
Case $End_Path
GUICtrlSetData($End,FileSelectFolder("folder",""))
Case $Get_Exts
$nb=DirGetSize(GUICtrlRead($Origin),1)
$Exts=StringSplit(_ListFiles(GUICtrlRead($Origin),"*"),"|")
For $i=1 To $nb[1] Step +1
$Name=StringSplit($Exts[$i],".")
$Last[$i]=$Name[$Name[0]]
Next
For $i=1 To $nb[1]
For $j=0 To $i-1
If $Last[$i]<>$Last[$j] Then
$Final[$i]=$Last[$i]
Else
$Final[$i]=""
$j=$i
EndIf
Next
Next
For $i=1 To $nb[1] Step +1
If $Final[$i]<>"" Then
MsgBox("","",$Final[$i])
EndIf
Next
;=========================================================================
Global $EXTS=GUICreate("Extensions",200,100)
;=========================================================================
GUISetState(@SW_SHOW, $EXTS)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Case $Save
_FileCreate(".\Macros\"&InputBox("Enregistrement","Entrer le nom de votre macro:","")&".ini")
EndSwitch
WEnd
EndFunc
La GUI dont je parle se trouve éntre les ";===="
Tu as raison, je ne peux pas effectuer d'actions sur les boutons mais les Inputs restent modifiables "à la main"
(ce n'est qu'un petit point dont je peux trouver une solution de contournement)
Re: [..] Ordres des fenetres
Posté : lun. 18 août 2014 14:12
par TommyDDR
Je vous conseille fortement de passer en mode événementiel pour vos gui, votre code n'en sera que plus lisible et beaucoup moins complexe, cela vous permettra entre autre de pouvoir gérer plusieurs GUI en parallèle assez facilement.
(des exemples doivent se trouver sur le forum).
Votre problème actuellement c'est que lorsque vous ouvrez votre 2eme GUI, vous lancez une seconde boucle infinie dans la 1ere, ce qui empêchera le rafraichissement de la première (voir des deux ?).
Re: [..] Ordres des fenetres
Posté : lun. 18 août 2014 15:55
par Idrazil
OK je prends note et vais donc suivre les tutos
Merci de ton intervention rapide
Je passe donc en résolu