CHRONOMETRE / COMPTE A REBOURS *10

LeDOC666 Messages postés 4 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 16 mars 2007 - 6 mars 2007 à 11:38
LeDOC666 Messages postés 4 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 16 mars 2007 - 16 mars 2007 à 15:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41757-chronometre-compte-a-rebours-10

LeDOC666 Messages postés 4 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 16 mars 2007
16 mars 2007 à 15:47
Q - For msg:=0 to Form1.ComponentCount-1 do
If (Form1.Components[msg+1] is TButton ) then //Tu avais oublié le "+1"

R - En fait je ne l'avait pas oublié, mais dans le code original que tu m'avai donné, il y etait pas :)

Q - TButton(Form1.Components[msg]).Click; // Paramètres en trop : voir message de l'IDE//

R - C'est justement la que ca coince :/

Q - Dernier beug que je te laisse solutionner ^^ :si tu fais cela tu vas appeler le bouton qui lance cette boucle : ainsi tu auras une boucle infinie. Il faut donc que tu rajoute une condition en plus.

R - la condition était si j = 1
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
9 mars 2007 à 23:29
@ LeDOC666 :

Pour cliquer les Buttons de 1 à 10, je te conseille d'essayer plutôt ceci :

var i: Integer;
begin
for i := 1 to 10 do
TButton(FindComponent(Format('Button%d', [i]))).Click;
end;

Ca t'évitera toute complication, étant donné qu'il y a d'autres boutons sur la fiche, et d'avoir à jouer sur les Button.Tag et Button.Name.

Bonne prog' :p
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
8 mars 2007 à 11:12
Salut : tu as trois erreurs dans ton code.

For msg:=0 to Form1.ComponentCount-1 do
If (Form1.Components[msg+1] is TButton ) then //Tu avais oublié le "+1"
TButton(Form1.Components[msg]).Click; // Paramètres en trop : voir message de l'IDE//

Dernier beug que je te laisse solutionner ^^ :si tu fais cela tu vas appeler le bouton qui lance cette boucle : ainsi tu auras une boucle infinie. Il faut donc que tu rajoute une condition en plus.

@+
LeDOC666 Messages postés 4 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 16 mars 2007
7 mars 2007 à 11:27
J'aai fait quelques modifications sur le zip, et sur l'optimisation du code.
Par contre j'arrive pas a simplifier la partie:


Button1Click(Sender);
Button2Click(Sender);
Button3Click(Sender);
Button4Click(Sender);
Button5Click(Sender);
Button6Click(Sender);
Button7Click(Sender);
Button8Click(Sender);
Button9Click(Sender);
Button10Click(Sender);

par For msg:=0 to Form1.ComponentCount-1 do
If (Form1.Components[msg] is TButton ) then
TButton(Form1.Components[msg]).Click(Sender); // C'est la que ca coince :/
lgrfranck Messages postés 3 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 7 mars 2007
7 mars 2007 à 06:25
Bonjours , j'ai ecris un progamme pour aider a la création d'un fichier ZIP pour la parrution
d' une source "DPZ CRÉATION D'UN FICHIER ZIP DE VOTRE PROJET"
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
6 mars 2007 à 15:50
je confirme ce que francky a dit absolument !
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
6 mars 2007 à 13:47
Salut,

Je vais être assez critique : désolé.

*Fichiers inutiles présents et zip mal fait.

*Déjà aucun composants n'est convenablement nommé ce qui fait qu'on a du mal à s'y retrouver.

*Ensuite ton code est trop long et non optimisé. Par exemple

1)If s[1] = 0 then
begin
s[1] := 1;
Button1.Caption := 'Stop';
Button11.Enabled := False;
Edit1.Enabled := False;
Button24.Enabled := True
end
else if s[1] = 1 then
begin
s[1] := 0;
Button1.Caption := 'Start';
Button11.Enabled := True;
end;

Ect ect : tu aurais pu utiliser des case of. Ensuite il y a des cas similaires qui pouraient être regroupés dans des procédures.

2)Ensuite

Label1.Caption := FormatDateTime('hh:mm:ss',hour[1]);
Label2.Caption := FormatDateTime('hh:mm:ss',hour[2]);
Label3.Caption := FormatDateTime('hh:mm:ss',hour[3]);
Label4.Caption := FormatDateTime('hh:mm:ss',hour[4]);
Label5.Caption := FormatDateTime('hh:mm:ss',hour[5]);
Label6.Caption := FormatDateTime('hh:mm:ss',hour[6]);
Label7.Caption := FormatDateTime('hh:mm:ss',hour[7]);
Label8.Caption := FormatDateTime('hh:mm:ss',hour[8]);
Label9.Caption := FormatDateTime('hh:mm:ss',hour[9]);
Label10.Caption := FormatDateTime('hh:mm:ss',hour[10]);

A remplacer par

For msg:=0 to Form1.ComponentCount-1 do
If (Form1.Components[msg] is TLabel ) then
TLabel(Form1.Components[msg]).Caption:=FormatDateTime('hh:mm:ss',hour[msg]);

On aurait pu faire de meme avec

Button1Click(Sender);
Button2Click(Sender);
Button3Click(Sender);
Button4Click(Sender);
Button5Click(Sender);
Button6Click(Sender);
Button7Click(Sender);
Button8Click(Sender);
Button9Click(Sender);
Button10Click(Sender);

CheckBox1.Checked := False;
CheckBox2.Checked := False;
CheckBox3.Checked := False;
CheckBox4.Checked := False;
CheckBox5.Checked := False;
CheckBox6.Checked := False;
CheckBox7.Checked := False;
CheckBox8.Checked := False;
CheckBox9.Checked := False;
CheckBox10.Checked := False;

Pour conclure : il y a un gros beug dans ton application. Le timer est activé "au niveau du composant". Ce qui fait que l'instruction MessageDlg('Compteur ' + inttostr(msg) + ' terminé',mtConfirmation,mbOKCancel,0); est toujours appelé. De ce fait ton application ne fonctionne tout simplement pas.

Il y a du boulot à faire mais ne te décourage pas ;).
LeDOC666 Messages postés 4 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 16 mars 2007
6 mars 2007 à 11:38
Pour activer le compte a rebours, cochez la case correspondante au compte a rebours que vous souhaitez initialiser.
Rejoignez-nous