Aide svp _afficher un texte lettre par lettre dans un textbox

soldier8514 Messages postés 295 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 24 janvier 2014 - 5 nov. 2012 à 17:41
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 - 10 nov. 2012 à 21:08
bonjour ,
je bataille beaucoup ces jours-ci pour faire quelque chose de très simple

j'aimerais afficher un texte lettre par lettre toute les 100 ms dans une textbox (ou un label )

(c'est à dire que le texte apparaisse comme si quelqu'un le tape au clavier )


tout ce que j'ai tenté jusque là a foiré misérablement ou bien mange trop de charge cpu , donc je demande un peu d'aide ,

si quelqu'un peut m'aider

snifff ...

10 réponses

soldier8514 Messages postés 295 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 24 janvier 2014 1
5 nov. 2012 à 18:08
c'est bon j'ai trouvé !!!!!!!!!

procedure TForm1.Timer1Timer(Sender: TObject);

begin


Li := Length(Edit1.Text); {Taille du texte}


i:=i+1;
if i=Li then
begin
i:=0;
Edit2.Clear;

end;


Edit2.Text := Edit2.Text + (Edit1.Text[i]) ;


end;
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
5 nov. 2012 à 23:20
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
    function WriteInMilli(str: string; MyTimer: integer): string;
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  pas: integer;

implementation

{$R *.dfm}

function TForm1.WriteInMilli(str: string; MyTimer: integer): string;
begin
  Timer1.Interval := MyTimer;
  Edit2.text := form1.Edit2.text + copy(Str, pas, 1);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Inc(pas);
  WriteInMilli('Ma grand mère fait du vélo..', 100);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit2.Clear;
end;

end.




cantador
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
6 nov. 2012 à 09:17
Salut,

Si je peux me permettre cher Cantador :

procedure TForm1.FormCreate(Sender: TObject);
begin
  pas := 0;
  Edit2.Clear;
end;




Simon
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
6 nov. 2012 à 11:13
Non, cher simonpelloquin..

La variable pas est globale.
Elle est donc initialisée automatiquement à zéro.

Ce sont les variables locales qu'il faut mettre à zéro..

cantador
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
6 nov. 2012 à 11:15
un peu de nettoyage..

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Edit2: TEdit;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
    function WriteInMilli(str: string; MyTimer: integer): string;
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  pas: integer;

implementation

{$R *.dfm}

function TForm1.WriteInMilli(str: string; MyTimer: integer): string;
begin
  Timer1.Interval := MyTimer;
  Edit2.text := Edit2.text + copy(Str, pas, 1);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Inc(pas);
  WriteInMilli('Ma grand mère fait du vélo..', 100);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit2.Clear;
end;

end.




cantador
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
6 nov. 2012 à 15:01
Désolé dans ce cas pour ma remarque inappropriée...
Je l'ignorais. En est il de même pour les variable privées et publiques ?

Simon
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
6 nov. 2012 à 17:29
Bonsoir,

Oui, de même.
privées et publiques ne change rien à l'affaire.
tu peux d'ailleurs faire l'expérience et déplacer la variable pas..

c'est une question de visibilité pour ces deux rubriques.

en gros et très simplifié :
private ne concerne que l'unité
public concerne l'ensemble du projet

même chose pour les procédures et fonctions.

cantador
0
Utilisateur anonyme
6 nov. 2012 à 20:46
En même temps initialiser une variable globale ca ne mange pas de pain. Je me demande même si delphi ne dégage pas les déclarations lors de la compilation sauf si l'initialisation est faite avec une valeur autre que celle par défaut.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
7 nov. 2012 à 22:24
attention toutefois à ne pas déclarer la même variable en globale et locale..


cantador
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
10 nov. 2012 à 21:08
Salut,

On peut obtenir un effet intéressant en ajoutant de manière alternative les caractères "_" et "|" après l'apparition de chaque caractère. J'avais vu cet effet je ne sais plus où sur une page web, c'est pas mal du tout.
On peut également varier à chaque fois et de manière aléatoire l'intervalle du timer (entre 80 et 130 par exemple) pour plus de naturel, la saisie humaine n'étant aussi régulière que notre TTimer (qui lui même... mais bon, c'est un autre sujet).
Si le sujet intéresse encore soldier8514, j'envoie un bout de code de démo.

JP.
0
Rejoignez-nous