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

Langage Delphi Discussion :

Créer RTF dans TRichEdit


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Points : 197
    Points
    197
    Par défaut Créer RTF dans TRichEdit
    Bonjour,

    Sous Delphi 2007, j'arrivais a créer des RTF dans un TRichEdit via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    richedit.Lines.LoadFromFile('toto.rtf');
    et avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    richedit.SelText:= 'Mon code RTF ...'
    Depuis passé sous Delphi XE, la 2ème façon de faire ne fonctionne plus, le code RTF n'est plus interprété par le composant, il le prend comme du texte "normal".

    Savez-vous comment faire maintenant ?

    Merci.

  2. #2
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Bizarre que ca ne fonctionne plus sous Delphi XE. J'imagine que tu as déjà joué avec la propriété PlainText ...

    Essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var SS : TStringStream;
    begin
      SS:=TStringStream.Create('Ton Texte RTF');
      RichEdit1.Lines.LoadFromStream(SS);
      SS.Free;
    end;
    Bonne chance

  3. #3
    Membre habitué Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Points : 197
    Points
    197
    Par défaut
    En fait ce que je souhaite c'est charger un fichier RTF dedans puis d'insérer ensuite ma ligne.

    Donc je fais LoadFromFile pour commencer. Mais ensuite si je fais LoadFromStream ça va supprimer mon 1er chargement ?

  4. #4
    Membre habitué Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Points : 197
    Points
    197
    Par défaut
    Ou alors est ce que je peux créer un flux avec mon fichier, puis le concaténer avec celui de ma chaine et de charger le cumul des 2 flux dans le composant ?

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    tu ne peux pas concaténer un Texte après la balise de fin du {rtf}
    C'est un format structuré, ce qui est à la fin est au mieux ignoré au pire provoque un comportement erratique !
    La solution pure Stream ne pourra pas fonctionner

    Je suppose qu'actuellement, tu Charge ton fichier via un LoadFromFile puis tu positionne SelStart à la fin du Fichier, tu modifie SelText avec la nouvelle chaine, cela va insérer ton texte dans le RichEdit, tu utilise un SaveToFile, cela génère le nouveau fichier !?

    Voir aussi SelAtttibrutes !
    Si tu as n'as pas soucis dedans ?

    Attention à PlainText, perso, j'ai toujours du mal à le piger celui là !
    Si je me souviens, PlainText, il faut le mettre false (valeur par défaut) avant LoadFromFile(RTF) ainsi il va lire correctement le RTF

  6. #6
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par ac/dc Voir le message
    En fait ce que je souhaite c'est charger un fichier RTF dedans puis d'insérer ensuite ma ligne.

    Donc je fais LoadFromFile pour commencer. Mais ensuite si je fais LoadFromStream ça va supprimer mon 1er chargement ?
    Ah ok, je n'avais pas compris que tu voulais ajouter du texte formatté a ton RichEdit ... Dans ce cas la, jouer avec le texte et les balises RTF (c'est un peu galère)

    Sinon, une solution un peu moins élégante mais qui fonctionne :
    Tu utilises un deuxième richEdit dans lequel tu charges tes lignes, et tu fais un copier-coller ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
      RichEdit1.SelectAll;
      RichEdit1.CopyToClipboard;
      RichEdit2.SelStart:=MaxInt;
      RichEdit2.PasteFromClipboard;
    end;
    Bonne chance

  7. #7
    Membre habitué Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Points : 197
    Points
    197
    Par défaut
    Je reviens vers ce problème


    En fait ce qui ne fonctionne pas, c'est ce bout de code pour créer un tableau dans un RichEdit sous Delphi XE :

    http://delphi.developpez.com/faq/?pa...ffichertableau

    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichEdit10.SelText:=tableaurtf(2,2,200);
    Il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichEdit10.lines.LoadFromStream(TStringStream.Create(tableaurtf(2,2,200)));
    Mais avant je fais un LoadFromFile().

    Sous Delphi 2007, on arrivait à ajouter le tableau à la fin du document grâce à SelText, mais à priori cela ne fonctionne plus. Maintenant si j'utilise LoadFromStream, je vais remplacer le LoadFromFile précédent ...

  8. #8
    Membre habitué Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Points : 197
    Points
    197
    Par défaut
    J'étais passé un peu vite sur la réponse de mick605, mais elle fonctionne parfaitement...

    Il faut charger le tableau dans un RichEdit1.
    Le document dans un RichEdit2.

    Copier/Coller le tableau du 1 dans le 2, et ça roule !!

    Merci

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

Discussions similaires

  1. [DOM] Créer Element dans un document XML
    Par nivose110 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/06/2006, 09h18
  2. [Indy 10] Créer WhoIs dans une DLL
    Par xenos dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/04/2006, 23h51
  3. Créer lien dans un même page
    Par kudawoo2002 dans le forum ASP
    Réponses: 1
    Dernier message: 20/11/2005, 02h00
  4. [RAVE]Composant RTF dans une feuille RAVE ?
    Par hpalpha dans le forum Rave
    Réponses: 3
    Dernier message: 29/03/2004, 19h25

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