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

Langage Delphi Discussion :

ajouter un dossier dans une ListBox


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 397
    Points : 165
    Points
    165
    Par défaut ajouter un dossier dans une ListBox
    Bonjour,

    Comment je peux ajouter un dossier(sans l'ouvrir) dans un Tlistbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure Tcopier.Button1Click(Sender: TObject);
    begin
        if OpenDialog1.Execute then liste.Items.Add(OpenDialog1.FileName);
    end;
    Avec cette procédure je peux ajouter un fichier mais je ne peux pas ajouter un dossier
    Je voudrais pouvoir ajouter les deux sans distinction

    Merci

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 375
    Points : 3 154
    Points
    3 154
    Par défaut
    Bonjour,

    je pense qu'il faudrait que tu passe par FindFirst et FindNext pour tout récupérer y compris les sous répertoires
    Voici l'aide de D7 sur FindFirst :

    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
    procedure TForm1.Button1Click(Sender: TObject);
     
    var
      sr: TSearchRec;
      FileAttrs: Integer;
    begin
      StringGrid1.RowCount := 1;
      if CheckBox1.Checked then
        FileAttrs := faReadOnly
      else
        FileAttrs := 0;
      if CheckBox2.Checked then
        FileAttrs := FileAttrs + faHidden;
      if CheckBox3.Checked then
        FileAttrs := FileAttrs + faSysFile;
      if CheckBox4.Checked then
        FileAttrs := FileAttrs + faVolumeID;
      if CheckBox5.Checked then
     
        FileAttrs := FileAttrs + faDirectory;
      if CheckBox6.Checked then
        FileAttrs := FileAttrs + faArchive;
      if CheckBox7.Checked then
     
        FileAttrs := FileAttrs + faAnyFile;
     
      with StringGrid1 do
      begin
        RowCount := 0;
     
        if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then
     
        begin
          repeat
            if (sr.Attr and FileAttrs) = sr.Attr then
            begin
            RowCount := RowCount + 1;
            Cells[1,RowCount-1] := sr.Name;
            Cells[2,RowCount-1] := IntToStr(sr.Size);
            end;
          until FindNext(sr) <> 0;
          FindClose(sr);
        end;
      end;
    end;
    Ce code place les éléments dans un TStringGrid, ce qui est proche de ton cas

    A+

    Charly

  3. #3
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 397
    Points : 165
    Points
    165
    Par défaut
    Merci, mais en fait je me suis surement mal expliqué.

    Le problème vient de la boite de dialogue qui lorsque je sélectionne un dossier l'ouvre automatiquement.

    J'essaie de créer une appli pour faire des sauvegardes, donc je veux sélectionner des fichiers et dossiers puis lancer la sauvegarde (copie de ces éléments sur un disque externe)

    Merci

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 741
    Points : 5 428
    Points
    5 428
    Par défaut
    Au hasard sans vraiment pousser très loin, je tenterai un ExtractFilePath.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure Tcopier.Button1Click(Sender: TObject);
    begin
        if OpenDialog1.Execute then liste.Items.Add(ExcludeTrailingPathDelimiter(ExtractFilePath(OpenDialog1.FileName)));
    end;
    PS : le ExcludeTrailingPathDelimiter est juste là pour enlever le backslash de fin parce que je trouve que çà fait plus joli.

    Après tu peut jouer avec RigthStr (ou StrRight je ne sais jamais) pour prendre uniquement le dernier répertoire

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 375
    Points : 3 154
    Points
    3 154
    Par défaut
    Pour les répertoires tu peux utiliser SelectDirectory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      If SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],0) then
        liste.Items.Add(Dir) ;
    mais cela ne marche pas pour les fichiers pour lesquels il faudrait que tu conserves TOpenDialog.

    L'idéal serait un explorer de fichier avec des cases à cocher devant les fichiers et les répertoires, mais je ne sais pas si cela existe.

    A+

    Charly

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 892
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 892
    Points : 15 334
    Points
    15 334
    Par défaut
    Salut,
    Citation Envoyé par Charly910 Voir le message
    (...) L'idéal serait un explorer de fichier avec des cases à cocher devant les fichiers et les répertoires, mais je ne sais pas si cela existe.

    A+

    Charly
    Ce n'est pas l'idéal, c'est ce qu'il faut ! C'est ce qu'utilise NTBackup, par exemple.
    Ça existe sur le web, mais c'est moche :
    http://www.delphipages.com/forum/sho...d.php?t=167210
    http://gtro.com/delphi/gtrocheckshelltreeview_e.php

    Valà,

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 741
    Points : 5 428
    Points
    5 428
    Par défaut
    Je crois que c'est Snark qui a déjà fait exactement ça.
    Peut-être sur son blog auquel je n'ai pas acccès à mon travail et donc je n'en suis pas sur : http://snark.blary.com

  8. #8
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 375
    Points : 3 154
    Points
    3 154
    Par défaut
    GTroCheckShellTreeView est très bien, mais je pense qu'il ne permet d'afficher et de cocher que des répertoires (les fichiers ne sont pas traités car c'est un descendant de ShellTreeview

  9. #9
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 892
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 892
    Points : 15 334
    Points
    15 334
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    GTroCheckShellTreeView est très bien, mais je pense qu'il ne permet d'afficher et de cocher que des répertoires (les fichiers ne sont pas traités car c'est un descendant de ShellTreeview
    Oui, mais la démo disponible sur son site (presque tout en bas de page) affiche classiquement un explorateur (Treeview à gauche, Listview à droite) avec cases à cocher pour les deux composants, donc dossiers + fichiers.

    @popo : ce lien ne fonctionne plus... On retrouve sa trace chez Phidels, avec un explorateur de fichiers également ; je n'ai pas noté s'il incluait les fameuses cases à cocher...

  10. #10
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 741
    Points : 5 428
    Points
    5 428
    Par défaut
    De toute façon, je viens de regarder, ça ne correspond pas. C'est un treeView

  11. #11
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 397
    Points : 165
    Points
    165
    Par défaut
    Merci à tous pour vos efforts pour m'aider. Finalement je me suis résolu à sélectionner soit un fichier soit un dossier et je stock le tout dans un fichier

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 148
    Points : 41 322
    Points
    41 322
    Billets dans le blog
    63
    Par défaut
    j'arrive un peu tard, n'ayant pas suivi cette discussion (à cause du titre peu explicite) mais si
    L'idéal serait un explorer de fichier avec des cases à cocher devant les fichiers et les répertoires, mais je ne sais pas si cela existe.
    c'est relativement facile à faire avec virtualtreeview (voir dans les demos)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/01/2009, 17h32
  2. Ajouter du texte dans une ListBox sans sauter de ligne
    Par walid_kerkoub dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/03/2008, 15h42
  3. Réponses: 1
    Dernier message: 05/06/2007, 20h54
  4. [Question] Ajouter un item dans une ListBox
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 29/12/2005, 19h38
  5. Lister le contenu d'un dossier dans une ListBox
    Par zidenne dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2005, 12h51

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