BlueGEEK Journal

Accueil > Manip’s > Delphi > RTF > Fusionner 2 RichEdit (RichEdit Merge)

Delphi

Fusionner 2 RichEdit (RichEdit Merge)

dimanche 17 mars 2013, par bluegyn_spip

- S’il est facile de fusionner 2 Mémos, il est beaucoup plus difficile d’ajouter un texte enrichi à un autre, tout en conservant tous les enrichissements de l’un et de l’autre (Car le balisage RTF est d’une imbrication imbitable par le mortel lambda)

- L’exemple pratique est d’insérer une Entête enrichie dans un courrier


- La méthode simple consiste à utiliser le presse papier, en copiant le texte de l’entête, puis en le collant à l’endroit voulu dans le courrier.

COPIER

ENTETE =>
LoadFromFile
SetSocus
selectAll
CopyToClipBoard

COLLER

COURRIER =>
SetFocus
SelStart := ...
PasteFromClipBoard

- La procédure est simple, mais l’exécution assez lourde car elle est visuelle.

- L’inconvénient majeur, est que l’entête et le courrier doivent être visibles simultanément, car la méthode SetFocus nécessaire au copie collé ne peut se faire que sur des composants textuels visibles.


- Une autre solution beaucoup plus élégante nous est donnée par Garlin Software Development Corp qui nous ouvre ses sources.

- Sous la forme d’un composant assez simple dérivé de la Classe TRichEdit et qui fait appel à la gestion des flux mémoire TMemoryStream.

- Qui consiste à rajouter au composant natif 2 fonctions :

  1. RichEdit.Append ( Fichier.RTF ) ; qui ajoute le contenu du fichier Enrichi au richedit.
  2. RicheEdit.Insert (Fichier.RTF ) ; qui insère le contenu du fichier RTF à l’endroit du curseur

- Son écriture est courte mais complexe.

- L’inconvénient est qu’il faut compiler ce composant, puisqu’on va l’utiliser à la place du RichEdit Nâtif.

- Je fournis en annexe le code modifié pour le composant TJvRichEdit de la JediLibrairie que je préfère car il gère l’inclusion d’image (dont je me sers pour inclure ma signature en JPG)

- Le code original est sur le site de l’auteur signalé par le lien joint, il dérive de l’ancêtre TRichEdit fourni avec Delphi


Ajouter le Composant GSRichEdit


1- Créer l’unité GSRichEdit.pas


- Cliquer sur Fermer Tout

  • Afin d’éliminer tout code parasite

- Fichier

  • Nouveau
    • Unité Delphi

      - Copier-Coller le code
  • de Unit GSRichEdit
  • à End.

- Enregistrer le Source Pascal dans le dossier des Source & Librairies

GSRichEdit.pas

2- Installer le COMPOSANT


- Penser à Fermer Tout !!!

- Cliquer sur COMPOSANT

  • Installer un composant
  • Installer dans un nouveau Package

- Nom de fichier

  • Localiser GSRichEdit.pas

- Suivant

  • Nom du Package = RTF

- Terminer


3- Un nouvel Onglet GARLIN apparait dans la liste de composants

- Il contient un GsRichEdit

  • Qui s’utilise comme un RichEdit, mais avec 2 fonctions supplémentaires
  1. Append
  2. Insert

- La fonction GsRichEdit.Append ( RTF ), ne pose aucun souci d’écriture car elle se contente d’ajouter le fichier RTF à la suite du texte affiché dans le GsRichedit

- La fonction GsRichEdit.Insert est plus délicate, car il faut placer le curseur à l’endroit de l’insertion

  • Soit manuellement (ce qui est simple)
  • Soit par programmation,
    • grâce à la fonction
GsRichEdit.SelStart
    • Associée au besoin à la fonction de recherche
SelStart := GsRichEdit.FindText(cherche, debut, fin, []) ;

NB :
- Il faut bien sur penser à bien mettre le fichier Compilé dans le chemin de recherche des bibliothèques de Delphi


Voir en ligne : https://groups.google.com/forum/?fr...