Common Dialogue initialisation du répertoire

cs_M51 Messages postés 63 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 10 août 2007 - 30 mai 2006 à 18:33
cs_Arnaud92 Messages postés 1 Date d'inscription jeudi 10 juin 2004 Statut Membre Derniè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.

Une idée ?

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 mai 2006 à 22:50
Salut
Si, avant d'appeler .ShowOpen, tu précises le .InitDir, il n'y a pas de raison que ça ne marche pas.
Vérifie

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
0
cs_M51 Messages postés 63 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 10 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 ;(
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
18 sept. 2006 à 15:21
Salut 627332 M51, Salut =2204 jack,

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>
0
cs_Arnaud92 Messages postés 1 Date d'inscription jeudi 10 juin 2004 Statut Membre Derniè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
0
Rejoignez-nous