FAQ DelphiConsultez toutes les FAQ

Nombre d'auteurs : 119, nombre de questions : 909, dernière mise à jour : 22 décembre 2016  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).

Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.

L'équipe Delphi de Developpez.com.

Commentez


SommaireInterface utilisateurComposantsLe composant TRichEdit (4)
précédent sommaire suivant
 

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
function tableaurtf(nbcol,nbligne,largeur:integer):string; 
var i,j : integer; 
begin 
 result:='{\rtf1\trowd'; 
 for i:=1 to nbcol do result:=result+format('\cellx%d',[i*(2000+largeur)]); 
 for j:=1 to nbligne do 
 begin 
  result:=result+'\intbl'; 
  for i:=1 to nbcol do result:=result+'\cell'; 
  result:=result+'\row'; 
 end; 
 result:=result+'}'; 
end;
Et voici un exemple de code pour insérer dans mon RichEdit un tableau de largeur 200 ayant 2 lignes et 2 colonnes:
Code delphi : Sélectionner tout
RichEdit10.SelText:=tableaurtf(2,2,200);

Mis à jour le 21 janvier 2014 hpalpha

Le code suivant permet de se positionner sur une ligne/colonne précise d'un TMemo/TRichEdit.

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TForm1.Button1Click(Sender: TObject); 
var 
  itemp: Integer; 
begin 
  with RichEdit1 do 
  begin 
    // Aller à la dernière ligne 
    SelStart := Length(Text); 
    Perform(EM_SCROLLCARET, 0, 0); 
  
    // ou encore: Perform(WM_VSCROLL, SB_BOTTOM,0); 
  
    // Aller à la Première ligne 
    SelStart := Perform(EM_LINEINDEX, 0, 0); 
    Perform(EM_SCROLLCARET, 0, 0); 
  
    // Aller à la ligne 5, colonne 3 
    SelStart := Perform(EM_LINEINDEX, 5, 0) + 3; 
    Perform(EM_SCROLLCARET, 0, 0); 
  
    // Scroller d'une ligne vers le bas 
    with RichEdit1 do 
    begin 
      itemp := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0); 
      SelStart := Perform(EM_LINEINDEX, itemp + 1, 0); 
      Perform(EM_SCROLLCARET, 0, 0); 
    end; 
  
  end; 
end;

Mis à jour le 21 janvier 2014 octal

Le TRichEdit supporte contrairement au TMemo des opérations de mise en forme et de coloration. Nous pouvons attribuer une couleur soit à tout le texte du TRichEdit soit à une partie spécifique du texte comme nous le montrent les bouts de code suivant :

Code delphi : Sélectionner tout
RichEdit1.SelAttributes.Color:= TColor;
permet de changer la couleur utilisée pour écrire dans le TRichEdit, ainsi si on fait :
Code delphi : Sélectionner tout
RichEdit1.SelAttributes.Color:= clRed;
Le texte sera alors écrit en rouge à partir de cet instant.
Code delphi : Sélectionner tout
RichEdit1.DefAttributes.Color:= TColor;
permet de changer la couleur du texte du TRichEdit tout entier.
Ainsi si on passe clRed comme TColor tout le texte du TRichEdit deviendra rouge et tout ce que l'on va y écrire aussi.

Mis à jour le 21 janvier 2014 qazer

Voici une fonction qui permet :

  • soit d'afficher le contenu d'un TRichEdit dans un TCanvas (mettre RenderIt à True, dans les limites d'un Rectangle donné Rect)
  • soit de mesurer la taille du texte ( RenderIt à False, dimensions du Rectangle donné renvoyées dans Rect)

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
uses Windows,Forms,Graphics, RichEdit, ComCtrls; 
... 
  
function PrintToCanvas(ACanvas : TCanvas; FromChar, ToChar : integer; 
                      ARichEdit : TRichEdit; var ARect : TRect;RenderIt:boolean) : Longint; 
var  Range    : TFormatRange; 
begin 
    //Précaution 
    SendMessage(ARichedit.Handle, EM_FORMATRANGE, 0, 0); 
  
    if not RenderIt then 
    begin 
      SetRect(ARect,0,0,ARichEdit.Width,ARichEdit.Height); 
    end; 
  
    FillChar(Range, SizeOf(TFormatRange), 0); 
    Range.hdc        := ACanvas.handle; 
    Range.hdcTarget  := ACanvas.Handle; 
    Range.rc.left    := ARect.Left * 1440 div Screen.PixelsPerInch; 
    Range.rc.top     := Arect.Top * 1440 div Screen.PixelsPerInch; 
    Range.rc.right   := ARect.Right * 1440 div Screen.PixelsPerInch; 
    Range.rc.Bottom  := ARect.Bottom * 1440 div Screen.PixelsPerInch; 
    Range.chrg.cpMax := ToChar; 
    Range.chrg.cpMin := FromChar; 
    if RenderIt 
    then Result := SendMessage(ARichedit.Handle, EM_FORMATRANGE, 1, Longint(@Range)) 
    else begin 
           Range.chrg.cpMax := ARichedit.GetTextLen; 
           Result := SendMessage(ARichedit.Handle, EM_FORMATRANGE, 0, Longint(@Range)); 
           ARect:=Range.rc; 
           ARect.Bottom  := Range.rc.Bottom * Screen.PixelsPerInch div 1440; 
         end; 
   SendMessage(ARichEdit.handle, EM_FORMATRANGE, 0,0); 
end;
Utilisation :
  • ACanvas (TCanvas) :
    Un Canvas qui sert à "dessiner" le texte formaté (celui d'un TBitmap que l'on a créé pour l'occasion par exemple)
  • FromChar, ToChar (integer) :
    Index du premier et dernier caractère du texte à prendre en compte pour mesurer le texte (mettre Tochar à -1 pour
    prendre le dernier caractère du texte)
  • ARichEdit (TRichEdit) :
    Le TRichEdit qui contient le texte formaté
  • RenderIt (boolean) et var ARect (TRect) :
    • True : on dessine vraiment le texte formaté dans ACanvas, dans les limites du Rectangle Rect passé en paramètre.
    • False : on mesure le texte et on renvoie ses dimensions dans Rect


La fonction retourne l'index du dernier caractère qui tient dans le Rectangle Rect plus 1 (donc Index_du_dernier_caractère+1)

Exemple :
On mesure la taille complète du texte (index de 0 à -1)
Code delphi : Sélectionner tout
1
2
var ARect:TRect; 
PrintToCanvas(Form1.Canvas,0,-1,RichEdit1,ARect,false);

Mis à jour le 21 janvier 2014 LadyWasky

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -