IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

[Delphi7] Changer le InitialDir d'une TOpenDialog


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Responsable maintenance
    Inscrit en
    Juin 2003
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable maintenance

    Informations forums :
    Inscription : Juin 2003
    Messages : 26
    Par défaut [Delphi7] Changer le InitialDir d'une TOpenDialog

    Déjà évoqué sur ce forum, sous Delphi7, on ne peut rendre effectif le changement de répertoire à l'ouverture d'un OpenDialog en modifiant la propriété InitialDir. Au 1er appel, le répertoire présenté par OpenDialog est conforme à InitialDir. Pour les appels suivants, quelque soit la valeur affectée à InitalDir et à la propiété OfNoChangeDir, on conserve le dernier répertoire sélecté par l'utilisateur.
    Seule solution peu satisfaisante : mettre la propriété ofOldStyleDialog à true.

    Y a-t-il une autre solution ou est-sans espoir ?

  2. #2
    Teo
    Teo est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 110
    Par défaut
    HUG !
    En ce qui me concerne, j'utilise que tres rarement les TOpenDialog ou TSaveDialog, directement sur une fiche.

    Je me suis fait une fonction(dans une Unite),
    et je l'appelle a chaq fois qu'il faut choisir un fichier.
    Comme parametres j'ai justement le "dossier de travail initial==>RepTrav".

    Cette fonction creer en dynamique, une TOpenDialog ou TSaveDialogue
    J'ai une variable "Rep_Trav_Def:String" (Repertoire de Travil par Defaut)
    qui est Global a ma Unit dans la partie implementation, et qui contient a chaque fois, le dernier dossier utilisé.

    Si j'ai pas definit de repertoire de travail par defaut(lors de l'appel de la fonction, alors j'utilise le dernier(Rep_Trav_Def).
    Sinon, je creer ma T..Dialogue en lui fixant a chaque fois le repertoire de travail demandé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If RepExiste(RepTrav)
        Then InitialDir := RepTrav
        Else InitialDir := Rep_Trav_Def;
    Cette fonction dont voici le code, me vient de ma periode Turbo Pascal
    C'est donc un tres vieux truc, que j'ai depoussieré dernierement en 1999.
    Tant que ca marche j'ai tendance a ne rien toucher.
    Je suis surtout un flemard toujours convaincu d'avoir plus important a faire
    Je constate que j'y utilisie la paire "Goto/Label"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    Function FichierChoisitCplx(Var NomFic:String;LesFichiers:TStringList;Titre,Filtre,Ext,RepTrav:String;DoitExister,Obligatoirement,Multi,Signaler,Ouv:Boolean):Boolean;
    Var
      OpnDialog:TOpenDialog;
      SavDialog:TSaveDialog;
      OpnSavDialog:TOpenDialog;
      I:Integer;
      FicExiste,FicExistePas:Boolean;
    Label Execution,Extraire;
    Begin 
      Result := False;
      If Ouv
      Then Begin
        If Not CreerTOpenDialog(OpnDialog) Then Exit;
        OpnSavDialog := OpnDialog;
      End
      Else Begin
        If Not CreerTSaveDialog(SavDialog) Then Exit;
        OpnSavDialog := SavDialog;
      End;
      With OpnSavDialog Do
      Begin
        NomFic := '';
        If (Ext = '') Or (Length(Ext) = 0) Then Ext := '*.*';
        If Ext[1] <> '*'
        Then Begin
          If Pos('.',Ext) = 0
          Then Ext := '*'+Ext;
        End;
        If Ext[2] <> '.'
        Then Begin
          If Pos('.',Ext) = 0
          Then Insert('.',Ext,2);
        End;
        If Ext = '*.' Then Ext := '*.*';
        If Filtre = '' Then Filtre := 'Tous (*.*)|*.*';
        Filter := Filtre;
        FileName := Ext;
        If Ext = '*.*'
        Then DefaultExt := ''
        Else DefaultExt := Ext;
        If RepExiste(RepTrav)
        Then InitialDir := RepTrav
        Else InitialDir := Rep_Trav_Def;//--->Varglobal à ma Unit, dans partie IMplementation
        If Titre = ''
        Then Begin
          Titre := 'Choisir un Fichier';
          If DoitExister And Obligatoirement
          Then Titre := Titre+' (Existance Obligatoire)'
          Else
          If DoitExister And (Not Obligatoirement)
          Then Titre := Titre+' (Existance souhaitée)'
          Else
          If (Not DoitExister) And Obligatoirement
          Then Titre := Titre+' (Inexistance Obligatoire)'
          Else
          If (Not DoitExister) And (Not Obligatoirement)
          Then Titre := Titre+' (Inexistance Souhaitée)';
        End;
        Title := Titre;
        If DoitExister And Obligatoirement Then Options := Options+[ofFileMustExist];
        If Multi  Then Options := Options+[OfAllowMultiSelect];
        Execution :
        I := 0;
        If Execute
        Then Begin
          Extraire :
          If Multi
          Then NomFic := Files[I]
          Else NomFic := FileName;
          ConfigExtFic(NomFic,Ext);
          FicExiste := FileExists(NomFic);
          FicExistePas := Not FicExiste;
          If DoitExister And Obligatoirement And FicExistePas
          Then Begin
            MessageInformation('Le Fichier "'+NomFic+'" n''existe pas, Choisissez en un Autre.');//---> Fonction a moi, qui appelle MessageDlg(.....)
            GoTo Execution;
          End
          Else
          If DoitExister And (Not Obligatoirement) And Signaler And FicExistePas
          Then Begin
            If Not MessageConfirmation('Le Fichier "'+NomFic+'" n''existe pas. Choix Confirmez ?')
            Then GoTo Execution;
          End
          Else
          If (Not DoitExister) And Obligatoirement And FicExiste
          Then Begin
            MessageInformation('Le Fichier "'+NomFic+'" existe déjà, Choisissez en un Autre.');
            GoTo Execution;
          End
          Else
          If (Not DoitExister) And (Not Obligatoirement) And Signaler And FicExiste
          Then Begin
            If Not MessageConfirmation('Le Fichier "'+NomFic+'" existe déjà.'+#13+' Choix Confirmer ?')
            Then GoTo Execution;
          End;
          If Multi
          Then Begin
            Files[I] := NomFic;//Car ConfigExtFic
            If I+1 < Files.Count
            Then Begin
              I := I+1;
              GoTo Extraire;
            End;
          End;
          Result := True;
          Rep_Trav_Def := InitialDir;
        End
        Else Begin
          Result := False;
          NomFic := '';
        End;
      End;
      If Result
      Then Begin
        If Multi
        Then Begin
          If LesFichiers = Nil Then LesFichiers := TStringList.Create();
          LesFichiers.Assign(OpnSavDialog.Files);
          NomFic := LesFichiers[0];
        End;
      End;
      If Ouv
      Then OpnDialog.Free
      Else SavDialog.Free;
      OpnSavDialog := Nil;//===>Je l'ai pas creer, donc pas de Free
    End;
    Cplx ==> Complexe.
    Donc j'ai créé des fonctions plus simples, qui elles vont l'appeler,
    et ce sont elle que j'appelle.
    Contraintes, faut toujours definir au moins 5 parametres...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Function FichierChoisit(Var NomFic:String;LesFichiers:TStringList;Titre,Filtre,Ext,RepTrav:String;DoitExister,Obligatoirement,Multi,Signaler:Boolean):Boolean;
    Var Ouv,Svg:Boolean;
    Begin
      Svg := (Pos('ENREGISTR',UpperCase(Titre)) > 0) Or (Pos('SAUVE',UpperCase(Titre)) > 0);
      Ouv := Not Svg;
     Result := FichierChoisitCplx(NomFic,LesFichiers,Titre,Filtre,Ext,RepTrav,DoitExister,Obligatoirement,Multi,Signaler,Ouv)
    End;
     
    Function UnFichierChoisit(Var NomFichier:String;Titre,Filtre,Ext,RepTrav:String;DoitExister,Obligatoirement,Signaler:Boolean):Boolean;
    Var LesFichiers:TStringList;
    Begin
      LesFichiers := TStringList.Create;
      Result := FichierChoisit(NomFichier,LesFichiers,Titre,Filtre,Ext,RepTrav,DoitExister,Obligatoirement,False,Signaler);
      LesFichiers.Free;
    End;
     
    Function FichierInexistantChoisit(Var NomFichier:String;Titre,Filtre,Ext,RepTrav:String;Obligatoirement,Signaler:Boolean):Boolean;
    Var LesFichiers:TStringList;
    Begin
      LesFichiers := TStringList.Create;
      Result := FichierChoisit(NomFichier,LesFichiers,Titre,Filtre,Ext,RepTrav,False,Obligatoirement,False,Signaler);
      LesFichiers.Free;
    End;
     
    Function UnFichierExistantChoisit(Var NomFichier:String;Titre,Filtre,Ext,RepTrav:String;Obligatoirement,Signaler:Boolean):Boolean;
    Var LesFichiers:TStringList;
    Begin
      LesFichiers := TStringList.Create;
      Result := FichierChoisit(NomFichier,LesFichiers,Titre,Filtre,Ext,RepTrav,True,Obligatoirement,False,Signaler);
      LesFichiers.Free;
    End;
     
    Function FichierExistantChoisit(Var NomFichier:String;LesFichiers:TStringList;Titre,Filtre,Ext,RepTrav:String;Obligatoirement,Multi,Signaler:Boolean):Boolean;
    Begin
    //Pour en choisir plusieurs 
      Result := FichierChoisit(NomFichier,LesFichiers,Titre,Filtre,Ext,RepTrav,True,Obligatoirement,Multi,Signaler);
    End;

    C'est tres brouillon mais ca peut peut etre aider.

Discussions similaires

  1. [ JSP ][ JavaScript ] Changer la valuer d'une variable
    Par romain3395 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 08/06/2004, 15h50
  2. Réponses: 8
    Dernier message: 14/05/2004, 11h18
  3. [VB6]Changer la couleur d'une ligne d'un ListView
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/03/2003, 17h02
  4. Changer l'icône d'une fenêtre à partir d'un .res
    Par henderson dans le forum C++Builder
    Réponses: 8
    Dernier message: 11/03/2003, 10h48
  5. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo