Bonjour

Je vous propose l'écriture d'un texte comme lorsqu'on le tape à la main au clavier, c'est à dire lettre après lettre. Celui-ci est réécrit plusieurs fois à la suite pendant un temps défini.

Pour faire cela, il faut déposer sur une forme :

  • 1 TButton;
  • 2 TTimer;
  • 1 TLabel.


Paramétrage des propriétés des composants :

  • Caption du TLabel : vide;
  • Pour les TTimer : Enabled False.
  • Exemple : pour le premier TTimer : Interval = 100, pour le deuxième : Interval = 30000 (30 secondes)


Pour commencer on déclare :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
  private
    letter: word;
    procedure Ecrire(Sender: TObject);
L'écriture se fait dans le TLabel. On crée la procédure d'écriture :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Ecrire(Sender: TObject); // Procédure d'écriture du texte
Const
 texte = 'Le texte s''écrit lettre après lettre...';
begin
 Label1.Caption := copy(texte, 1, letter)+ '|';
 letter := letter + 1; // Lettre à lettre
 If Label1.Caption = texte + '|' then
 Label1.Caption := texte; // Effacement du faux curseur
 If Label1.Caption = texte then
 letter := 0; // Remise au début
end;
Pour lancer l'écriture, il faut lancer le premier TTimer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Enabled := True; // Lancement temporisation durée entre chaque lettre
end;
Quand le premier TTimer est lancé, l'écriture commence. Le temps d'écriture est fixé par le deuxième TTimer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Ecrire(Self); // Lancement écriture
 Timer2.Enabled := True; // Lancement temporisation durée d'écriture
end;
L'arrêt et la réinitialisation de la boucle sont réalisés au niveau du deuxième TTimer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
procedure TForm1.Timer2Timer(Sender: TObject);
begin
 Timer1.Enabled := False; // Arrêt temporisation durée entre chaque lettre
 Label1.Caption := ''; // Effacement du texte
 letter := 0; // Remise de l'écriture au début
end;
Attention au paramétrage de l'intervalle du deuxième TTimer. Il doit laisser le temps au texte d'être écrit plusieurs fois.