Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1








Bonjour à tous,
Excusez-moi de autant vous solliciter.
Imaginons que par le biais d'un GetFileSaveName, j'ai défini une fenêtre dans laquelle j'ai défini les
extensions suivantes :
- *.doc
- *.xls
- *.txt
Si l'utilisateur choisi le format Excel, comment puis-je savoir qu'il l'a choisi ?
Par avance, merci.
Doctor Z.

Hors ligne






Bonjour,
Il suffit de tester l'extension du fichier en retour dans la fonction GetFileSaveName :
IF GetFileSaveName ( "Select File", ls_pathname, ls_file, "XLS", "XLS (*.xls), *.xls, CSV (*.csv), *.csv" , "C:\My Documents", 32770) = 1 THEN IF lower(right(ls_pathname,4)) = '.xls' THEN // Excel END IF IF lower(right(ls_pathname,4)) = '.csv' THEN // CSV END IF END IF
Hors ligne








buck a écrit:
Bonjour,
Il suffit de tester l'extension du fichier en retour dans la fonction GetFileSaveName :Code: PB
IF GetFileSaveName ( "Select File", ls_pathname, ls_file, "XLS", "XLS (*.xls), *.xls, CSV (*.csv), *.csv" , "C:\My Documents", 32770) = 1 THEN IF lower(right(ls_pathname,4)) = '.xls' THEN // Excel END IF IF lower(right(ls_pathname,4)) = '.csv' THEN // CSV END IF END IF
Oui tout à fait et je me rend compte que j'ai oublié d'inclure le problème qui m'occupe :
- Word => fichier .DOC
- Excel => fichier .XLS
- Excel with headers => fichier .XLS aussi !
Pour le 2e et 3e choix, j'aurai du XLS. Comment je peux faire la distinction ?

Hors ligne











Doctor Z a écrit:
Oui tout à fait et je me rend compte que j'ai oublié d'inclure le problème qui m'occupe :
- Word => fichier .DOC
- Excel => fichier .XLS
- Excel with headers => fichier .XLS aussi !
Pour le 2e et 3e choix, j'aurai du XLS. Comment je peux faire la distinction ?
Au hasard... Par lecture des deux premières lignes de ton fichier: S'il y a une différence de format, c'est que tu es dans le 3ème choix
Hors ligne








foon a écrit:
Doctor Z a écrit:
Oui tout à fait et je me rend compte que j'ai oublié d'inclure le problème qui m'occupe :
- Word => fichier .DOC
- Excel => fichier .XLS
- Excel with headers => fichier .XLS aussi !
Pour le 2e et 3e choix, j'aurai du XLS. Comment je peux faire la distinction ?Au hasard... Par lecture des deux premières lignes de ton fichier: S'il y a une différence de format, c'est que tu es dans le 3ème choix
Lorsque je suis en train de faire mon GetFileSaveName (), mon fichier n'existe pas encore.
OK, alors compléxifions un peu la chose :
- Word => fichier .DOC
- Excel => fichier .XLS
- Excel 5 => Fichier .XLS
- Excel 8 => Fichier .XLS
Comment faire la distinction entre les 3 versions d'Excel ?

Hors ligne






Bonjour,
En fait, je m'aperçois que tu travailles sur un problème que j'ai eu à résoudre il y a déjà quelques années. Je ne sais pas si c'est la meilleure solution.
En fait j'ai développé une fenêtre qui contient une liste déroulante avec tous les formats d'exports que je souhaite supporter.
En premier, l'utilisateur sélectionne dans cette liste déroulante le format d'export souhaité. Ensuite, il appuie sur un bouton qui lui permet de choisir l'emplacement et le nom du fichier (GetFileSaveName) en paramétrant la fenêtre avant son ouverture avec une seule extension possible en fonction du format préalablement sélectionné par l'utilisateur :
Hors ligne








