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

C# Discussion :

Parcourir et sélectionner des fichiers et dossiers


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut Parcourir et sélectionner des fichiers et dossiers
    Bonjour ou plutôt bonsoir,

    Dans l'application que je développe, j'utilise un bouton qui me sert à parcourir des fichiers grâce au composant "openFileDialog".
    Le problème c'est qu'il ne gère que les fichiers et pas les dossiers.
    Et inversement pour le composant "folderBrowserDialog".

    Auriez-vous une idée pour contourner cela ?

    J'ai vu des choses "vite fait" sur Google, mais des étapes imcompréhensibles...

    Merci d'avance pour vos réponses.

    diabolokev

  2. #2
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    Et non, il n'existe pas de composant pour sélectionner indifféremment un dossier ou un fichier, mais j'ai été confronté au même soucis quelques années auparavant, et tu dois développer ton composant toi même...

    Je n'ai plus du tout les sources, mais c'est pas sorcier.Si tu as besoin d'aide n'hésites pas.

    Bon dév.
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Peux-tu me guider car je ne sais pas par où commencer ?

    Je n'ai jamais créé de composant en C#...

    EDIT1 :

    J'ai trouvé ça : http://www.codeproject.com/Articles/...-IShellBrowser

    Par contre faut que je sache l'intégrer à Visual Studio... Ca c'est encore autre chose

    EDIT2 :

    Bon... Le composant n'était pas celui recherché...

  4. #4
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonjour,

    Commence déjà par récupérer les fichiers et dossiers de manière récursive (attention aux perfs, il vaut mieux récupérer les sous dossiers au moment où l'utilisateur en a besoin, ça prend moins de temps que tout charger dès le début en mémoire) et tu les affiches dans un composant du style treeview.

    Commence à coder et si tu as des problèmes, n'hésites pas...
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    J'ai réussi à afficher dans 3 ListBox :
    - Lecteurs
    - Dossiers
    - Fichiers

    Le problème : Là où il y a des dossiers, il n 'y pas les fichiers et inversement pour l'autre. Je ne peux pas faire de sélections multiples.

    Comment puis-je faire avec un TreeView ?

    Voici mon code actuel :

    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
    private void Form2_Load(object sender, EventArgs e)
            {
                foreach (DriveInfo di in DriveInfo.GetDrives())
                {
                    driveList.Items.Add(di);
                }
            }
     
            private void driveList_SelectedIndexChanged(object sender, EventArgs e)
            {
                foldersList.Items.Clear();
                try
                {
                    DriveInfo drive = (DriveInfo)driveList.SelectedItem;
                    foreach (DirectoryInfo dirInfo in drive.RootDirectory.GetDirectories())
                    {
                        foldersList.Items.Add(dirInfo);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
     
            private void foldersList_SelectedIndexChanged(object sender, EventArgs e)
            {
                filesList.Items.Clear();
                filesList2.Items.Clear();
                DirectoryInfo dir = (DirectoryInfo)foldersList.SelectedItem;
                foreach (FileInfo fi in dir.GetFiles())
                {
                    filesList.Items.Add(fi);
                    filesList2.Items.Add(fi.Name);
                }
            }

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    J'ai réussi à charger mes lecteurs et mes dossiers, mais c'est super long car il charge tout d'un coup...

    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
    private void Form1_Load(object sender, EventArgs e)
            {
                try
                {
                    //On efface le contenu du TreeView
                    tvExp.Nodes.Clear();
                    string[] drives = Environment.GetLogicalDrives();
                    //Pour chaque lecteur...
                    foreach (string drv in drives)
                    {
                        TreeNode node = new TreeNode();
                        node.Text = drv;
                        tvExp.Nodes.Add(node);
                        FillDirectory(drv, node, 0);
                    }
                }
                catch (Exception ex)
                {
                    ex.ToString();
                }
            }
     
    private void FillDirectory(string drv, TreeNode parent, int level)
            {
                try
                {
                    level++;
                    if (level > 4)
                        return;
                    DirectoryInfo dir = new DirectoryInfo(drv);
                    if (!dir.Exists)
                        throw new DirectoryNotFoundException
                            ("Le répertoire n'existe pas :" + drv);
     
                    foreach (DirectoryInfo di in dir.GetDirectories())
                    {
                        TreeNode child = new TreeNode();
                        child.Text = di.Name;
                        parent.Nodes.Add(child);
     
                        FillDirectory(child.FullPath, child, level);
                    }
                }
                catch (Exception ex)
                {
                    ex.ToString();
                }
     
            }
    Il faudrait que je charge les répertoires et fichiers en cliquant sur le lecteur que je veux. Et ainsi de suite avec les sous-répertoires...

    Quelqu'un aurait une idée s'il vous plait ?

    EDIT :
    PS : J'ai récupéré un peu de code sur un site

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Up ?

    Quelqu'un pour m'aider ?

  8. #8
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonsoir,

    Je viens de faire ce que tu souhaites faire en light voire très light
    Mais tu as une bonne base pour commençer...

    Le code du designer.cs

    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
        partial class FileDirectorySelector
        {
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
     
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
     
            #region Windows Form Designer generated code
     
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.treeView1 = new System.Windows.Forms.TreeView();
                this.button1 = new System.Windows.Forms.Button();
                this.button2 = new System.Windows.Forms.Button();
                this.SuspendLayout();
                // 
                // treeView1
                // 
                this.treeView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
                | System.Windows.Forms.AnchorStyles.Left) 
                | System.Windows.Forms.AnchorStyles.Right)));
                this.treeView1.CheckBoxes = true;
                this.treeView1.FullRowSelect = true;
                this.treeView1.HideSelection = false;
                this.treeView1.Location = new System.Drawing.Point(12, 12);
                this.treeView1.Name = "treeView1";
                this.treeView1.ShowNodeToolTips = true;
                this.treeView1.Size = new System.Drawing.Size(300, 321);
                this.treeView1.TabIndex = 0;
                // 
                // button1
                // 
                this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
                this.button1.Location = new System.Drawing.Point(83, 341);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(75, 23);
                this.button1.TabIndex = 1;
                this.button1.Text = "&OK";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // button2
                // 
                this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
                this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
                this.button2.Location = new System.Drawing.Point(162, 341);
                this.button2.Name = "button2";
                this.button2.Size = new System.Drawing.Size(75, 23);
                this.button2.TabIndex = 2;
                this.button2.Text = "&Cancel";
                this.button2.UseVisualStyleBackColor = true;
                this.button2.Click += new System.EventHandler(this.button2_Click);
                // 
                // FileDirectorySelector
                // 
                this.AcceptButton = this.button1;
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.CancelButton = this.button2;
                this.ClientSize = new System.Drawing.Size(324, 373);
                this.Controls.Add(this.button2);
                this.Controls.Add(this.button1);
                this.Controls.Add(this.treeView1);
                this.Name = "FileDirectorySelector";
                this.ShowIcon = false;
                this.ShowInTaskbar = false;
                this.ResumeLayout(false);
     
            }
     
            #endregion
     
            private System.Windows.Forms.TreeView treeView1;
            private System.Windows.Forms.Button button1;
            private System.Windows.Forms.Button button2;
        }
    code de la classe :
    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
        public partial class FileDirectorySelector : Form
        {
            protected List<FileSystemInfo> SelectedObjects { get; set; }
     
            private FileDirectorySelector()
            {
                InitializeComponent();
                SelectedObjects = new List<FileSystemInfo>();
            }
     
            public static IEnumerable<FileSystemInfo> Afficher(IWin32Window owner, string pText)
            {
                using (FileDirectorySelector fds = new FileDirectorySelector())
                {
                    fds.Text = pText;
                    DialogResult result;
                    if (owner == null)
                        result = fds.ShowDialog();
                    else
                        result = fds.ShowDialog(owner);
                    if (result == DialogResult.OK)
                    {
                        return fds.SelectedObjects;
                    }
                }
                return null;
            }
     
     
            protected override void OnLoad(EventArgs e)
            {
                base.OnLoad(e);
     
                var root = treeView1.Nodes.Add(Environment.MachineName);
                root.Nodes.AddRange((from drive in DriveInfo.GetDrives()
                                     where drive.IsReady
                                     select new TreeNode(drive.RootDirectory.Name) { Tag = drive.RootDirectory/*, ImageKey = "ImageLecteur"*/}).ToArray());
                treeView1.BeforeExpand += new TreeViewCancelEventHandler(treeView1_BeforeExpand);
                treeView1.AfterCheck += new TreeViewEventHandler(treeView1_AfterCheck);
     
            }
     
            void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
            {
                if (e.Node.Checked)
                {
                    if (e.Node.Tag != null)
                        SelectedObjects.Add((FileSystemInfo)e.Node.Tag);
                }
                else
                {
                    if (e.Node.Tag != null)
                        SelectedObjects.Remove((FileSystemInfo)e.Node.Tag);
                }
            }
     
            void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
            {
                DirectoryInfo di;
     
                foreach (TreeNode item in e.Node.Nodes)
                {
                    if (item.Tag is DirectoryInfo)
                    {
                        try
                        {
     
                            di = (DirectoryInfo)item.Tag;
                            item.Nodes.Clear();
                            item.Nodes.AddRange((from repertoire in di.EnumerateDirectories()
                                                 select new TreeNode(repertoire.Name) { Tag = repertoire/*, ImageKey = "ImageRepertoire"*/}).ToArray());
                            item.Nodes.AddRange((from fichier in di.EnumerateFiles()
                                                 select new TreeNode(fichier.Name) { Tag = fichier/*, ImageKey = "ImageFichier"*/}).ToArray());
                        }
                        catch
                        {
                            //Si une exception se produit, on ne traite pas l'erreur
                        }
                    }
                }
     
            }
     
     
            private void button2_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
        }
    et à l'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
               IEnumerable<FileSystemInfo> fichiersEtDossiersSelectionnes =  FileDirectorySelector.Afficher(this, "coucou");
    Bon courage...

    PS : Nous n'avons pas toujours le temps pour répondre rapidement à tes questions, sois un peu compréhensif
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Désolé pour mon impatience. Je stresse un peu car c'est une partie de mon projet pour mon BTS

    Sinon, pourrais tu me guider dans le code que tu m'as donné ? Car j'ai des erreurs ('InitializeComponent' et 'treeView1' n'existe pas dans le contexte actuel) et je ne vois pas d'où cela peut venir.

    Peut-on voir un soir, sur un logiciel de discussion instantané, pour avoir des conseils sur mon projet. J'ai tellement de questions... Même si c'est 10 minutes.

    Merci d'avance

  10. #10
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonsoir,

    Citation Envoyé par diabolokev Voir le message
    Sinon, pourrais tu me guider dans le code que tu m'as donné ? Car j'ai des erreurs ('InitializeComponent' et 'treeView1' n'existe pas dans le contexte actuel) et je ne vois pas d'où cela peut venir.
    Je t'ai fourni le code du InitializeComponent et l'instanciation de treeView1. C'est souvent fortement déconseillé, mais là tu peux coller le code de la première partie de code dans ton XXX.Designer.cs et l'autre partie c'est l'implémentation.
    Ils sont joints à ce message

    Citation Envoyé par diabolokev Voir le message
    Peut-on voir un soir, sur un logiciel de discussion instantané, pour avoir des conseils sur mon projet. J'ai tellement de questions... Même si c'est 10 minutes.
    Ce n'est pas vraiment la philosophie du forum. Dis-toi que plus tard, d'autres personnes aurons le même besoin que toi et ils seront peut-être dans ton cas, c'est à dire ne pas comprendre tout le code, si nous en parlons en dehors du forum, je passerai du temps à t'expliquer le code, tu comprendras certainement, mais cela ne servira qu'à toi
    Fichiers attachés Fichiers attachés
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,

    Tout d'abord merci beaucoup pour ce magnifique code.

    En effet c'est ce que j'attendais.

    Mais j'ai tout de même quelques questions pour mieux comprendre :

    Peux-tu m'expliquer l'évènement treeView1_AfterSelect que tu as ajouté ?

    Pour l'évènement treeView1_BeforeExpand, je comprends ça :
    "Avant de charger l'arborescence, pour chaque noeud, si c'est un dossier, alors..." et là je bloque...

  12. #12
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonsoir,

    Citation Envoyé par diabolokev Voir le message
    Peux-tu m'expliquer l'évènement treeView1_AfterSelect que tu as ajouté ?
    tu parles de l'évènement AfterCheck... Il permet d'ajouter ou supprimer un fichier ou un dossier de la liste des éléments sélectionnés. Dans les arguments de l'évènement tu as la référence du noeud que tu viens de checker/unchecker, si tu le check, il faut ajouter le fichier/dossier à la liste des éléments selectionnés, et à l'inverse le supprimer de la liste.

    Citation Envoyé par diabolokev Voir le message
    Pour l'évènement treeView1_BeforeExpand, je comprends ça :
    "Avant de charger l'arborescence, pour chaque noeud, si c'est un dossier, alors..." et là je bloque...
    Si c'est un dossier, tu charges tous les dossiers et fichiers contenu dans ce dossier et tu ajoutes tout ça à ses enfants.

    Sinon, je te conseille de passer en debug pour comprendre le code
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  13. #13
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par sisqo60 Voir le message
    tu parles de l'évènement AfterCheck... Il permet d'ajouter ou supprimer un fichier ou un dossier de la liste des éléments sélectionnés. Dans les arguments de l'évènement tu as la référence du noeud que tu viens de checker/unchecker, si tu le check, il faut ajouter le fichier/dossier à la liste des éléments selectionnés, et à l'inverse le supprimer de la liste.
    Oui, le AfterCheck, je l'avais compris. Mais regarde dans ton OnLoad, la dernière ligne. C'est peut-être une erreur non-voulue de ta part ?

    Merci pour BeforeExpand

    Je regarde pour continuer mon projet et je reviens vers toi pour les nouvelles.

  14. #14
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Citation Envoyé par diabolokev Voir le message
    Mais regarde dans ton OnLoad, la dernière ligne. C'est peut-être une erreur non-voulue de ta part ?
    Dans ce code, je n'ai pas l'impression qu'il y ait d'erreur non voulue de ma part... Précise un peu ton interrogation.
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  15. #15
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Oups...

    Après avoir relu ton code et ce que j'ai adapté, c'est moi qui avait fait un mauvaise manipulation.

    J'ai du cliquer sur l'évènement AfterSelect...

    Edit :

    J'ai remarqué un petit problème avec le AfterCheck.

    Normalement, dans la logique des choses, le AfterCheck ne fonctionne pas si l'évènement n'est pas défini dans le composant.

    Ce que j'ai fait, j'ai ajouté tout mes évènements dans le composant.
    Et en faite, quand je lance l'application, je coche la case, il applique deux fois la procédure évènementielle.
    J'ai donc enlevé cette procédure du composant et il passe automatiquement par la procédure et une seule fois.
    Ceci ne fonctionne que pour AfterCheck.
    Par exemple pour le AfterSelect, il ne fera rien du tout si l'évènement n'est pas dans le composant.

    Y a-t-il une explication ?

  16. #16
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Bonsoir,

    Que tu le fasses par le composant ou le code, il faut le faire. Dans mon exemple, je l'ai fait dans le OnLoad, mais si tu passes par le Designer pour ajouter un autre abonnement, c'est normal qu'il y passe 2 fois.

    Pour le afterselect, il faut que tu montres du code, on peut pas deviner...
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  17. #17
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Ah oui en effet, j'ai pas pensé à regarder dans le code du OnLoad().
    Merci

    Sinon pour le AfterSelect, c'était juste un exemple. Du coup je viens de voir d'où ça vient.

    Question de rapidité, c'est quoi le mieux entre le mettre dans le code ou le composant ?

  18. #18
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Il faut que tu fasse la nuance entre dans le composant et dans le designer. Mais dans le designer, ça te permet d'éviter de t'y abonner 2 fois par exemple.

    Sinon aucune différence.
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

Discussions similaires

  1. sélectionner des fichiers et des dossiers
    Par bog333 dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 23/12/2008, 16h31
  2. gestion des fichiers et dossiers avec FTP
    Par ahmeds dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 12/10/2006, 13h09
  3. [VBA-E] Bouton parcourir pour sélectionner un fichier
    Par $p00ky dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/05/2006, 10h14
  4. Réponses: 4
    Dernier message: 25/11/2005, 11h25
  5. [Delphi 2005] Comment parcourir la liste des fichiers ?
    Par babyface dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2005, 11h01

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