Also know as
Messages postés259Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention22 novembre 2010
-
15 avril 2007 à 13:53
cs_matrix1
Messages postés169Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention15 avril 2008
-
6 juin 2007 à 12:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_matrix1
Messages postés169Date d'inscriptiondimanche 16 février 2003StatutMembreDernière intervention15 avril 2008 6 juin 2007 à 12:56
ne soyez pas si dure les gas, t'es encore un newbie en delphi, c normale, fais des recherche et améliore vos compétences, un tu fera quel que chose d'intéressant et tu vas les impressionner mais il faut d'abord aimer ce que tu fais ;), tien! essay de faire des(draw)s sure ton propre form ou just des boucles
//**************************
if Mypanel.Left=380 then
while (Mypanel.Left<735) do
begin
Mypanel.Left:=Mypanel.Left+5 ;
end else
if Mypanel.Left>=735 then
while (Mypanel.Left>380) do
begin
Mypanel.Left:=Mypanel.Left-5 ;
end;
//******************là t'es pas oubligé de refresh ;)***********
tu fera des mervielles il faux just de l'imagination et du travail. bon courage
et je m'excuse pur mon français, i'm not francophone
riri15
Messages postés6Date d'inscriptiondimanche 29 janvier 2006StatutMembreDernière intervention28 avril 2007 25 avril 2007 à 14:16
Je remercie RANDRIANO pour l'amélioration qu'il a fait sur mon code!
Tu as tout mon accord!
Japee, ne soyez pas sévère! Je crois qu'il a tout pigé now!
randriano
Messages postés54Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention26 juillet 2011 24 avril 2007 à 19:58
Bonjour!
Excusez moi! Japee! Bon, je vais enlever ce truc de ce code mais je voulais seulement partager ces codes à tout le monde mais j'ai tort!
Je vais enlever le code developer13 et zoomer désolé!!!!!
randriano
Messages postés54Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention26 juillet 2011 23 avril 2007 à 18:38
Bon, merci de vos conseils!
Je promets une modification bientôt, je dois d'abord m'arranger avec mon emploi du temps!
Je fais faire meilleur que DevelOpeR13!!
J'espère
randriano
Messages postés54Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention26 juillet 2011 16 avril 2007 à 12:46
Pour les Refresh, je crois que j'ai posté le mauvais zip qui inclut ça.
Je vais tenir compte des remarques que vous apportez pour la mise à jour.
Merci!
En effet, c'est bizarre qu'il faille rafraichir chaque bouton.
Mais tant qu'a faire, autant en faire une fonction prête à l'emploi :
procedure BlendForm(Form: TCustomForm; Delay: Integer);
const
CBlendFlag: array[Boolean] of Cardinal = (AW_BLEND, AW_BLEND or AW_HIDE);
var
I: Integer;
begin
AnimateWindow(Form.Handle, Delay, CBlendFlag[Form.Visible]);
for I := 0 to Form.ControlCount - 1 do
if Form.Controls[I] is TWinControl then
Form.Controls[I].Invalidate;
Form.Visible := not Form.Visible;
end;
Vous aurez remarqué que le choix d'apparition dépend de la visibilité de la fiche.
Et avec tout ça, plus de problème de flags ni de comptage du nombre de boutons.
NB: il est à noter que ce problème ne concerne QUE les TWinControl, les TLabel, eux, ne sont pas concernés.
NB-2: avec tout ça, il devient possible de faire :
BlendForm(Self, 800);
BlendForm(Self, 800);
pour faire disparaitre puis réapparaitre la fiche !
++
Flo
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 15 avril 2007 à 16:20
ALSO OK.
On peut également simplifier comme ceci :
Pour tous les boutons :
- On renseigne la propriété Tag avec le numéro du bouton
- On met "Button1Click" dans l'évenement OnClick.
On ne garde que la procédure Button1Click, comme ceci :
procedure TForm1.Button1Click(Sender: TObject);
var i, tag : byte;
begin
form1.Hide;
tag := (Sender as TButton).Tag;
case tag of
1 : AnimateWindow(Handle,2000,AW_CENTER);
2 : AnimateWindow(Handle,2000,AW_BLEND);
3 : begin
AnimateWindow(Handle,2000,AW_CENTER);
AnimateWindow(Handle,4000,AW_BLEND);
end;
4 : AnimateWindow(Handle,2000,AW_VER_POSITIVE);
5 : AnimateWindow(Handle,2000,AW_VER_NEGATIVE);
6 : AnimateWindow(Handle,2000,AW_HOR_POSITIVE);
7 : AnimateWindow(Handle,2000,AW_HOR_NEGATIVE);
end;
form1.Show;
for i := 1 to 7 do Bouton(i).Refresh;
end;
function TForm1.Bouton(no : byte) : TButton;
begin
Result := FindComponent('button'+ IntToStr(no)) as TButton;
end;
Also know as
Messages postés259Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention22 novembre 20102 15 avril 2007 à 15:46
C'est pas bête d'utiliser une petite boucle for, mais le petit truc final qui serait de compter le nombre total de boutons ce qui permettrais de ne pas modifier la fonction et pour autant pouvoir rajouter des boutons sans remodifier la fonction par derrière !
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 15 avril 2007 à 15:41
Also know as : Pour accéder à une série de composants identiques, je procède comme ceci :
Une petite fonction :
function TForm1.Bouton(no : byte) : TButton;
begin
Result := FindComponent('Button'+ IntToStr(no)) as TButton;
end;
Also know as
Messages postés259Date d'inscriptionsamedi 13 décembre 2003StatutMembreDernière intervention22 novembre 20102 15 avril 2007 à 13:53
Très sympa pour faire quelques petits effet dans nos programmes de temps en temps ca fait pas de mal !
Bon par contre pour ma part le bouton "LES DEUX" ne fonctionne pas correctement, il me fait uniquement la première animation demandé dans la source, autrement dit une apparition centrale (AnimateWindow(Handle,2000,AW_CENTER);).
Et le bouton "BLEND" est très intéressant mais pour une raison que je ne vois pas, les boutons pour faire les apparitions verticales et horizontale ne s'affiche plus.
Je suis obligé de glisser le curseur pour les faire apparaitre à nouveau.
J'ai était de tous les rafraichir :
6 juin 2007 à 12:56
//**************************
if Mypanel.Left=380 then
while (Mypanel.Left<735) do
begin
Mypanel.Left:=Mypanel.Left+5 ;
end else
if Mypanel.Left>=735 then
while (Mypanel.Left>380) do
begin
Mypanel.Left:=Mypanel.Left-5 ;
end;
//******************là t'es pas oubligé de refresh ;)***********
tu fera des mervielles il faux just de l'imagination et du travail. bon courage
et je m'excuse pur mon français, i'm not francophone
25 avril 2007 à 14:16
Tu as tout mon accord!
Japee, ne soyez pas sévère! Je crois qu'il a tout pigé now!
24 avril 2007 à 19:58
Excusez moi! Japee! Bon, je vais enlever ce truc de ce code mais je voulais seulement partager ces codes à tout le monde mais j'ai tort!
Je vais enlever le code developer13 et zoomer désolé!!!!!
23 avril 2007 à 18:38
Je promets une modification bientôt, je dois d'abord m'arranger avec mon emploi du temps!
Je fais faire meilleur que DevelOpeR13!!
J'espère
16 avril 2007 à 12:46
Je vais tenir compte des remarques que vous apportez pour la mise à jour.
Merci!
15 avril 2007 à 16:32
Mais tant qu'a faire, autant en faire une fonction prête à l'emploi :
procedure BlendForm(Form: TCustomForm; Delay: Integer);
const
CBlendFlag: array[Boolean] of Cardinal = (AW_BLEND, AW_BLEND or AW_HIDE);
var
I: Integer;
begin
AnimateWindow(Form.Handle, Delay, CBlendFlag[Form.Visible]);
for I := 0 to Form.ControlCount - 1 do
if Form.Controls[I] is TWinControl then
Form.Controls[I].Invalidate;
Form.Visible := not Form.Visible;
end;
Vous aurez remarqué que le choix d'apparition dépend de la visibilité de la fiche.
Et avec tout ça, plus de problème de flags ni de comptage du nombre de boutons.
NB: il est à noter que ce problème ne concerne QUE les TWinControl, les TLabel, eux, ne sont pas concernés.
NB-2: avec tout ça, il devient possible de faire :
BlendForm(Self, 800);
BlendForm(Self, 800);
pour faire disparaitre puis réapparaitre la fiche !
++
Flo
15 avril 2007 à 16:20
On peut également simplifier comme ceci :
Pour tous les boutons :
- On renseigne la propriété Tag avec le numéro du bouton
- On met "Button1Click" dans l'évenement OnClick.
On ne garde que la procédure Button1Click, comme ceci :
procedure TForm1.Button1Click(Sender: TObject);
var i, tag : byte;
begin
form1.Hide;
tag := (Sender as TButton).Tag;
case tag of
1 : AnimateWindow(Handle,2000,AW_CENTER);
2 : AnimateWindow(Handle,2000,AW_BLEND);
3 : begin
AnimateWindow(Handle,2000,AW_CENTER);
AnimateWindow(Handle,4000,AW_BLEND);
end;
4 : AnimateWindow(Handle,2000,AW_VER_POSITIVE);
5 : AnimateWindow(Handle,2000,AW_VER_NEGATIVE);
6 : AnimateWindow(Handle,2000,AW_HOR_POSITIVE);
7 : AnimateWindow(Handle,2000,AW_HOR_NEGATIVE);
end;
form1.Show;
for i := 1 to 7 do Bouton(i).Refresh;
end;
function TForm1.Bouton(no : byte) : TButton;
begin
Result := FindComponent('button'+ IntToStr(no)) as TButton;
end;
15 avril 2007 à 15:46
15 avril 2007 à 15:41
Une petite fonction :
function TForm1.Bouton(no : byte) : TButton;
begin
Result := FindComponent('Button'+ IntToStr(no)) as TButton;
end;
qui permet de faire (dans le cas présent) :
for i := 1 to 7 do Bouton(i).Refresh;
au lieu de :
button1.Refresh;
button2.Refresh;
button3.Refresh;
button4.Refresh;
button5.Refresh;
button6.Refresh;
button7.Refresh;
15 avril 2007 à 13:53
Bon par contre pour ma part le bouton "LES DEUX" ne fonctionne pas correctement, il me fait uniquement la première animation demandé dans la source, autrement dit une apparition centrale (AnimateWindow(Handle,2000,AW_CENTER);).
Et le bouton "BLEND" est très intéressant mais pour une raison que je ne vois pas, les boutons pour faire les apparitions verticales et horizontale ne s'affiche plus.
Je suis obligé de glisser le curseur pour les faire apparaitre à nouveau.
J'ai était de tous les rafraichir :
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Hide;
AnimateWindow(Handle,2000,AW_BLEND);
form1.Show;
button1.Refresh;
button2.Refresh;
button3.Refresh;
button4.Refresh;
button5.Refresh;
button6.Refresh;
button7.Refresh;
end;
Ce que je trouve un peu long, donc il doit y avoir un autre moyen pour cela je pense.
En tout cas moi je garde de côté :)
@+