Précédent   Forum du club des développeurs et IT Pro > Dotnet > Langages > C#
C# Forum d'entraide sur la programmation C#. Avant de poster -> FAQ C#, Articles C#, Sources C#
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/12/2012, 22h21   #1
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
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
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 22h59   #2
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
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 : 731
Points : 1 150
Points : 1 150
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
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 13h20   #3
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
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é...
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 17h13   #4
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
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 : 731
Points : 1 150
Points : 1 150
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
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 14h47   #5
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
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 :
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);
            }
        }
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 10h29   #6
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

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

Code :
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
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 22h20   #7
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
Up ?

Quelqu'un pour m'aider ?
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/01/2013, 22h42   #8
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
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 : 731
Points : 1 150
Points : 1 150
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 :
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 :
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 :
           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
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 19h43   #9
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
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
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 22h20   #10
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
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 : 731
Points : 1 150
Points : 1 150
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
Type de fichier : cs FileDirectorySelector.cs (3,5 Ko, 7 affichages)
Type de fichier : cs FileDirectorySelector.Designer.cs (4,1 Ko, 6 affichages)
__________________
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
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/01/2013, 20h56   #11
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
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...
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 23h03   #12
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
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 : 731
Points : 1 150
Points : 1 150
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
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 00h37   #13
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
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.
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 12h37   #14
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
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 : 731
Points : 1 150
Points : 1 150
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
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 16h57   #15
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
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 ?
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 19h49   #16
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
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 : 731
Points : 1 150
Points : 1 150
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
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 20h35   #17
diabolokev
Invité de passage
 
Homme Kévin
Développeur informatique
Inscription : décembre 2012
Messages : 13
Détails du profil
Informations personnelles :
Nom : Homme Kévin
Localisation : France, Eure (Haute Normandie)

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

Informations forums :
Inscription : décembre 2012
Messages : 13
Points : 0
Points : 0
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 ?
diabolokev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2013, 20h51   #18
sisqo60
Membre Expert
 
Avatar de sisqo60
 
Homme
Consultant informatique
Inscription : février 2006
Messages : 731
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 : 731
Points : 1 150
Points : 1 150
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
sisqo60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h08.


 
 
 
 
Partenaires

Hébergement Web