| FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG | |
|
|
Auteur | Message |
---|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG Mar 27 Fév 2018 - 10:48 | |
| OPEN/SAVE_DIALOG: Dans l'edit "nom de fichier", le programmeur ne peut pas écrire/proposer un nom de fichier par défaut. Proposition de nom de commande : FILE_DIALOG N,T ,ou 'N' serait le numéro de l'OPEN/SAVE_DIALOG et 'T' la proposition de nom de fichier par défaut. Dans l'edit "fichiers de type", l'utilisateur d'un OPEN/SAVE_DIALOG peut filtrer une liste de fichier, mais le programmeur ne sait pas quel type de fichier a été choisi par l'utilisateur. Proposition de nom de commande : T=FILTER_DIALOG$(N) ,ou 'N' serait le numéro de l'OPEN/SAVE_DIALOG et 'T' le filtre (format string) lu dans l'edit "fichiers de type". Exemple dans un code: - Code:
-
dim a$ save_dialog 1 : filter 1,"Panoramic files(*.bas)|*.bas|Backup files(*.bak)|*.bak|Picture files(*.bmp)|*.bmp|" : a$=file_name$(1) ' ' Test : saisir 'azert.bmp' dans l'edit "nom de fichier" du SAVE_DIALOG, puis cliquez sur "enregistrer" ' if FILTER_DIALOG$(1)<>file_extract_extension$(a$) then print "Erreur, le filtre dans l'edit "+chr$(34)+"type de fichier"+chr$(34)+" est .bas" END ' émuler le choix utilisateur dans l'edit "type de fichier" fnc FILTER_DIALOG$(N) result ".bas" end_fnc
Dernière édition par silverman le Mar 27 Fév 2018 - 19:00, édité 2 fois | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 27 Fév 2018 - 14:15 | |
| Tu peux extraire l' extension du retour file_name$ par file_extract_extension$... file$=file_name$(OD%) ext$=file_extract_extension$(file$)...j'dis çà mais j'dis rien. | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG Mar 27 Fév 2018 - 15:40 | |
| Ce n'est pas extraire l'extension du retour file_name$ qui va solutionner le pb, pas du tout. Supposons, tu as un SAVE_DIALOG qui te permet de sauvegarder en "*.bas" et "*.txt" Par défaut, le filtre "fichiers de type" est positionné sur "*.bas" Maintenant si l'utilisateur écrit dans l'edit "nom de fichier" d'un SAVE_DIALOG "monfichier.txt" alors que le filtre selectionné est "*.bas", comment fais tu pour avertir l'utilisateur que l'extension du fichier ne concorde pas avec le filtre? S'il voulait enregistrer "monfichier.bas" mais qu'il s'est trompé en écrivant? Pour autant, les 2 extensions de fichiers sont valides puisque le SAVE_DIALOG l'autorise et propose de choisir entre les 2... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG Mar 27 Fév 2018 - 18:09 | |
| Le teste systématiquement la chaîne retournée par FILE_NAME$. 1. si c'est "_", alors abandon 2. j'extraie l'extension par FILE_EXTRACT_EXTENSION 3. je vérifie l'extension si elle est présente (!!!) et si elle est vraiment valide 4. le cas échéant, je teste l'existence du fichier avant toute utilisation pour une ouverture Et à chaque anomalie, je réagis selon les circonstances.
C'est indispensable. Car en-dehors de la sélection d'un fichier dans la liste qui s'affiche, l'utilisateur peut saisir lui-même un nom de fichier, et là, il peut rentrer n'importe quoi... essaie - tu seras surpris ! | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG Mar 27 Fév 2018 - 18:23 | |
| Ma demande concerne le cas ou l'utilisateur peut saisir lui-même un nom de fichier. Le nom de fichier saisie par l'utilisateur peut avoir une extension différente de celle du filtre de l'edit "type" (ou "fichiers de type"). Il n'y a aucun moyen de vérifier le filtre choisi dans un open/save_dialog. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG Mar 27 Fév 2018 - 18:36 | |
| Ben non, justement. Techniquement, ce n'est pas possible puisque Windows laisse passer cela. D'où tous mes tests tels qu'indiqués ci-dessus... | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG Mar 27 Fév 2018 - 18:46 | |
| Ce sera plus clair comme ça: - Code:
-
dim a$ save_dialog 1 : filter 1,"Panoramic files(*.bas)|*.bas|Backup files(*.bak)|*.bak|Picture files(*.bmp)|*.bmp|" : a$=file_name$(1) ' ' Test : saisir 'azert.bmp' dans l'edit "nom de fichier" du SAVE_DIALOG, puis cliquez sur "enregistrer" ' if FILTER_DIALOG$(1)<>file_extract_extension$(a$) then print "Erreur, le filtre dans l'edit "+chr$(34)+"type de fichier"+chr$(34)+" est .bas" END ' émuler le choix utilisateur dans l'edit "type de fichier" fnc FILTER_DIALOG$(N) result ".bas" end_fnc | |
|
| |
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG Mar 6 Mar 2018 - 14:38 | |
| OK. Je vais coder FILE_DIALOG N,T avec: N qui est le numéro d'un OPEN_DIALOG, SAVE_DIALOG, OPEN_DIALOG_PIC, SAVE_DIALOG_PIC, T qui est une proposition de nom de fichier par défaut. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG Mar 6 Mar 2018 - 19:13 | |
| Excellent, merci jack Y aura t-il le moyen de récupérer le 'nFilterIndex' de la structure 'OPENFILENAME' après l'appui sur 'ok' d'un dialog? En effet, puisque l'on peut imposer un filtre via la commande 'FILTER N,T' il est possible de retrouver ce filtre en l'extrayant de T, à partir de son numéro d'index. Obtenir l'index semble plus simple à coder qu'une fonction du type 'T=FILTER_DIALOG$(N)' puisque là il s'agit juste de lire un dword dans la structure 'OPENFILENAME' après l'appui sur 'ok' du dialog. | |
|
| |
Contenu sponsorisé
| Sujet: Re: FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG | |
| |
|
| |
| FILE_DIALOG N,T et FILTER_DIALOG$(N) pour OPEN/SAVE_DIALOG | |
|