Bonjour,
Je n'ai pas accès à ta capture d'écran ici dans mon lieu de travail
J'avais commencé tout comme toi, par développé une nouvelle fenêtre dans laquelle je listais
l'ensemble des extensions que je souhaitais gérées, une fenêtre qui ressemblait à la fenêtre
"Enregistrer sous".
1° Mon premier problème vient du fait que je ne sais pas comment faire pour avoir l'explorateur
Windows dans une datawindow (la partie où l'utilisateur sélectionne le dossier dans lequel il souhaite
sauvegarder son fichier). Hier j'ai fait quelques tests avec un objet OLE, mais je n'ai rien eut de
convaincant (je n'ai jamais utilisé d'objet OLE).
2° Par la méthode de mon post ici, cela résoud mon problème. Le souci et c'est ce qui me reste à
résoudre, est le fait que Windows se "souvient" des fichiers similaires qui ont été sauvegardés. Par
exemple, si j'enregistre un premier fichier toto1.xls, lorsque je voudrai enregistrer un autre fichier toto2, en commençant à écrire le nom du fichier, Windows va me proposer une liste de fichiers. Si l'utilisateur sélectionne le nom de fichier existant (soit toto1.xls) et qu'il supprime le 1 par 2, afin
d'avoir toto2.xls, ma méthode tombe à l'eau, car je gère en interne une extension qui me permet
de faire la distinction entre les différents types d'une même extension (par exemple, pour faire la
distinction entre le format Excel et le format Excel with headers tous deux d'extension .XLS, en interne
j'indique .xlsn pour le premier et .xlsh pour le second, que je retravaille ensuite pour les enregistrer
avec le paramètre correct avec un SaveAsAscii).
Je continue de chercher, mais j'avoue que je suis un peu bloqué.
Merci.
Doctor Z.

Hors ligne






Bonjour,
Avec ma méthode :
1°) J'utilise toujours GetFileSaveName pour choisir l'emplacement de sauvegarde et le nom du fichier. La différence : l'utilisateur a choisi avant d'ouvrir la fenêtre GetFileSaveName le format de fichier a sauvegardé dans la liste déroulante. Je modifie les extensions supportées par GetFileSaveName (à une seule extension) avant d'ouvrir la fenêtre restrient au format choisi par l'utilisateur.
Tu peux donc conserver l'extension .xls quelque soit le format du fichier excel puisse que l'utilisateur aura choisi en amont dans la liste déroulante le format d'export : Excel with header, Excel 8 ...
Tu sais donc quelles paramètres appliquer à SaveAs.
2°) Tu ne gères plus qu'une seule extension pour les différents formats excel. Il te suffit juste de vérifier avant l'export une demande de confirmation à l'utilisateur si le fichier existe déjà en utilisant la fonction FileExists
Sinon, si tu tiens vraiment à avoir ton propre explorateur windows. J'ai développée une fenêtre qui permet de choisir un dossier dans l'arborescence du disque sous forme de treeview.
Je t'ai proposé dans un autre post de mettre le code à disposition. Tu pourras l'utiliser comme point de départ pour développer un explorateur complet.
Hors ligne






