Bonjour à tous !
Voici ma procédure qui permet une simple colorisation de mot clé dans un TRichEdit, le souci c'est ! que j'aimerai faire le traitement de la colorisation juste sur le texte sélectionné.
Le souci dans cette procédure c'est quelle ne va pas jusqu'à fin de la sélection, elle s’arrête au première mots quelle trouve.
Je pense que le problème viens bien du RichEdit.SelLength.
Voici ma Procédure :
Merci.
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
29
30 var KeyWord: Array [1 .. 5] of String = ( 'type', 'var', 'procedure', 'begin', 'end' ); procedure HightLight(RichEdit: TRichEdit); var I, iPos, iNext: Integer; begin iNext := RichEdit.SelStart; for I := Low(KeyWord) to High(KeyWord) do begin iPos := RichEdit.FindText(KeyWord[I], iNext, RichEdit.SelLength,[stWholeWord]); while iPos <> -1 do begin iNext := iPos + Length(KeyWord[I]); RichEdit.SelStart := iPos; RichEdit.SelLength := Length(KeyWord[I]); RichEdit.SelAttributes.Color := clNavy; RichEdit.SelAttributes.Style := [fsbold]; iPos := RichEdit.FindText(KeyWord[I], iNext, RichEdit.SelLength,[stWholeWord]); end; end; end;
Partager