cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 2009
-
26 janv. 2005 à 11:36
lapucedu88
Messages postés96Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention22 mai 2008
-
12 avril 2005 à 10:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
lapucedu88
Messages postés96Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention22 mai 20081 12 avril 2005 à 10:11
c'est vrai barbichette, c'est une chose à laquelle je ne pense jamais.
Depuis le temps j'en ai fait un autre, mais je le met sur le réseaux car je l'ai pas fait toute seul.
Je changerais ce défault à l'occasion, pour l'instant je suis sur un autre projet.
Bisous à vous tous.
cs_barbichette
Messages postés220Date d'inscriptionlundi 30 octobre 2000StatutMembreDernière intervention15 juillet 2013 11 avril 2005 à 11:59
Salut,
un peu en retard par rapport aux autres,
Il n'y a pas besoin de faire un FORMACTIVATE pour initialiser le tableau CouleurPossible.
Pour les déclarations en dehors des procedures et fonctions, il est possible d'attribuer directement les valeurs.
Ainsi pour la déclaration de CouleurPossible, écrire
Et voilà, quelques lignes de gagnées et un code plus clair...
lapucedu88
Messages postés96Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention22 mai 20081 27 janv. 2005 à 15:45
Merci kenavo, mais je suis la pour ça, écouter les remarques que l'on me fait afin d'amèliorer ma façon de programmer.
D'ailleur je viens de laisser un message sur le forum afin de l'amèliorer encore un peu.
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 27 janv. 2005 à 14:28
Moi, ce que jaime, c'est quand remarques et conseils sont aussi vite et bien compris et mis en pratique !
Bravo !
Ken@vo
lapucedu88
Messages postés96Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention22 mai 20081 27 janv. 2005 à 12:06
Merci JulioDelphi. Il est vrai que je pense toujours à utiliser des procédures. De plus les tableaux que Kenavo m'a fait utiliser permette d'allèger le code.
Je vous remercie, car depuis que j'utilise ce site j'apprend beaucoup plus vite et cet apprentissage je le dois à vous tous.
Bisous
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 27 janv. 2005 à 11:16
ha bah ça c de l'optimisation ! tu te sens pas plus legere ? plus simple ala lecture le code tt de meme !
bien joué =)
lapucedu88
Messages postés96Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention22 mai 20081 27 janv. 2005 à 09:09
Sa y est j'ai essayer de vraiment optimiser mon code (peut être encore deux ou trois retouches),
J'ai créé des procedure dans certains cas et, kenavo, tes tableaux marche super bien, en plus il me simplifie mon code.
Merci à vous tous et si vous avez d'autre remarques à faire, je les attends avec impatiences
Bisous à vous tous.
lapucedu88
Messages postés96Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention22 mai 20081 26 janv. 2005 à 16:22
Ok, je te remercie Kenavo, je vais essayer de regarder ça pour demain.
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 26 janv. 2005 à 15:21
Salut la puce,
Déclarer un tableau de TShape n'est pas un gros problème, quoiqu'il y ait quelques règles à respecter.
Dans ton cas ça peut s'écrire comme suit :
dans les propriétés de la form (privées ou publiques selon l'usage extérieur qui peut en être fait) tu déclares :
TabCoups : Array[0..26,0..4] of TShape;
... et dans FormCreate :
procedure TForm1.FormCreate(Sender: TObject);
var
i, j : Integer;
begin
for i:= 0 to 26 do
for j:= 0 to 4 do
begin
TabCoups[i,j]:=TShape.Create(self);
With TabCoups[i,j] do
begin
Parent := Self; //faut pas oublier
Width := 25;
Height := 25;
Left := 8 + j*24;
Top := 640 - i*24;
Shape := stCircle;
Brush.Color := clWhite;
end;
end;
end;
... et après, pour changer la couleur : TabCoups[i,j].Brush.Color := NewColor;
----------------------------
Attention à Sender!
Sender qui est passé par paramètre à l'évènement identifie l'émetteur de l'évènement.
Par exemple, quand on clique sur un bouton, dans la procédure déclenchée par l'évènement, sender (TObjet) est le bouton (TButton).
Pour accéder aux propriétés propres au bouton (comme Caption) on dit que l'objet sur lequel on a cliqué est un bouton (Sender as TButton) et on regarde ou modifie une propriété.
Mais, si c'est pas un bouton, il y a problème ! Et dans ton cas, le "sender" n'est pas un TShape mais un TButton ("nouvelle partie"): il y a erreur ! On peut vérifier le type en faisant : If Sender is TShape (ou TButton).
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 26 janv. 2005 à 15:13
C' est primitif comme code. Le principal etant que ça marche. Maintenant, si tu as besoin dans 1 mois de changer le programme, ça va te donner un mal de crane pas possible. Quand on dis de simplifier, ça veut dire:
-faciliter la compréhension du code.
-eviter d' ecrire du code répétitif remplaçable par une fonction.
Sender est la parametre passé dans l' event OnClick.
En fait, Sender est l' object qui a provoqué le onClick.
Si tu as 4 TSpeedButtons et que tu attribues le meme event BoutonClick par exemple, en faisant click sur un des 4 TSpeedButtons, tu sauras lequel gràce à Sender genre:
If Sender = SpeedButton1 Then ...
else
If Sender = SpeedButton2 Then ...
lapucedu88
Messages postés96Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention22 mai 20081 26 janv. 2005 à 14:36
Ok, je savais qu'il était lourd, néanmoins je suis la pour apprendre et je demande que ça.
Dis moi Kenavo, je vois pas trop comment faire pour réaliser des tableaux de TShape.
Et si je veux utiliser (Senter as TShape).Brush.color:=clwhite dans l'événement OnClick de nouvelle partie sa met une erreur pourquoi
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 26 janv. 2005 à 12:56
lourd oui c'est peu dire, FireFox n'a meme pas voulu me montrer la totalité du .pas !! "PLANTAGE" lol
C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!
C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!
C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!
C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!
=)
ps : MasterMind is ®
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 26 janv. 2005 à 11:36
"Le code est un peu lourd."
Non, sans blagues !
18 fois la procédure TForm1.Couleur_MouseDown !!!
Il eut été plus élégant de n'en écrire qu'une qui s'occupât des 18 Tshapes concernés :
Procedure TForm1.CouleursMouseDown( Sender : TObject; Button : TMouseButton;
Shift : TShiftState; X, Y : Integer );
Begin
CouleurChoisi := (Sender as TShape).Brush.Color;
cour.Brush.Color := CouleurChoisi ;
End;
...et pareil pour Choix_MouseDown
Procedure TForm1.ChoixMouseDown( Sender : TObject; Button : TMouseButton;
Shift : TShiftState; X, Y : Integer );
Begin
(Sender as TShape).Brush.Color := CouleurChoisi;
End;
Et vu le paquet de TShape, un creation dynamique de deux tableaux de Tshape à deux dimensions (un pour la zone l'affichage [27x5] et un pous la zone de résultat [27x3]) aurait encore allégé le code. Juste un compteur de coups réalisés pour pointer la bonne ligne, une fonction pour afficher le coup, une fonction pour afficher le résultat.
12 avril 2005 à 10:11
Depuis le temps j'en ai fait un autre, mais je le met sur le réseaux car je l'ai pas fait toute seul.
Je changerais ce défault à l'occasion, pour l'instant je suis sur un autre projet.
Bisous à vous tous.
11 avril 2005 à 11:59
un peu en retard par rapport aux autres,
Il n'y a pas besoin de faire un FORMACTIVATE pour initialiser le tableau CouleurPossible.
Pour les déclarations en dehors des procedures et fonctions, il est possible d'attribuer directement les valeurs.
Ainsi pour la déclaration de CouleurPossible, écrire
CouleurPossible : Array[ 1..28 ] Of TColor=
(clred, clblack, clgreen, clblue, clteal, clgray,
cllime, clyellow, clfuchsia, claqua, clmaroon, clolive,
clnavy, clpurple, clsilver, clmoneygreen, clskyblue, clinfobk);
Et voilà, quelques lignes de gagnées et un code plus clair...
27 janv. 2005 à 15:45
D'ailleur je viens de laisser un message sur le forum afin de l'amèliorer encore un peu.
27 janv. 2005 à 14:28
Bravo !
Ken@vo
27 janv. 2005 à 12:06
Je vous remercie, car depuis que j'utilise ce site j'apprend beaucoup plus vite et cet apprentissage je le dois à vous tous.
Bisous
27 janv. 2005 à 11:16
bien joué =)
27 janv. 2005 à 09:09
J'ai créé des procedure dans certains cas et, kenavo, tes tableaux marche super bien, en plus il me simplifie mon code.
Merci à vous tous et si vous avez d'autre remarques à faire, je les attends avec impatiences
Bisous à vous tous.
26 janv. 2005 à 16:22
26 janv. 2005 à 15:21
Déclarer un tableau de TShape n'est pas un gros problème, quoiqu'il y ait quelques règles à respecter.
Dans ton cas ça peut s'écrire comme suit :
dans les propriétés de la form (privées ou publiques selon l'usage extérieur qui peut en être fait) tu déclares :
TabCoups : Array[0..26,0..4] of TShape;
... et dans FormCreate :
procedure TForm1.FormCreate(Sender: TObject);
var
i, j : Integer;
begin
for i:= 0 to 26 do
for j:= 0 to 4 do
begin
TabCoups[i,j]:=TShape.Create(self);
With TabCoups[i,j] do
begin
Parent := Self; //faut pas oublier
Width := 25;
Height := 25;
Left := 8 + j*24;
Top := 640 - i*24;
Shape := stCircle;
Brush.Color := clWhite;
end;
end;
end;
... et après, pour changer la couleur : TabCoups[i,j].Brush.Color := NewColor;
----------------------------
Attention à Sender!
Sender qui est passé par paramètre à l'évènement identifie l'émetteur de l'évènement.
Par exemple, quand on clique sur un bouton, dans la procédure déclenchée par l'évènement, sender (TObjet) est le bouton (TButton).
Pour accéder aux propriétés propres au bouton (comme Caption) on dit que l'objet sur lequel on a cliqué est un bouton (Sender as TButton) et on regarde ou modifie une propriété.
Mais, si c'est pas un bouton, il y a problème ! Et dans ton cas, le "sender" n'est pas un TShape mais un TButton ("nouvelle partie"): il y a erreur ! On peut vérifier le type en faisant : If Sender is TShape (ou TButton).
26 janv. 2005 à 15:13
-faciliter la compréhension du code.
-eviter d' ecrire du code répétitif remplaçable par une fonction.
Sender est la parametre passé dans l' event OnClick.
En fait, Sender est l' object qui a provoqué le onClick.
Si tu as 4 TSpeedButtons et que tu attribues le meme event BoutonClick par exemple, en faisant click sur un des 4 TSpeedButtons, tu sauras lequel gràce à Sender genre:
If Sender = SpeedButton1 Then ...
else
If Sender = SpeedButton2 Then ...
26 janv. 2005 à 14:36
Dis moi Kenavo, je vois pas trop comment faire pour réaliser des tableaux de TShape.
Et si je veux utiliser (Senter as TShape).Brush.color:=clwhite dans l'événement OnClick de nouvelle partie sa met une erreur pourquoi
26 janv. 2005 à 12:56
C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!
C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!
C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!
C'est assez repetitif le code, le ctrl+V a été abusé ! toutes tes procedures se ressemblent, je suis sur que c'est faisable en une seul. OPTIMISE !!
=)
ps : MasterMind is ®
26 janv. 2005 à 11:36
Non, sans blagues !
18 fois la procédure TForm1.Couleur_MouseDown !!!
Il eut été plus élégant de n'en écrire qu'une qui s'occupât des 18 Tshapes concernés :
Procedure TForm1.CouleursMouseDown( Sender : TObject; Button : TMouseButton;
Shift : TShiftState; X, Y : Integer );
Begin
CouleurChoisi := (Sender as TShape).Brush.Color;
cour.Brush.Color := CouleurChoisi ;
End;
...et pareil pour Choix_MouseDown
Procedure TForm1.ChoixMouseDown( Sender : TObject; Button : TMouseButton;
Shift : TShiftState; X, Y : Integer );
Begin
(Sender as TShape).Brush.Color := CouleurChoisi;
End;
Et vu le paquet de TShape, un creation dynamique de deux tableaux de Tshape à deux dimensions (un pour la zone l'affichage [27x5] et un pous la zone de résultat [27x3]) aurait encore allégé le code. Juste un compteur de coups réalisés pour pointer la bonne ligne, une fonction pour afficher le coup, une fonction pour afficher le résultat.
Allez, au boulot !
Ken@vo