cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007
-
30 mai 2006 à 18:33
cs_Arnaud92
Messages postés1Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 8 avril 2007
-
8 avril 2007 à 18:35
J'utilise une common dialogue pour ouvrir ou sauver des fichiers. Mon
problème: bien que je puisse déclarer avec la propriété initdir le
répertoire d'ouverture par défaut du common dialogue, lorsque j'ouvre
plusieurs fois ma common dialogue il ne revient pas au répertoire par
défaut. Cela ne marche que lors de la première ouverture.
cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007 31 mai 2006 à 10:39
Ben non j'ai revérifié c'est bien là le problème justement:
CD.Filter = "*.xml|*.xml"
CD.InitDir = App.Path & "\Template"
CD.ShowOpen
Cela marche très bien la première fois, si tu changes de répertoire, il restera sur ce répertoire la porchaine fois.
Il faut réinialiser VB6 pour que cela remarche ;(
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 juin 2006 à 03:43
Salut
En effet, comme dit dans l'aide, .InitDir ... "sert à indiquer le dossier de fichier initial des boîtes de dialogue"
Ils disent "initial", ils ne précisent pas que cette initiation n'est valable qu'une fois, au chargement du composant.
La mémoire est même gardée entre deux Run
Il ne semble pas possible de bypasser la mémorisation du dernier répertoire parcourru.
J'ai regardé parmi les Flags, mais il n'y a rien.
Désolé.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 juin 2006 à 03:51
Même en utilisant les APIs (comme SHGetFileNameFromBrowse), la mémoire reste active.
C'est même plus profond que ça puisque :
J'ai deux instances de VB6 en cours.
Un des projets utilise l'OCX CommonDialog, l'autre utilise les APIs.
La deuxième n'a même pas été initialisée, elle reprend la mémoire du répertoire précédemment sélectionné dans l'autre projet.
Amusant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
vieille question, réponse jeune (mais pas meilleure pour autant),
sur un poste NT4.0, VB6 Sp4, Comdlg32 6.0 (6.0.84.18 pour l'ocx, 4.0 pour la comdlg32.dll, 6.0.81.63 pour la Cmdlgfr.dll), le bug n'existe que tant que le projet VB n'est pas enregistré (le common dialog modifie en live le App.Path), après, plus de bug.
sur un poste W2K, VB6 Sp6, Comdlg32 6.0 (6.1.97.82 pour l'ocx, 5.0.3700.6693 pour la comdlg32.dll, 6.0.81.63 pour la Cmdlgfr.dll), le bug existe, jusqu'au déchargement du formulaire situant le contrôle sus-dit, après, plus de bug.
à noter aussi que le chemin courant, sous DOS, est modifié par le Common Dialog (enfin, c'est l'effet observé), et qu'aucune commande de DOS n'a d'influence (pushd, popd, cd...), sûrement hors de portée du process.
à+
rvblog<sup>n
Je veux ton bien....et je l'aurais....mais jamais avant la page 4 des derniers échanges</sup>
cs_Arnaud92
Messages postés1Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 8 avril 2007 8 avril 2007 à 18:35
Bonjour,
J'ai résolu ce même problème rencontré en réinitialisant FileName avec la valeur du répertoire où je vais chercher mon fichier avant de lancer .ShowOpen.
InitDir ne m'a pas aider à afficher le répertoire initiale...
Dans l'exemple ci-dessous, c'est txtValeur qui contient le répertoire initiale (voire le fichier initiale) que je souhaite visualiser :
With CommonDialog1
.DialogTitle = "Choix du fichier"
.FileName = txtValeur
.ShowOpen
If (.FileName <> "") Then
txtValeur = .FileName
End If
End With