Bonjour,
Voici 2 problèmes
Je reviens avec ma question non solutionnée sur le format de chaque caractère
J'ai un texte formaté (décalage à gauche police couleur gras souligné ...). Il est placé dans un TRichEdit (memo1).
Ce que je voudrais faire c'est connaître tous les caractère en gras 'pour l'exemple) donc je consulte le format de chaque caractère
Voici mon code
Je lis ligne par ligne et je regarde caractère par caractère, quand toute ma ligne est regardée je met le résultat dans memo2 puis quand tout est finit je remet dans memo1
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
17
18
19
20
21
22
23
24
25
26
27
28 for n:=0 to memo1.Lines.Count-1 do begin gras:=false; for t:=1 to length(memo1.Lines[n]) do begin memo1.SelStart := Perform(EM_LINEINDEX, n, 0) + t; if fsbold in memo1.SelAttributes.style then //Traitement du gras. begin if not(gras) then begin reponse:=reponse+'#G#'; gras:=true; end; end else begin if gras then begin reponse:=reponse+'#PG#'; gras:=false; end; end; end; reponse:=reponse+copy(memo1.lines[n],t,1); end; memo2.lines.add(reponse); reponse:=''; end; memo1.lines:=memo2.Lines;
Le problème est que ça ne marche pas tout le temps ...
Si vous savez pour quoi ou si vous avez une meilleure idée merci de votre aide
Je voudrais faire la même chose mais uniquement pour le texte sélectionné
idem avec le memo1. Dans le tableau une cellule par caractère et une autre pour son format (gras ou normal)
Ici seul le format du premier caractère est pris en compte et donc ça ne marche pas ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 txt:=memo1.SelText; w:=memo1.SelStart; tableau.ColCount:=length(txt); for n:=1 to length(txt) do begin tableau.cells[n-1,0]:=txt[n]; memo1.selstart:=w-1; f:='Normal'; if fsbold in memo1.SelAttributes.Style then f:='G.'; tableau.cells[n-1,2]:=f; end;
Merci pour votre aide
Partager