Bonjour !

J'ai une ou deux questions sur la procédure SetTextFormat, que je n'arrive pas à utiliser quoiqu'il me semble en avoir compris le principe : appliquer un format à une partie d'un texte.

Premier problème, compte-t-on à partir de 0 ou de 1 ? La question concerne aussi la fonction Pos : est-ce par erreur ou délibérément que la fonction renvoie 0 pour le premier caractère ?

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
31
32
33
{ --- extrait de Flash8.pas --------------------------------------------------
 
type
  ...
  TextField = external class
    ...
    procedure setTextFormat(beginIndex, endIndex: Number; textFormat: TextFormat);
    
  ---------------------------------------------------------------------------- }
 
program setTextFormat1;
 
uses
  Flash8;
 
{$FRAME_WIDTH 400}
{$FRAME_HEIGHT 300}
 
const
  s = '123456789';
 
var
  t: TextField;
  f1, f2: textFormat;
 
begin
  f1 := TextFormat.Create('Courier', 16);
  f2 := TextFormat.Create('Courier', 24);
  t := TextField.Create(nil, 't', 0, 10, 10, 380, 280);
  t.setNewTextFormat(f1);
  t.text := s+Chr(13)+Chr(10)+'Pos(''1'', ''123456789'') = '+IntToStr(Pos('1', s));
  t.setTextFormat(3,6,f2);
end.
Deuxièmement, voici un exemple qui ne marche pas du tout. Je n'y vois pas d'erreur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
  t.text := 'abcdefghijklmnopqrstuvwxyz';
  t.setTextFormat(10,6,f2);
Heureusement il y a une solution de secours avec la propriété html, qui permet d'obtenir le même résultat, mais j'aurais quand même bien voulu savoir si l'autre manière est à abandonner ou non.