Page 1 sur 1

[R] Comment récupérer le filtre utilisé ?

Posté : lun. 21 févr. 2011 20:58
par theAvenger
Bonjour à tous !
J'aimerais juste savoir comment récupérer le filtre utilisé avec la fonction FileSaveDialog car ce n'est pas expliqué dans l'aide. Merci.

Re: [..] Comment récupérer le filtre utilisé ?

Posté : lun. 21 févr. 2011 21:23
par FernandG
Bonsoir,

Très bonne question :wink:
Je m'étais déjà penché sur ce cas. A l'époque j'avais trouvé ce lien sur le forum US : 43973-filesavedialog-return-filter.

Si quelqu'un à mieux à proposer ... :wink:

Bon courage et bonne soirée.

Re: [..] Comment récupérer le filtre utilisé ?

Posté : lun. 21 févr. 2011 22:55
par Tlem
Je ne comprend pas trop bien la question ...
Pour les filtres, c'est pourtant bien expliquer dans l'aide.

Vous avez la ligne de commande de FileSaveDialog qui vous indique que les filtres devront être placés entre guillemets puis trois exemples de filtres sont montrés + 2 dans l'exemple :

1 - File type single filter such as "All (*.*)"
2 - or "Text files (*.txt)"
3 - or multiple filter groups such as "All (*.*)|Text files (*.txt)"
4 - (*.aut;*.au3) <= Montré dans l'exemple
5 - "Scripts (*.aut;*.au3)|Text files (*.ini;*.txt)" <= Montré dans l'exemple

Le texte juste après les premiers guillemets est un texte représentatif du filtre, puis entre parenthèses, vous avez le filtre lui même ... 8)
En 3, 4 et 5, vous avez des exemples de comment mettre plusieurs filtres en les séparent par le caractère "|" et/ou ";" en fonction du type de fichiers souhaité.

Re: [..] Comment récupérer le filtre utilisé ?

Posté : lun. 21 févr. 2011 23:03
par FernandG
Je pense qu'il a voulu dire (c'était mon cas) :

En cas de filtre multiple dans la fonction FilesaveDialog, comment récupère t'on le type de filtre sélectionné ?! Comment savoir si la sélection est de type au3 ou un txt, par exemple ?!

La variable associé à FileSaveDialog ne donnant que le nom du fichier.

Re: [..] Comment récupérer le filtre utilisé ?

Posté : lun. 21 févr. 2011 23:20
par TommyDDR
Et bien testez ce dit fichier.
► Afficher le texte

Re: [..] Comment récupérer le filtre utilisé ?

Posté : lun. 21 févr. 2011 23:44
par FernandG
:wink: :wink: merci TommyDDR :wink: :wink:

Bon ... dans l'exemple, la variable $Fichier, contient déjà l'extension or FileSaveDialog ne retourne pas l'extension que l'on a sélectionné, sauf si on l'a saisie.

Implicitement, en sélectionnant le filter type on devrait avoir ce type stocké quelque part, @extended par exemple, et ce n'est pas le cas.

Car beaucoup de personnes entrent un nom de fichier, choisissent l'extension en sélectionnant le "filter" et valident l'enregistrement du fichier. La variable nous retourne que le path et le nom du fichier et rien sur le choix effectué au niveau du filtre.

Enfin, je peux me tromper sur la demande initiale ... donc excepté le lien donné, je n'ai pas mieux à fournir.

Re: [..] Comment récupérer le filtre utilisé ?

Posté : mar. 22 févr. 2011 00:24
par Tlem
En fait, FileSaveDialog et FileOpenDialog fonctionne sur le même principe.
Le but des filtres est de filtrer l'affichage (d’où le nom :lol: ).

En effet, avec un filtre dans ce genre : "Text files (*.txt;*.ini)", comment le script peut-il connaitre le filtre à utiliser ... .txt ou .ini ???

Par contre, avec ce type de filtre : "Text files (*.txt)|Ini File (*.ini)" la fonction devrait prendre le filtre sélectionné par défaut, mais en l’occurrence, la fonction n’a pas été écrite comme cela, donc en dehors d'une bidouille comme sur le lien donné par FernandG, il n'y à pas de solution simple. ;)

Re: [..] Comment récupérer le filtre utilisé ?

Posté : jeu. 24 févr. 2011 15:15
par theAvenger
Merci, c'est exactement ça. Je vais le tester tout de suite.

Re: [..] Comment récupérer le filtre utilisé ?

Posté : mar. 01 nov. 2011 13:18
par ZOTHOP
Bonjour,

je me suis longuement penché sur la question et j'ai enfin trouvé la solution pour récupérer le filtre automatiquement.
Ce n'est pas FileSaveDialog qu'il faut utiliser si l'on veut travailler avec plusieurs filtres.
D'abord il faut inclure :

#Include <WinAPI.au3>

Puis utiliser la fonction :
_WinAPI_GetSaveFileName qui fait office de FileSaveDialog

L'exemple qui suit montre comment l'utiliser pour récupérer le chemin d'accès du fichier et le filtre choisit

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 212, 146, 192, 124)
$Button1 = GUICtrlCreateButton("Save", 64, 56, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Select
    Case $nMsg=$Button1
        $aFile = _WinAPI_GetSaveFileName("Sélectionnez un fichier","Text(*.txt)|OGH Files(*.ogh)")
        _ArrayDisplay($aFile)
    EndSelect
    
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd
 
L'Array contient :
$aFile[1] la lettre du lecteur et le dossier.
$aFile[2] le nom du fichier et le filtre choisit en extension.

Re: [..] Comment récupérer le filtre utilisé ?

Posté : mar. 01 nov. 2011 18:17
par theAvenger
Merci beaucoup !!!! C'est beaucoup plus pratique !!!
Sujet résolu !