Bonjour,
Doctor Z a écrit:
J'avais commencé tout comme toi, par développé une nouvelle fenêtre dans laquelle je listais
l'ensemble des extensions que je souhaitais gérées
Pourquoi ne pas continuer dans cette voie. Je suppose que tu avais listé tes extensions dans une DDLB?
Doctor Z a écrit:
1° Mon premier problème vient du fait que je ne sais pas comment faire pour avoir l'explorateur
Windows dans une datawindow (la partie où l'utilisateur sélectionne le dossier dans lequel il souhaite
sauvegarder son fichier)
La fonction GetFileSaveName() gère ce genre de chose. Pourquoi vouloir créer une DW qui te servirai d'explorateur? J'imagine que ça doit être possible avec une DW treeview mais tu vas te compliquer la vie.
If DDLB.Text = "PDF" then GetFileSaveName ( "Select File", ls_path, ls_file, "PDF","PDF Files (*.PDF),*.PDF") ElseIf DDLB.Text = "XLSn" or DDLB.Text = "XLSn" then GetFileSaveName ( "Select File", ls_path, ls_file, "XLS","XLS Files (*.XLS),*.XLS") ElseIf DDLB.Text = "TXT" then GetFileSaveName ( "Select File", ls_path, ls_file, "TXT","TXTFiles (*.TXT),*.TXT") End if
Doctor Z a écrit:
2° Par la méthode de mon post ici, cela résoud mon problème. Le souci et c'est ce qui me reste à
résoudre, est le fait que Windows se "souvient" des fichiers similaires qui ont été sauvegardés. Par
exemple, si j'enregistre un premier fichier toto1.xls, lorsque je voudrai enregistrer un autre fichier toto2, en commençant à écrire le nom du fichier, Windows va me proposer une liste de fichiers. Si l'utilisateur sélectionne le nom de fichier existant (soit toto1.xls) et qu'il supprime le 1 par 2, afin
d'avoir toto2.xls, ma méthode tombe à l'eau, car je gère en interne une extension qui me permet
de faire la distinction entre les différents types d'une même extension (par exemple, pour faire la
distinction entre le format Excel et le format Excel with headers tous deux d'extension .XLS, en interne
j'indique .xlsn pour le premier et .xlsh pour le second, que je retravaille ensuite pour les enregistrer
avec le paramètre correct avec un SaveAsAscii).
Je ne vois pas ce qui te pose problème! Une fois que l'utilisateur a enregistré son fichier, tu as besoin de savoir de quel type d'extension il s'agit?
Hors ligne








Bonjour,
Merci pour vos réponses.
Dans ce cas il me faudrait 2 fenêtres :
- la première où l'utilisateur sélectionne le format voulu (via un ddlb)
- la seconde pour que l'utilisateur enregistre son fichier à l'endroit voulu (via le GetFileSaveName ())
Je ne vois pas comment on peut en amont, sélectionner le format voulu sans pour autant créer une
nouvelle fenêtre avant le GetFileSaveName () ...
Dans ma datawindow, l'utilisateur choisi dans le menu de l'application "Sauvegarder sous" et je ne
dois avoir qu'une fenêtre dans laquelle il va choisir l'emplacement, le nom ainsi que l'extension du
fichier.
nico, c'est pour cela que cherchait à créer une fenêtre semblable à celle générée par le GetFileSaveName ()
car j'aurai un controle totale sur ce que fait l'utilisateur sur la fenêtre, ce que je n'ai pas avec le
GetFileSaveName () car Windows se souvient des noms de fichiers commençant par les mêmes
caractères.
buck, dans ce cas, ton code pour avoir un explorateur Windows dans une datawindows/fenêtre
m'intéresserait fortement, car je ne vois pas comment faire autrement.

Hors ligne






Bonjour,
Effectivement, je suis d'accord j'utilise 2 fenêtres.
ça ne pose pas véritablement de problèmes à mes utilisateurs. Je n'ai jamais eu de remarques à ce sujet.
Il y a également le fait que tu n'as pas accès à la copie d'écran. Dans ma fenêtre, je propose un emplacement de sauvegarde par défaut, ainsi qu'un nom par défaut pour le fichier d'export. L'utilisateur clique sur le bouton pour ouvrir GetFileSaveName uniquement si les options par défaut ne lui convienne pas.
Je regarde pour extraire le code de mon framework et le mettre à disposition.
Hors ligne






Dortor Z a écrit:
c'est pour cela que cherchait à créer une fenêtre semblable à celle générée par le GetFileSaveName ()
car j'aurai un controle totale sur ce que fait l'utilisateur sur la fenêtre, ce que je n'ai pas avec le
GetFileSaveName () car Windows se souvient des noms de fichiers commençant par les mêmes
caractères
Comme le dit Buck propose un emplacement de sauvegarde par défaut, ainsi qu'un nom par défaut pour le fichier d'export
li_cpt ++ ls_path = "c:\export\toto"+string(li_cpt)+".pdf" GetFileSaveName ( "Select File", ls_path, ls_file, "PDF","PDF Files (*.PDF),*.PDF")
Hors ligne








