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

Composants VCL Delphi Discussion :

Tabsheet et memo : même nom et donc problème!!!!


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 68
    Points : 36
    Points
    36
    Par défaut Tabsheet et memo : même nom et donc problème!!!!
    Bonjour,

    J'ai un pagecontrol et un tabsheet créer j'en crée un autre avec un popup menu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.PVClick(Sender: TObject);
    var mpv : Ttabsheet;
    fe : Tmemo;
    begin
      mpv := TTabsheet.Create(self);
      mpv.Parent := Pagecontrol1;
      mpv.PageControl := pagecontrol1;
      mpv.Caption := Treeview1.Selected.Text;
      fe := Tmemo.Create(mpv);
      fe.Parent:=mpv;
      fe.align := alCLient;
    end;
    J'ai déjà vu le FAQ et tous les postes concernant sa
    (http://www.developpez.net/forums/viewtopic.php?t=394054)

    Mais le problème qui intervient quand je crée deux fois le tabsheet et le memo il me prend automatiquement le dernier.
    Pour être plus clair, je fais un chat et à l'aide de mon popup menu je clique sur PV et donc si j'ai plusieurs tabsheet en pv et il me prend seulement le dernier lorsque je fais fe.lines.add('texte'). COmment definir lequel memo on veut afficher les messages privées ?

    Merci d'avance de vos réponses.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 68
    Points : 36
    Points
    36
    Par défaut
    Personne ne voit de solution

  3. #3
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Il faut que tu nommes tes composants si tu veux pouvoir les réutiliser après. Utilise un compteur ou le pseudo du correspondant si c'est un tchat.

    Un truc du genre :
    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
     
    procedure TForm1.PVClick(Sender: TObject); 
    var mpv : Ttabsheet; 
    fe : Tmemo; 
    begin 
      mpv := TTabsheet.Create(self);
      mpv.Name := 'Onglet' + Pseudo; 
      mpv.Parent := Pagecontrol1; 
      mpv.PageControl := pagecontrol1; 
      mpv.Caption := Treeview1.Selected.Text; 
      fe := Tmemo.Create(mpv); 
      fe.Name := 'Memo' + Pseudo; 
      fe.Parent:=mpv; 
      fe.align := alCLient; 
    end;
    Comme ça, ensuite si tu veux ajouter du texte dans le bon Memo tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TMemo(FindComponent('Memo' + Pseudo)).Lines.Add('Texte');
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Bonne idée. Par contre, si le pseudo en question est "~--[Da R0x0r ps3ud0]--~", tu peux être sûr que ça plante...
    En général, dans ces cas-là, j'utilise une valeur qui ne sera jamais prise en défut: les handles...
    Exemple:
    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
     
    procedure TForm1.PVClick(Sender: TObject);
    var mpv : Ttabsheet;
    fe : Tmemo;
    begin
      mpv := TTabsheet.Create(self);
      mpv.Name := 'Onglet' + IntToStr(mpv.Hanle);
      mpv.Parent := Pagecontrol1;
      mpv.PageControl := pagecontrol1;
      mpv.Caption := Treeview1.Selected.Text;
      fe := Tmemo.Create(mpv);
      fe.Name := 'Memo' + IntToStr(fe.Handle);
      fe.Parent:=mpv;
      fe.align := alCLient;
    end;
    Comme ça t'es sûr que ça marche systématiquement
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 68
    Points : 36
    Points
    36
    Par défaut
    Merci pour ces reponses mais le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TMemo(FindComponent('Memo' + Pseudo)).Lines.Add('Texte');
    Ne marche pas pour rehcherche le memo ?

  6. #6
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Ah bon ?
    C'est quoi l'erreur qu'il te renvoie ?
    A moins qu'il ne trouve pas le Memo, à ce moment là, vérifie bien le nom de ton composant, parce que ça doit marcher :o
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  7. #7
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Guile
    Ah bon ?
    C'est quoi l'erreur qu'il te renvoie ?
    A moins qu'il ne trouve pas le Memo, à ce moment là, vérifie bien le nom de ton composant, parce que ça doit marcher :o
    +1
    Je confirme à une nuance près , le mémo se trouve dans le TabSheet, pas le Form1 :

    Solution, au lieu de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fe := Tmemo.Create(mpv);
    Il faut faire comme Delphi (mettre le Owner comme étant la fiche parente, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fe := Tmemo.Create(self);
    Et là, tout marche normalement
    Bidouilleuse Delphi

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Guile
    Ah bon ?
    C'est quoi l'erreur qu'il te renvoie ?
    A moins qu'il ne trouve pas le Memo, à ce moment là, vérifie bien le nom de ton composant, parce que ça doit marcher :o
    En fait, comme le Owner du Memo est le TabSheet mvp, et non la fiche Form1 (tel que c'était écrit dans son code et le tient), FindComponent renvoyait nil, et du coup ça coinçait avec TMemo(nil).
    Bidouilleuse Delphi

  9. #9
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Bien vu Waskol
    Il faudrait que je teste le code que j'écris sur ce site parfois mais l'idée était là
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 68
    Points : 36
    Points
    36
    Par défaut
    Merci les gars sa marche nikel

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/05/2011, 11h03
  2. Réponses: 1
    Dernier message: 30/08/2010, 12h15
  3. Réponses: 3
    Dernier message: 29/12/2008, 15h22
  4. [MySQL] Problème avec php/mysql, variables du même nom
    Par Naxosy dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/01/2008, 15h31
  5. Problème pour différencier plusieurs select avec le même nom
    Par vallica dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/04/2006, 11h35

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