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 :

[D2010] Comment copier le texte formaté d'un TRichEdit dans un autre ?


Sujet :

Composants VCL Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut [D2010] Comment copier le texte formaté d'un TRichEdit dans un autre ?
    Comment copier le texte formaté d'un TRichEdit dans un autre ?

    J'ai essayé de plein de façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          FormProcedureStockee.RichEdit.Lines.Text := RichEdit.Lines.Text;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          RichEdit.PlainText := True;
          RichEdit.Lines.SaveToFile(GetRepertoireTemp + 'Temp.rtf');
          FormProcedureStockee.RichEdit.PlainText := True;
          FormProcedureStockee.RichEdit.Lines.LoadFromFile(GetRepertoireTemp + 'Temp.rtf');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          RichEdit.SelectAll;
          RichEdit.CopyToClipboard;
          FormProcedureStockee.RichEdit.Lines.Clear;
          FormProcedureStockee.RichEdit.PasteFromClipboard;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
          Flux := TMemoryStream.Create;
          try
             RichEdit.Lines.SaveToStream(Flux);
             FormProcedureStockee.RichEdit.Lines.LoadFromStream(Flux);
          finally
             Flux.Free;
          end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          Flux := TStringStream.Create;
          try
             RichEdit.Lines.SaveToStream(Flux);
             FormProcedureStockee.RichEdit.PlainText := True;
             FormProcedureStockee.RichEdit.Text := Flux.DataString;
             FormProcedureStockee.RichEdit.PlainText := False;
          finally
             Flux.Free;
          end;
    J'ai essayé les codes ci-dessus en activant ou désactivant PlainText sans succès.
    Soit le RichEdit destination est vide, soit le texte n'est pas formaté, soit je vois le texte du formatage (les balises).

    Comment faut faire ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Cela fonctionne sous mon XE2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button2Click(Sender: TObject);
     var
        ms: TMemoryStream;
     begin
        ms := TMemoryStream.Create;
        try
         RichEdit1.Lines.SaveToStream(ms) ;
         ms.Seek(0, soFromBeginning) ;
         RichEdit2.Lines.LoadFromStream(ms) ;
        finally
         ms.Free;
        end;
     end;

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Ca marche !

    Ce de TMemoryStream ne revient pas tout seul au début.


    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Archi
    Inscrit en
    Décembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Archi
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2011
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par retwas Voir le message
    Cela fonctionne sous mon XE2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button2Click(Sender: TObject);
     var
        ms: TMemoryStream;
     begin
        ms := TMemoryStream.Create;
        try
         RichEdit1.Lines.SaveToStream(ms) ;
         ms.Seek(0, soFromBeginning) ;
         RichEdit2.Lines.LoadFromStream(ms) ;
        finally
         ms.Free;
        end;
     end;

    Bonjour,
    Entre 2 richedit, cela fonctionne effectivement nickel.
    Par contre, entre un DBrichedit vers un richedit, le texte est bien copié, mais le formatage perdu

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/09/2010, 22h18
  2. Réponses: 8
    Dernier message: 30/03/2009, 12h45
  3. comment copier le texte dans des champs
    Par pierrot67 dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/12/2006, 10h05
  4. comment mettre du texte formaté dans une frame?
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/10/2005, 14h55

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