nico a écrit:
Dortor Z a écrit:
c'est pour cela que cherchait à créer une fenêtre semblable à celle générée par le GetFileSaveName ()
car j'aurai un controle totale sur ce que fait l'utilisateur sur la fenêtre, ce que je n'ai pas avec le
GetFileSaveName () car Windows se souvient des noms de fichiers commençant par les mêmes
caractèresComme le dit Buck propose un emplacement de sauvegarde par défaut, ainsi qu'un nom par défaut pour le fichier d'export
Code: pb
li_cpt ++ ls_path = "c:\export\toto"+string(li_cpt)+".pdf" GetFileSaveName ( "Select File", ls_path, ls_file, "PDF","PDF Files (*.PDF),*.PDF")
nico, imaginons le code suivant :
li_cpt ++ ls_path = "c:\export\toto"+string(li_cpt)+".csv" GetFileSaveName ( "Select File", ls_path, ls_file, "CSV","CSV,*.csv,CSV with headers,*.csv")
OK j'ai bien un path et un nom par défaut, mais je reste bloquer pour faire la différence des 2 types
de CSV.
En effet, dans ma fenêtre, j'aurai bien mon nom par défaut, mais lorsque je vais procéder à la
sauvegarde de mon fichier, toto23.csv par exemple, comment ma fenêtre va savoir si j'ai sélectionné
CSV ou CSV with headers ?

Hors ligne






Grace à ta DDLB (choix de l'utilisateur)
Hors ligne








nico a écrit:
Grace à ta DDLB (choix de l'utilisateur)
Je sais que j'en demande peut être trop, mais je souhaiterai m'abstenir de la fenêtre intermédiaire et
ne garder que la fenêtre généré par mon GetSaveFileName () et avec une seule fenêtre je ne vois
pas comment m'en sortir, j'ai l'impression que c'est un problème sans solution

Hors ligne






Désolé, là je sèche
Hors ligne








nico a écrit:
Désolé, là je sèche
C'est déjà très sympa que vous essayiez tous de m'aider, ce n'est pas une obligation
En fait, comme je n'ai pas le choix, je vais proposer à postiori le type qu'il souhaite. Si l'utilisateur
récupère une partie d'un fichier (toto.csv) pour enregistrer un nouveau fichier en toto1.csv, comme
je ne sais pas ce qu'il aura choisi dans la liste déroulante, je vais proposer une fenêtre avec un
bouton radio dans lequel il devra préciser le format qu'il souhaite :
- CSV
- CSV with headers
En cliquant sur OK, je saurai comment enregistrer le fichier. Je pense que je n'ai pas d'autre choix.

Hors ligne






Bonjour,
On doit mal se comprendre. Ce qu'on te propose c'est de choisir le format dans une liste déroulante => CSV, CSV with Header, Excel with Header, Excel without Header.
Ce qui revient au même que de mettre un radio bouton. C'est juste une histoire de présentation différente.
Hors ligne






C'est dommage que tu ne puisse pas voir la capture d'écran de Buck, tu verrais peut-être mieux les choses.
C'est vrai que mettre un radio bouton ou une DDLB, ce n'est qu'une histoire de présentation pour l'utilisateur.
Hors ligne








Oui effectivement, je vais regarder la capture chez moi ce soir pour voir si l'on parle de la même
chose.

Hors ligne








Bonjour à tous,
J'ai vu l'écran que buck a développé et pour l'instant je me suis débrouillé pour ne pas utilisé une
datawindow listant les répertoires Windows. Si nécessaire, je reviendrai vers vous.
Merci.

Hors ligne
Pages: 1