Pas de problème (pb), que du PowerBuilder (PB) ^^

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

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 25-02-2010 10:20:52

apaoletti  
Membre
Date d'inscription: 19-10-2009
Messages: 3
Pépites: 23
Banque: 0

[SOLUCE] Problème avec la fenètre de dialogue lors d'un importfile

Bonjour à tous

Apres avoir fait un tour sur les topics liés a mon problème, je tente de l'exposer. En fait je viens de resoudre le problème miraculeusement. Mais je prefere vous l'expliquer car apres tout ca peut servir à d'autres.


J'ai une application PB (qui tourne sur PB 9.0.1) dans laquelle on a des images avec des adresses relatives, histoire d'offrir plus de souplesse. Pour l'instant pas de souci.

Je souhaite desormais importer des données dans une datawindow. J'utilise la methode importfile, et je laisse a l'utilisateur le soin de rentrer le nom du fichier, via la fenetre de dialogue. Normal.

Problème alors mes images disparaissent. Pourquoi? Parce que la fenetre de dialogue change le répertoire courant de l'application. L'"adresse de référence" n'etant plus la meme, les images ne s'affichent donc plus. Si je mets directement le nom du fichier comme argument le problème ne se pose pas. C'est bien la fenetre de dialogue le problème.

J'ai esayé une autre méthode en scindant l'import en tant que tel et la recherche du fichier, en utilisant la fonction GetFileOpenName mais là patatras j'ai le même souci. C'est d'ailleurs tres bien expliqué dans l'aide sur la fonction :
The dialog boxes presented by GetFileOpenName and GetFileSaveName are system dialog boxes. They provide standard system behavior, including control over the current directory. When users change the drive, directory, or folder in the dialog box, they change the current directory or folder. The newly selected directory or folder becomes the default for file operations until they exit the application, unless the optional initdir argument is passed.

Donc voila, ma question etait comment pourrais je donc bien faire pour que mon répertoire courant retrouve sa valeur d'origine?
Comme je l'ai vu dans ce topic (http://pbadonf.fr/forum/viewtopic.php?id=1233) il existe une fonction qui recupere le repertoire courant. (GetCurrentDirectory()) Existerait elle la meme pour la reinitialiser apres l'execution de l'ouverture de la boite de dialogue?

Voici ce que j'ai trouvé comme solution. Dans le meme aide sur le Getfileopenname, il est possible de rajouter des flags pour 'customiser' sa fenetre de dialogue. L'un s'appelle :
7    OFN_NOCHANGEDIR    Restore the current directory to its original value if the user changed the directory while searching for files. This option has no effect for GetFileOpenName on Windows NT, 2000, and XP.

Au depart je n'y croyais pas trop vu que je suis sur XP, mais bon je me suis dis pourquoi ne pas tenter d'abord, et là ca a marché. il me conserve mon repertoire. Bizarre non?

Si vous avez d'autres solutions, ou en esperant que ce retour d'experience sera utile aux futurs embetes ;)

Dernière modification par apaoletti (25-02-2010 10:21:37)

Hors ligne

 

#2 25-02-2010 11:44:59

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [SOLUCE] Problème avec la fenètre de dialogue lors d'un importfile

Bonjour, ici et pour ton retour.

En ce qui concerne les images, je pense que tu n'aurais pas eu les mêmes problèmes si tu les avais déclarées dans un fichier PBR au moment de la compilation. (ce qui t'aurait d'ailleurs évité de les déployer avec l'application)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 29-07-2010 07:16:55

marty  
Membre
Date d'inscription: 02-07-2008
Messages: 19
Pépites: 1,252,440
Banque: 0

Re: [SOLUCE] Problème avec la fenètre de dialogue lors d'un importfile

Yop,

Désolé de réouvrir un vieux sujet mais sous PB 11.1 j'ai eu le même problème bien que les images en adresse relatives soient déclarées dans un PBR.
Donc merci bien pour le tuyaux. Je suis sous Windows XP et l'argument OFN_NOCHANGEDIR marche.

Par contre, pour ne pas que la fenêtre explorer change de style il faut également rajouter le flag OFN_EXPLORER.

Donc pour résumer voilà à quoi ressemble l'appel de cette fonction:

Code: pb

GetFileOpenName("PDF Document", ls_path, ls_file, 'PDF', "Adobe PDF Files (*.pdf), *.pdf", "C:\",66)

Hors ligne

 

#4 29-07-2010 12:05:21

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [SOLUCE] Problème avec la fenètre de dialogue lors d'un importfile

Bonjour Marty,
le fichier pbr résoud ce problème pour l'application compilée, mais pas depuis pb.
AMHA, tu as eu ce bug en tetsant ton applie depuis PB.


never let people work on more than one thing at once.

Hors ligne

 

#5 29-07-2010 13:34:51

marty  
Membre
Date d'inscription: 02-07-2008
Messages: 19
Pépites: 1,252,440
Banque: 0

Re: [SOLUCE] Problème avec la fenètre de dialogue lors d'un importfile

Ah oui tiens, en effet.
Bien vu.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22