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 :

Accès au formulaire ouvert depuis une classe


Sujet :

C#

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut Accès au formulaire ouvert depuis une classe
    [09/07/2007 - suppression des pièces jointes]

    Bonjour,

    (mon message est un peu long, je mets des titres)

    Généralités
    je suis actuellement en train de réaliser une application qui va schématiquement réaliser les opérations suivantes :
    1. l'utilisateur entre les clés primaires d'une table (BdD) ;
    2. l'application se connecte à la base et recupère tous les champs de la ligne correspondant à la clé ;
    3. ces données récupérées sont utilisées pour remplir les contrôles restant du formulaire (j'ai 25 contrôles "texte") ;
    4. l'utilisateur modifie certaines de ces valeurs et renvoie celles-ci pour générer automatiquement une requête (pas pour l'exécuter).
    Puisqu'il y a un certain nombre de requêtes SQL dans mon application (plus de 10), je les ai isolées dans une classe (on l'appellera clsAffaire).

    Problème
    Lorsqu'il n'y a pas besoin de retour, tout se passe bien, mais dans le cas détaillé ci-dessus, je ne vois pas comment modifier la propriété "Text" des contrôles de mon formulaire à partir de la classe.

    Si cela change quelque chose : ce n'est pas le formulaire principal de l'application.

    Pistes
    J'avais dans l'idée d'utiliser la propriété "public", mais je ne vois pas où définir mon formulaire pour pouvoir l'utiliser.
    Au clic sur le bouton, j'ai une erreur :Terme d'expression non valide 'public'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void mnuiAffaire_Click(object sender, System.EventArgs e)
    {
      public frmAffaire fAffaire = new frmAffaire();
         formAffaire.Show();
    }
    En désespoir de cause, j'avais même tenté de redéfinir le formulaire depuis la classe, mais comme prévu, ça en créé un nouveau... donc pas moyen de modifier les champs de l'actuel.

    Merci d'avance pour votre aide !

    Alban

    PS : l'utilisation d'un DataGrid ne correspond pas à ce que je veux faire.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    J'ai compris (je crois) la partie "généralités".
    Par contre je n'ai pas du tout compris ton problème
    Je n'ai pas compris ce que tu entends par "lorsqu'il n'y a pas besoin de retour"
    Je n'ai pas compris sur quel champ tu avais essayé d'appliquer le mot-clé public
    Je n'ai pas compris ce que tu entends par "redéfinir le formulaire depuis la classe" (quelle classe d'ailleurs ?)



    Tu as récupéré des données.
    Tu les affiches dans un formulaire.
    Au clic sur un bouton, tu veux afficher un deuxième formulaire. MAIS tu ne sais plus comment accéder à tes données pour les afficher.
    C'est bien ça ?

    Si c'est ça :
    => comment sont "stockées" tes données après récupération dans la base ?

    Hypothèse :
    J'*imagine* (mais vu les infos que tu donnes c'est difficile à savoir...) que tu récupères tes données dans un DataReader, que tu remplis les contrôles de ton formulaire principal, que tu fermes ton DataReader. Puis que tu ne sais pas comment ré-accéder aux données depuis un autre formulaire puique les contrôles sont private.
    Deux solutions :
    - construire dans le formulaire principal des propriétés publiques qui reflètent le contenu des contrôles
    - définir pour le 2ème formulaire un constructeur qui prend en argument les données que tu veux y afficher

    Si ça n'a rien à voir, essaie de mieux préciser ton problème

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Bon, je la refais en essayant d'être plus clair

    En fait :
    • j'ouvre un formulaire F depuis le formulaire principal (qui n'est pas fermé) ;
    • je ne m'occupe plus du principal, je ne considère plus QUE F ;
    • dans F, je rentre les champs 1, 2 et 3 par exemple (clé primaire de la table) ;
    • j'appuie sur un bouton, ça appelle la classe C qui contient une procédure qui exécute une requête (select) sur la base en fonction de ces trois champs.
    Jusqu'ici, ça va : c'est déjà fait.

    Ce que je cherche maintenant, c'est que les variables récupérées depuis la procédure de C soient "renvoyées" vers les textbox de F (champs 4 à 25).
    Je n'ai rien d'imposé pour faire ça... donc la meilleure méthode sera la plus simple


    Pendant que j'écris tout ça, j'ai une idée...
    Une procédure peut renvoyer plusieurs valeurs ? (return A, B, C, ... , Z; )
    Je vais regarder ça. Si oui, j'ai fini
    Schématiquement, je pense à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     format(?) XXX = clsMaClasse.Resulalrequete(par1,par2,par3);
    textbox4.text = XXX[1];
    textbox5.text = XXX[2];
    ...
    textbox25.text = XXX[21];
    Ca sera l'occasion de faire mon premier tableau en C#...
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Ce que je cherche maintenant, c'est que les variables récupérées depuis la procédure de C soient "renvoyées" vers les textbox de F (champs 4 à 25).
    Ouh lààà j'avions pas compris ça... Ma foi c'est pas bien compliqué.

    Exécuter la requête avec un objet Command et la méthode ExecuteReader().
    Récupérer le résultat de la requête dans un DataReader.
    Traiter le contenu du DataReader...

    Tutos sur les objets Command et DataReader , dans la partie ".NET et les bases de données".

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Ma foi c'est pas bien compliqué.
    Ouf

    Merci pour le lien, je regarde ça... mais j'ai l'impression que ce n'est pas ce que je cherche (je sens que je vais me faire taper dessus).

    La récupération des données depuis la base, c'est fait.
    Elles sont stockées dans des variables (string) définies dans ma classe.

    Maintenant, ce que je veux, c'est que ces variables contenues dans la classe soient affectées aux propriétés "text" des textbox du formulaire.

    C'est peut-être là que je n'ai pas été assez précis : ma classe n'est pas définie dans le formulaire. J'ai mon formulaire frmAffaire.cs et ma classe clsAffaire.cs, ce sont deux fichiers différents.

    Autant, modifié une propriété de l'objet que je viens de créer, je sais faire, autant modifier une propriété d'un objet qui a appelé ma procédure, je je sais pas faire.

    La méthode "de rêve", serait de pouvoir avoir un code de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FormulaireActif mon_formulaire = new FormulaireActif();
    mon_formulaire.textbox4.text = ma_variable;
    Le code ci-dessus étant contenu dans le fichier de classe et non dans le fichier de formulaire.

    En pièce jointe, j'ai mis un schéma des opérations que je veux faire.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Donc c'était bien un problème de communication avec la base de données ?
    Ce n'est pas du tout ce que m'évoquait le titre "Accès au formulaire ouvert depuis une classe"...

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    J'ai édité mon message... non, la BdD ne pose pas de problème...
    Les réponses se sont croisées
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Dans ce cas je répète ce que j'ai déjà dit

    Deux solutions :
    - construire dans le formulaire principal des propriétés publiques qui reflètent le contenu des contrôles
    - définir pour le 2ème formulaire un constructeur qui prend en argument les données que tu veux y afficher
    (ou, troisième solution, définir dans le formulaire une fonction qui prend en argument les données et remplit les contrôles...)


    Ce qui donne :
    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
     
    public class FrmAffaire : Form
    {
        public string Champ1
        {
          //get { return this.textBox1.Text; }
            set { this.textBox1 = value; }
        }
        ...
    }
     
    public class ClsAffaire
    {
        public void fonctionDeRemplissage()
        {
            ...
            FrmAffaire mon_formulaire = new FrmAffaire ();
            mon_formulaire.Champ1 = champ1;
            ...
            mon_formulaire.ShowDialog();
            ...
        }
    }
    ou
    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
     
    public class FrmAffaire : Form
    {
        public void remplirChamps(string champ1, ...)
        {
            this.textBox1 = champ1;
            ...
        }
    }
     
    public class ClsAffaire
    {
        public void fonctionDeRemplissage()
        {
            ...
            FrmAffaire mon_formulaire = new FrmAffaire ();
            mon_formulaire.RemplirChamps(champ1, ...);
            mon_formulaire.ShowDialog();
            ...
        }
    }
    ou
    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
     
    public class FrmAffaire : Form
    {
        public FrmAffaire(string champ1, ...)
            : this()
        {
            this.textBox1.Text = champ1;
            ...
        }
    }
     
    public class ClsAffaire
    {
        public void fonctionDeRemplissage()
        {
            ...
            FrmAffaire mon_formulaire = new FrmAffaire (string champ1, ...);
            mon_formulaire.ShowDialog();
            ...
        }
    }

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    J'ai peut-être raté un truc, mais si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FrmAffaire mon_formulaire = new FrmAffaire ();
    j'instancie un nouveau formulaire.

    En réalité, ce formulaire est déjà créé et ouvert, et je veux en modifier les contrôles. Ce que tu définis comme "mon_formulaire" est... le formulaire qui appelle la procédure contenue dans la classe clsAffaire.

    Tu sous-entends qu'il faut que je le ferme et que j'en créé un nouveau et que je lui modifie ses contrôles au moment de la création ?

    Je suis peut-être en train de raconter n'importe quoi... mais je n'arrive vraiment pas à voir en quoi ça marche...
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Je te propose différentes solutions, avec des exemples pour illustrer, mais évidemment il faut adapter !

    Si le formulaire est déjà créé et que tu veux le remplir plusieurs fois sans en changer, évidemment il ne faudra pas utiliser la méthode avec le constructeur surchargé.
    Mais les deux autres restent valables.

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Initialement (avant d'appeler la méthode contenue dans la classe), le formulaire est non seulement créé... mais surtout affiché.

    Tes méthodes me permettent bien de remplir les champs depuis la classe, mais uniquement si on affiche a nouveau le formulaire.
    Enfin... c'est comme ça que je le comprends.

    Je te mets en pièce jointe ce que j'ai fait pour le moment. J'ai l'impression qu'on ne se comprend pas pour ce qui est du fonctionnement de l'application (ce qui est compréhensible, puisque je l'ai sous les yeux... et pas toi).
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  12. #12
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut
    J'ai pa trop compri ce que tu ve faire .

    recupere les resultat de ta classe affaire et les binder au textbox de ton formulaire ??
    Tout simple et bien simple

  13. #13
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Je résume

    - Mon formulaire frmAffaire est créé et affiché
    - Dans frmAffaire, l'utilisateur rentre des données
    - frmAffaire appelle une classe qui contient une méthode pour récupérer d'autres infos
    - Cette classe N'est PAS dans le même fichier que frmAffaire (frmAffaire.cs != clsAffaire.cs)
    - Une fois que la méthode de clsAffaire a été lancée, je voudrais que les données récupérées apparaissent dans les textbox de frmAffaire (qui est resté ouvert entre temps)
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  14. #14
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut
    1-
    Ta classe renvoi quelle type de donneés ( Un tableau , un dataset , un datareader , .....)
    Tout simple et bien simple

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    - Cette classe N'est PAS dans le même fichier que frmAffaire (frmAffaire.cs != clsAffaire.cs)
    ça on s'en fout.


    Je t'ai indiqué deux façons, valables dans le contexte, d'accéder aux valeurs des contrôles de ton formulaire et de les modifier :
    - par propriété
    - par méthode

    Les as-tu seulement essayées ?

  16. #16
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Pour l'instant : rien.

    Je ferai en fonction des solutions trouvées...
    À la base, je suis censé récupérer un tableau (une ligne et 20 colonnes), donc la sortie sera sûrement un string[20] quand même.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  17. #17
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par Astartee
    Je t'ai indiqué deux façons, valables dans le contexte, d'accéder aux valeurs des contrôles de ton formulaire, et de les modifier :
    - par propriété
    - par méthode

    Les as-tu seulement essayées ?
    Oui.

    Mais je ne dois pas avoir le recul nécessaire pour les adapter : je ne sais que rouvrir un nouveau formulaire (comme ce que j'ai mis en pièce jointe d'un message précédent).

    Pour restreindre le problème : je n'arrive pas à atteindre le formulaire ouvert. Il est là... mais je ne sais pas où il est caché.
    Tout ce que j'arrive à faire, c'est en créer un nouveau :
    - si j'en définis un dans la classe, c'est un nouveau qui s'affiche ;
    - si je ne le définis pas, je ne le trouve nulle part.

    Il a été ouvert depuis le formulaire principal de l'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    public frmEnfants.frmAffaire formAffaire = new frmEnfants.frmAffaire();
    
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Pour restreindre le problème : je n'arrive pas à atteindre le formulaire ouvert. Il est là... mais je ne sais pas où il est caché.


    euh...
    tu peux l'atteindre avec son nom de variable, c'est-à-dire "formAffaire", non ?

    j'avoue que je ne comprends pas

  19. #19
    Membre habitué Avatar de mr.net
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 152
    Points : 150
    Points
    150
    Par défaut
    ta deja essaye ca
    puiske c'est un string de tableau qui sort

    Tonformat XXX[20]= clsMaClasse.Resulalrequete(par1,par2,par3);
    textbox4.text = XXX[1];
    textbox5.text = XXX[2];
    ...
    textbox25.text = XXX[21];
    je penserai a ca moi .
    Tout simple et bien simple

  20. #20
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Dans le formulaire principal, ça marche : je fais ce que je veux avec.

    Mais je n'arrive pas à étendre sa portée à la classe, malgré le "public" en début de ligne
    Où alors, je ne connais pas le chemin pour y accéder...
    J'ai essayé de fouiner dans des choses comme MonApplication.frmPrincipal.[??], System.Windows.Forms.[??], mais je ne trouve nulle part de formAffaire.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [JBoss Portal] Acces à la Session Portail depuis une classe Java
    Par thom44 dans le forum Portails
    Réponses: 0
    Dernier message: 02/10/2008, 16h09
  2. Accès au fichier ressources depuis une classe action
    Par root76 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/11/2006, 07h36
  3. [EJB2] Accès Interface locale depuis une classe métier.
    Par rigor dans le forum Java EE
    Réponses: 2
    Dernier message: 10/10/2006, 14h44
  4. acces a uneressource bitmap depuis une classe
    Par firejocker dans le forum MFC
    Réponses: 9
    Dernier message: 03/02/2006, 21h48
  5. Acces a un control depuis une autre classe
    Par schnito dans le forum MFC
    Réponses: 5
    Dernier message: 25/01/2004, 22h14

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