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++Builder Discussion :

RichEdit Identique sur plusieur form


Sujet :

C++Builder

  1. #1
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut RichEdit Identique sur plusieur form
    Bonjours, dans le cadre d'un proget jai sur une form principale un richEdit qui affiche des message en fonction de l'etat de certaine variable (lue dans un automate)

    Et bien sur je n'ai pas qu'une seul form , jen ai une quinzaine
    Je souhaiterais qu'il y ai le rich edit sur chaque form (il affiche axactement la meme chose).
    Y a til un moyen de le faire sans devoir tapé le meme code pour chaque richedit ?

    pour info je géree les couleur ausi dans le richedit

    Cordialement Baxter

  2. #2
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    jai eseyé sa
    dans un thread ki "mouline" en permanence dans une while infini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while(1)
    {
      if(Form6->Visible==true)
      {
        Form1->RichEditMess->SelectAll();
        Form1->RichEditMess->CopyToClipboard();
        Form6->RichEditMess->Clear();
        Form6->RichEditMess->PasteFromClipboard();
      }
      Sleep(750);
    }
    Bien Entendu ce thread ne fais pas que sa, il actualise l'affichage de pas mal de label en utilisant ce qui est lu dans l'automate
    mais bon je sais pas si c le mieux

  3. #3
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Ça me paraît compliqué pour rien. Le mieux me paraît être de créer un tableau de pointeurs vers vos RichEdit (si ce n'est déjà fait) et de modifier les RichEdit au moment du OnChange du RichEdit principal. Donc par exemple, pour trois pointeurs, vous déclarez un tableau dans la classe principale :

    Vous renseignez les adresses au moment où c'est possible (au moment où les RichEdit sont déjà créés), par exemple, si vos formes se construisent au début, au moment du OnShow de la forme principale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TabRE[0]=Form2->RichEdit1;
    TabRE[1]=Form3->RichEdit1;
    TabRE[2]=Form4->RichEdit1;
    Sauf si cette table existe déjà, ce qui serait le mieux quand on traite un grand nombre de formes. Dans ces conditions, au moment du OnChange du RichEdit de la forme prinicipale, vous mettez à jour tous les RichEdit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::RichEdit1Change(TObject *Sender)
    {
    for(int i=0;i<3;i++) TabRE[i]->Text=RichEdit1->Text;
    }
    À bientôt
    Gilles

  4. #4
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    ta méthode est bien
    et elle fonctionne
    mais sa ne garde pas les couleur

  5. #5
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    comme sa sa fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall TForm1::RichEditMessChange(TObject *Sender)
    {
            for(int i=0;i<2;i++)
            {
                    RichEditMess->CopyToClipboard();
                    TabRE[i]->Clear();
                    TabRE[i]->PasteFromClipboard();
            }
    }
    mais bon, c'est bien ?

  6. #6
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    ah non, sa ne marche pas, sa m'en copie que une

    si je fais un select all avant jai une erreur qui est généré quand je ve inséré une ligne avec mon thread qui rafraichie le RichEdit pricipale

  7. #7
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    C'est pénible de devoir passer par le ClipBoard mais je ne vois pas d'autres solutions.

    Si quelqu'un sait comment copier les couleurs aussi d'un RichEdit à un autre, il sera lu avec plaisir.

    Sinon, procédez ainsi, ça marche :

    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
    void __fastcall TForm1::RichEdit1Change(TObject *Sender)
    {
    int Sta,Len;
     
    Sta=RichEdit1->SelStart;
    Len=RichEdit1->SelLength;
    RichEdit1->SelectAll();
    RichEdit1->CopyToClipboard();
    for(int i=0;i<3;i++)
       {
       TabRE[i]->Clear();
       TabRE[i]->PasteFromClipboard();
       }
    RichEdit1->SelStart=Sta;
    RichEdit1->SelLength=Len;
    }
    Il faut mémoriser la sélection et la longueur en cours et la restituer après pour ne pas perturber le comportement du RichEdit qui a subi un SelectAll dans l'opération.

    À bientôt
    Gilles

  8. #8
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    effectivement sa fonctionne très bien

    merci beaucoup

    Baxter

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

Discussions similaires

  1. Bouton identique sur plusieurs feuilles
    Par jeanmanu dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 08/07/2008, 22h11
  2. Réponses: 2
    Dernier message: 03/06/2008, 08h50
  3. Variables partagées sur plusieurs Forms
    Par BMT_Benoît dans le forum Windows Forms
    Réponses: 6
    Dernier message: 30/08/2007, 19h16
  4. [VBA-E] Données identiques sur plusieurs feuilles
    Par pm2036 dans le forum Macros et VBA Excel
    Réponses: 42
    Dernier message: 09/05/2007, 15h05
  5. maximize et restore sur plusieurs form et états
    Par GymTonic dans le forum IHM
    Réponses: 7
    Dernier message: 16/03/2006, 21h36

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