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

Windows Forms Discussion :

1 DataGridView pour plusieurs données


Sujet :

Windows Forms

  1. #1
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut 1 DataGridView pour plusieurs données
    Bonjour à vous.
    J'ai 2 combobox qui me détermine un datagrid view particulier à afficher.

    - La 2° combo (de 4 choix) me définit le type de datagridview, j'ai pour cela 4 datagridview que je rend visible ou non en fonction du type choisit.

    - Alors que le 1° combobox me définit une autre information.
    Pour chaque information j'ai les 4 choix de ma 2° combo.
    Le problème est que l'utilisateur peut passer d'1 information à l'autre et d'un type à l'autre, et je dois avoir la capacité de tout conserver.
    Il selectionne à la fin 1 seul couple info/type que je sauvegarde, mais entre temps il a pu en modifier plusieur pour essayer.

    Mon problème est alors de conserver les données qui sont différentes pour chaque couple information/type.

    J'aimerais alors, pour chaqu'un de mes 4 DataGridView sauvegarder 10 sources de données que j'aurais récupérées simplement à partir des données lues sur le DataGridView que l'utilisateur aura modifié.

    Pour le moment l'utilisateur passe d'un type à l'autre les modifient et fonction du type selectionné j'affiche tel ou tel DataGridView.

    J'espère avoir été assez clair dans mes explications.
    Merci à vous pour votre aide.

  2. #2
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Utilise des DataTable et bind toi dessus.

  3. #3
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Merci pour l'idée, je suis en train d'essayer ce la mias pour le moent j'ai des problèmes avec les colonnes. Entre la définition de ces colonnes pour mon datagridView directeemnt, ou uniquement pour mes DataTables.
    De plus j'ai quelques problème sur les mise à jour de sliaisons et de l'affichage.
    Je cherche

  4. #4
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    C'est quoi les problèmes que tu rencontres ?

  5. #5
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    J'ai créé des colonnes directement à mes 4 datagridViews (DGV).
    J'ai également créé 4 BindingSources (BS) et les ai associé aux DGV de la manière suivante :
    Ensuite j'ai créé 4 listes de DataTables (DT).
    A la première arrivé sur le form, je regarde quel type de calcul est ce que je dois afficher, je crée une DataTable en fonction et j'en remplis ma liste de DataTable.
    Ensuite je donne cette DataTable en DataSource à ma BS.

    Ensuite lorsque l'utilisateur change de type ou de mode, je vérifie si j'ai déjà sauvegardé une DataTable, au quel cas je la donne en dataSource à un de mes BindingSource; sinon je crée une nouvelle DataTable.

    Jusque là je pense que c'est bon, amis je ne suis pas sûr que mon utilisation des BindingSources soit très correcte ???

    Ensuite mon problème est que pour créer ma DataTable à partir de mes objets, j'ai besoin de connaitre le nom des colonnes que je dois remplir. Je passe donc mon DataGidView à une méthode qui pour chaque colonne (moins la première car spéciale) va créer une nouvelle colonne dans une DataTable, puis va devoir supprimer les colonnes (moins la première toujours) de mon DataGridView, remplir la DataTable à partir de mes Objets et ensuite renvoyer cette DataTable qui sera associée au DataSource du BindingSource correspondant.

    Le problème est que cette méthode ne parait pas clean du tout....

    Merci à toi pour ton aide si mes explications sont compréhensibles.

  6. #6
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Jusque là je pense que c'est bon, amis je ne suis pas sûr que mon utilisation des BindingSources soit très correcte ???

    Oui c'est bon.

    Ensuite mon problème est que pour créer ma DataTable à partir de mes objets, j'ai besoin de connaitre le nom des colonnes que je dois remplir. Je passe donc mon DataGidView à une méthode qui pour chaque colonne (moins la première car spéciale) va créer une nouvelle colonne dans une DataTable, puis va devoir supprimer les colonnes (moins la première toujours) de mon DataGridView, remplir la DataTable à partir de mes Objets et ensuite renvoyer cette DataTable qui sera associée au DataSource du BindingSource correspondant.

    C'est inutile de supprimer les colonnes de ta DGV avec le binding, il va s'adapter tout seul, sauf erreur de ma part. De plus, je ne comprends pas pourquoi tu veux supprimer les colonnes de ta table alors que tu la sauvegardes (principe de cache). Enfin, pour générer les colonnes de ta table, je te conseille de passer par le réflexion avec des attributs sur les propriétés de tes objets qui doivent être présentes dans la table.

  7. #7
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Tout d'abord, merci pourton soutien !!

    Citation Envoyé par Matthieu MEZIL
    Jusque là je pense que c'est bon, amis je ne suis pas sûr que mon utilisation des BindingSources soit très correcte ???

    Oui c'est bon.
    Ca fait du bien de savoir que je ne fais aps que des trucs tordu


    C'est inutile de supprimer les colonnes de ta DGV avec le binding, il va s'adapter tout seul, sauf erreur de ma part.
    J'ai essayé de ne pas supprimer les colonnes de mon DataGtidView et malheureusement il n'arive pas à s'y faire
    Voici la méthode que j'utilise pour créer cette DataTable qui va servir de DataSource à ma BindingSource déjà lié à mon DataGridView


    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
    //dgvClasse contenant les colonnes appropriées
    public DataTable FillDgvClasse(DataGridView dgvClasse)
    {
        DataTable dtClasse = new DataTable();
     
        clLigne[] tuples = new clLigne[this.lpListeLigne.Count];
        this.lpListeLigne.CopyTo(tuples, 0);
     
        int iNbrCol = dgvClasse.Columns.Count;
        for (int i = 1; i < iNbrCol; i++)
        {
            dtClasse.Columns.Add(dgvClasse.Columns[i].HeaderText);
        }
        for (int i = 1; i < iNbrCol; i++)
        {
            dgvClasse.Columns.RemoveAt(1);
        }
        for (int i = 0; i < lpListeLigne.Count; i++)
        {
            DataRow ligne = dtClasse.NewRow();
            Object[] ItemLigne = {tuples[i].dpDebut, tuples[i].dpFin, tuples[i].dpMontantTranche };
            ligne.ItemArray = ItemLigne;
            dtClasse.Rows.Add(ligne);
        }
        return dtClasse;
    }
    Là par contre c'est beaucoup moins propre...
    Je vais le rendre (plus) générique


    De plus, je ne comprends pas pourquoi tu veux supprimer les colonnes de ta table alors que tu la sauvegardes (principe de cache).
    Euh... là je n'ai pas tout compris


    Enfin, pour générer les colonnes de ta table, je te conseille de passer par le réflexion avec des attributs sur les propriétés de tes objets qui doivent être présentes dans la table.
    Ici non plus d'ailleurs
    Merci encore à toi

  8. #8
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Voici la méthode légerement améliorée, elle focntionne pour toute mes classes
    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
     
    public DataTable FillDgv(DataGridView dgv, int iTypeCalcul)
    {
        DataTable dtTable = new DataTable();
     
        clLigne[] tuples = new clLigne[this.lpListeLigne.Count];
        this.lpListeLigne.CopyTo(tuples, 0);
     
        int iNbrCol = dgv.Columns.Count;
        for (int i = 1; i < iNbrCol; i++)
        {
            dtTable.Columns.Add(dgv.Columns[i].HeaderText);
        }
        for (int i = 1; i < iNbrCol; i++)
        {
            dgv.Columns.RemoveAt(1);
        }
     
        for (int i = 0; i < lpListeLigne.Count; i++)
        {
            List<object> ligne = new List<object>(5);
            if (tuples[i].dpDebut != "")
                ligne.Add(tuples[i].dpDebut);
     
            if (tuples[i].dpFin != "")
                ligne.Add(tuples[i].dpFin);
     
            if (tuples[i].dpTauxLigne != "")
                ligne.Add(tuples[i].dpTauxLigne);
     
            if (tuples[i].dpMontantTranche != "")
                ligne.Add(tuples[i].dpMontantTranche);
     
            if (tuples[i].dpMontantCumule != "")
                ligne.Add(tuples[i].dpMontantCumule);
     
            dtTable.Rows.Add(ligne.ToArray());
        }
        return dtTable;
    }

  9. #9
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Dans ton code, je ne comprends pas à quoi te sert le la variable iTypeCalcul. En fait, je pense surtout que ton exemple de code est incomplet. Je me proposais de te réécrire ça en plus propre mais il me faudrait avoir plus de code que ça.

  10. #10
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Merci beaucoup de ta proposition.
    En fait la variable iTypeCalcul était utile dans une ancienne version de la méthode, depuis je n'en ai effectivement plus besoin.
    La méthode est ici complète, par contre, c'est peut être ce qu'il y a autour qui n'est pas complet.
    Je vais essayer d'en faire une petite description.

    En fait mes 2 information pour savoir quelle table affichée sont :
    12 types d'assiettes
    5 types de calculs.
    Pour chaque type d'assiette je peux avoir 5 types de calcul différents.
    En réalité, j'en utilise moins mais vu la construction de la base de donnée et pour faciliter les échanges, j'utilise comme index dans mes tableaux l'ID de chacun (type assiette ou type calcul) de la base de donnée.
    J'ai alors à disposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DataGridView[] ldgvListe = new DataGridView[6]; //Tableau des DataGridView
    BindingSource[] lbgSource = new BindingSource[6]; //Celui des BindingSources
    DataTable[,] lDataTable = new DataTable[6, 13]; //2 dimensions pour avoir 12 Datatables chacun des 5 types de calcul
    Ensuite voici la méthode qui va s'occuper de choisir quel DataGridView afficher (parmi les différents types) et comment l'afficher (celui de la base de données ou celui en mémoire modifié par l'utilisateur)
    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
     
    public void CreerLiaison()
    {
            /Il n y a en réalité que 4 types de tables
            ldgvListe[1].DataSource = lbgSource[1];
            ldgvListe[2].DataSource = lbgSource[2];
            ldgvListe[4].DataSource = lbgSource[4];
            ldgvListe[5].DataSource = lbgSource[5];
            bFirst = false;
    }
    public void ViewGird(clTypeBareme cTypeBareme, int iTypeAssietteSelect, int iTypeCalculSelect)
    {
        SetDgvVisible(false);
     
        //TAss et TCal actuels du barème
        iTypeAss = Convert.ToInt32(cTypeBareme.GetIdTas());
        iTypeCalcul = Convert.ToInt32(cTypeBareme.GetIdTcal());
     
        //Si une DataTable a été modifiée par l'utilisateur, l'afficher et quitter
        if (CheckDataTableExist(iTypeAssietteSelect, iTypeCalculSelect))
            return;
     
        clGestionCalcul cTypeCalculGenerique = (clGestionCalcul)cTypeBareme.cpModeCalcul.cpTypeCalcul;
     
        //On ne charge pas la table de la base, afficher une table vide
        if ((iTypeCalcul != iTypeCalculSelect) || (iTypeAssietteSelect != iTypeAss))
        {
            lbgSource[iTypeCalculSelect].DataSource = cTypeCalculGenerique.GetEmpyTable(ldgvListe[iTypeCalculSelect]);
            ldgvListe[iTypeCalculSelect].Visible = true;
        } 
        //Sinon charger la table de la base
        else
        {
            lDataTable[iTypeCalcul, iTypeAssietteSelect] = cTypeCalculGenerique.FillDgv(ldgvListe[iTypeCalcul]);
            lbgSource[iTypeCalcul].DataSource = lDataTable[iTypeCalcul, iTypeAssietteSelect];
            ldgvListe[iTypeCalcul].Visible = true;
        }
    }
    Ensuite les méthodes annexes
    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
     
    private bool CheckDataTableExist(int iTypeAssietteSelect, int iTypeCalculSelect)
    {
        if (lDataTable[iTypeCalculSelect, iTypeAssietteSelect] != null)
        {
            lbgSource[iTypeCalcul].DataSource = lDataTable[iTypeCalculSelect, iTypeAssietteSelect];
            ldgvListe[iTypeCalcul].Visible = true;
            return true;
        }
        return false;
    }
     
    public DataTable FillDgv(DataGridView dgv)
            {
                DataTable dtTable = new DataTable();
     
                //lpListeLigne est la ligne des lignes devant composée ma table. Je les ai déjà rempli en mémoire dans mes objets au préalable
                //en fonction du type d objet (type de calcul) les lignes seront diffrentes avec plus ou moins de colonnes
                clLigne[] tuples = new clLigne[this.lpListeLigne.Count];
                this.lpListeLigne.CopyTo(tuples, 0);
     
                int iNbrCol = dgv.Columns.Count;
                for (int i = 1; i < iNbrCol; i++)
                {
                    dtTable.Columns.Add(dgv.Columns[i].HeaderText);
                }
                for (int i = 1; i < iNbrCol; i++)
                {
                    dgv.Columns.RemoveAt(1);
                }
     
                for (int i = 0; i < lpListeLigne.Count; i++)
                {
                    List<object> ligne = new List<object>(5);
     
                    //certaines valeurs peuvent être vide, si c'est le cs c'est qu'elle ne doivent pas apparaitre dans la ligne
                    if (tuples[i].dpDebut != "")
                        ligne.Add(tuples[i].dpDebut);
     
                    if (tuples[i].dpFin != "")
                        ligne.Add(tuples[i].dpFin);
     
                    if (tuples[i].dpTauxLigne != "")
                        ligne.Add(tuples[i].dpTauxLigne);
     
                    if (tuples[i].dpMontantTranche != "")
                        ligne.Add(tuples[i].dpMontantTranche);
     
                    if (tuples[i].dpMontantCumule != "")
                        ligne.Add(tuples[i].dpMontantCumule);
     
                    dtTable.Rows.Add(ligne.ToArray());
                }
                return dtTable;
            }
            public DataTable GetEmpyTable(DataGridView dgv)
            {
                DataTable dtTable = new DataTable();
     
                int iNbrCol = dgv.Columns.Count;
                for (int i = 1; i < iNbrCol; i++)
                {
                    dtTable.Columns.Add(dgv.Columns[i].HeaderText);
                    //dtClasse.Columns[i - 1].Caption = dgvClasse.Columns[i].HeaderText;
                }
                for (int i = 1; i < iNbrCol; i++)
                {
                    dgv.Columns.RemoveAt(1);
                }
     
                return dtTable;
            }

    Voila, je pense avoir donné pas mal d'info sur le contexte, s'il manque quelque chose, n'hésites pas. Je suis tout ouïe
    Merci encore

  11. #11
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    Plusieurs choses ne vont pas. Je vais essayer de te réécrire ça mais en attendant quelques petites remarques :

    new DataTable[6, 13]; //le 2 dimensions pour avoir 12 Datatable pour les 5 types

    Pourquoi tu ne fais pas new DataTable[5, 12] ???


    Je pense que ta conception est très mauvaise (désolé de faire ce constat mais je te le dit franchement). En effet, pour tes 5 types, tu devrais utiliser le Design pattern decorator que tu appliquerais sur une instance d'une classe Assiette. C# est un langage objet. Je pense que tu dois encore progresser dans la conception objet. Je ne peux d'ailleurs que te conseiller sur les Design Pattern (le livre Design Pattern tête la première est très bien fait (même si les exemples sont en java)).


    De plus, je ne sais pas si tu te rends compte mais tu crée potentiellement 80 tables. Cela me parait beaucoup trop par rapport à ce que tu veux faire.



    Je vais essayer de regarder ton code ce week-end ou au pire lundi.

    Ne te décourage surtout pas ! la conception OO ça s'apprend et c'est en faisant des erreurs qu'on progresse. Bon courage ;-)

  12. #12
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Merci pour ta franchise, il n'y a aucun problème, je suis loin de me vexer, je sais bien que mon code n'est pas ce qu'il y a de plus propre, optimisé etc... C'est le risque d'apprendre le C# sur le tas après une eptite formation universitaire en C et des notions de java.

    Je vais regarder ce que sont ces design pattern decorator que je ne connais absolument pas.
    Pour la taille de mon DataTable[6, 13], c'est lié à mon utilisation (très maladroite ) de la bse que j'ai à disposition. Dans celle-ci, les Types d'assiettes ont des id de 1 (pas d'appel) à 12 avec au milieu un 11 ou je n'affiche aps de table. Idem pour le type de calcul, j'utilise les ID dans ma table qui vont de 1 à 5 (dans l'ordre : Calcul par Classe, Calcul par Tranches, Calcul avec taux fixe (pas de table à afficher), Calcul par classe variables, calcul par tranches variables). C'était donc pour désigner directement la Table ou BindingSource ou DataGridView d'indice : celui de la base.
    Si dans la base j'ai un indice 1 (par classe), j'affiche celui d'indice 1 dans mes tableaux, simplement. Mais je reconnais que je crée beaucoup de chose inutil, enfin presque, car la majorité des DataTable de mon DataTable[6,13] sont à null.

    Bref, beaucoup d'incertitude et de tattonage dans mon utilisation de cette programmation, amis je ne desespère pas et j'essaye de progresser, entre autre par ton aide. Merci

  13. #13
    Membre Expert

    Inscrit en
    Novembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2006
    Messages : 128
    Par défaut
    dsl, g vraiment pas eu le temps de reprendre ton code ce week-end. Je vais essayer aujourd'hui mais là encore je ne te promet rien. Quoi qu'il en soit, je ne te laisse pas tomber et si tu as des questions d'iic là, n'hésite pas.

  14. #14
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Aucun problème pour ce we, je ne suis aps en position de réclamer quoique ce soit.
    Merci beaucoup de ton aide en tout cas, je commence à me renseigner sur les infos que tu m'a données.

  15. #15
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Je commence à trouver pas mal d'explications sur les design pattern en général, et les decorator en particulier. Ca semble très interessant, mais je ne ma l'applique pas encore, ça viendra

    (UP déguisé, mais rien ne presse, je tiens au courant de mes découvertes )

Discussions similaires

  1. [AC-2000] Erreur : Aucune des valeurs données pour plusieur des paramètres requis
    Par mcfly37 dans le forum VBA Access
    Réponses: 10
    Dernier message: 21/04/2009, 15h11
  2. Réponses: 5
    Dernier message: 12/06/2008, 23h49
  3. Affichage des mêmes données pour plusieurs membres :O
    Par Whinging dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/04/2008, 23h29
  4. Réponses: 3
    Dernier message: 17/03/2008, 11h15
  5. Réponses: 2
    Dernier message: 21/10/2006, 18h27

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