psycho81
Messages postés84Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention17 février 2008 14 nov. 2006 à 18:02
euh ... sors :)
psycho81
Messages postés84Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention17 février 2008 14 nov. 2006 à 18:00
Bah, on peut être un viellard atrabilaire (je viens tout juste de regarder la définition sur le wikipédia et ... dois je choisir inquiet ou irascible ? ^^ ) et être tout autant sympatique et cool :p
De plus, je te rapelle que si on se fie à nos descriptifs "codes sources", je suis nettement plus croulant et décrépi que toi avec près de 105 années :)
Bon j'avoue, j'ai un peu menti sur mon âge ... Mais bon, on m'a toujours dit que les femmes aimaient les gens plus agés qu'elles, alors j'ai mis le paquet :p
Bon trève de flood, je sort ->
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 14 nov. 2006 à 15:52
Hé, Psycho81, les histoires de famille, ça se traite en MP, lol.
Bon, maintenant tout le monde sait que je suis un vieillard atrabilaire.
Moi qui passait sur ce forum pour un mec sympa et cool, tu as définitivement ruiné ma réputation... ^^
Merci pour tes voeux :-)
P-S : il n'empêche, ton orthographe, maintenant, tu n'as pas trop à en rougir, hein ?
(tu n'as pas fait plus de 3 fautes, et encore, si tu t'étais arrêté à "je suis persuadé d'en avoir déjà laissé une ou deux dans ces simples lignes", tu n'en aurais que 2, mdr...)
A +
japee
psycho81
Messages postés84Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention17 février 2008 14 nov. 2006 à 14:12
Bonjour à tous !
Je me rapelle que, dans mon enfance, j'ai eu une longue série de lignes à écrire qui ressemblait étrangement :
"Je ne ferai plus de fautes d'orthographe à orthographe".
Quand je vois JAPEE, mon cher père, écrire "phaute d'ortografe", je peux vous assurer que je ne peux rester de glace :) Bon j'en dirai pas plus, je suis persuadé d'en avoir déjà laissé une ou deux dans ces simples lignes (malgrès une relecture minutieuse).
Celà étant, même si ici n'est pas la place pôur ce genre de discussion, bon anniversaire Japy !
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 31 oct. 2006 à 19:17
Salut Mauricio,
Tu me confirmes que ce composant peut avoir une utilité, j'en suis ravi.
Pour la led clignotante, je me trompe peut-être, mais je préfère laisser au développeur qui utiliserait mon TPulseButton la possibilité de lui affecter selon son choix 2 glyphs de leds (On et Off) qui seraient activées sur les évènements OnPulse (On) et MouseUp (Off), par exemple.
Par contre, je compte utiliser à terme ce bouton dans d'autres composants.
Merci pour ton appréciation. :-)
A +
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 31 oct. 2006 à 19:02
Ha oui, juste une dernière chose, je ne mets plus de note à personnne, pourquoi?
- certaines sources de m... qui ont pris 2 secondes et demi (le "et demi" est important, si si) se retrouvent avec des 9/10 ou 10/10, avec des "trop fort", "trop cool".
- Des sources très interessantes mais souvent incomplètes car ce sont des sources très complexes et de longue halaine (avec plusieurs mises à jour) se font massacrer par les "néophytes" (lol) de delphi qui pensent qu' ils sont des pros de la programmation : "Hein? pourquoi tu fais comme ça alors que comme ça c' est mieux ... Ça dégoute celui qui a fait l' effort alors que celui qui met un 3/10 le fait pour dire aux autres qu' il est meilleur quelque part mais on sait pas trop oú ...
Sur ce, et ne voulant pas relancer le débat des notes ... bravo à toi Japee, pas de note donc mais tu as compris ce que j' en pensais!
A+
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 31 oct. 2006 à 18:50
Salut Japee,
je te dis tout de suite que je n' ai pas compilé la source, j' ai juste regarder le code...
D' abord, je dois dire que j' en ai déjà eu besoin d' un compo comme celui-ci!
Il y a juste un truc qui à mon avis peut-être amélioré: il faudrait un effet visuel sur le bouton provoqué par le OnTimer, genre, changement de couleur, je pensais à un Bouton type Led qui clignoterait.
Oui je sais, le compo descend de TSpeedButton donc, à moins de réecrire le Onpaint ...
Bref, bravo!
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 31 oct. 2006 à 12:41
Salut Loda,
"Que ce passe-il si je set l'event à nil dans un des event?"
Oui, en effet. Tu viens de m'éclairer sur un point que je n'avais pas encore complètement assimilé. Merci, je vais corriger.
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 31 oct. 2006 à 12:03
salut,
2x "If then" vs AND:
J'ai pas du être très clair, mais je n'ai pas d'avis absolu sur ce genre de cas. Je ne faisssait que souligner que le comportement dépend des directive de compilation et donc le "gain" (hum, quel gain, un cycle machine, peut-être même moins) aussi.
Dans ce cas c'est pas important. Cela devient très important quand tu fais appel a des functions ou quand le deuxième test raise si le premier est faux.
Au temps que possible, je pense qu'il vaut mieux être indépendant des directives de compilation. Mais dans ce cas,.. pfff pour ce que ça change...
Sinon, un détail pour rendre ton code plus sur:
# procedure TPulseButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
# begin
# inherited;
# if Assigned(FOnPulse) then <-- a supprimer.
# FProgress.Enabled := False;
# end;
# procedure TPulseButton.TimerProgressTimer(Sender: TObject);
# begin
# FProgress.Interval := PROGRESS_INTERVAL div FRythm;
# if FRythm < RYTHM_MAX then { jusqu'à Interval = 10 }
# Inc(FRythm);
# if Assigned(FOnPulse) then <-- a ajouter
# FOnPulse(self);
# end;
je m'explique: Que ce passe-il si je set l'event à nil dans un des event? tu pourrais ne jamais desactiver le timer!
et donc, t'aurra des AV dans le OnTimer.
De plus, C'est pas important si tu reset timer.enabled pour rien.
bon code,
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 31 oct. 2006 à 00:06
Voilà, tout est corrygé, euh... corrigé !
Si vous voyez autre chose, mais je crois que là j'approche du but.
Je reverrai peut-être la progression du rythme, ça me parait un peu nerveux au départ.
Et j'appliquerai peut-être la suggestion de JulioDelphi...
Mais bon, je fais une pause.
Bonne nuit ^^
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 30 oct. 2006 à 22:06
JulioDelphi : je suis allé voir ton composant. J'aime bien le concept, je vais y réfléchir.
Cirec : ouais, c'est clair que si j'étais moitié aussi fort en prog qu'en orthographe...
D'ailleurs, à ce propos...
Loda : mais oui ! Tu as raison, je bloque OnMouseDown et OnMouseUp. Ca m'avait totalement échappé, je pensais m'en sortir facile avec inherited...
C'est génial de l'avoir remarqué, c'est exactement LA critique que j'attendais, lol.
C'est corrigé chez moi, ça marche au poil, dès que j'ai mis ça au propre, je balance la nouvelle mouture.
Et j'en prophyterait pour corrigé la phaute d'ortografe.
A + !
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 30 oct. 2006 à 13:04
super ce bouton =)
tu peux en faire une version de composant non visible ? pour ne pas avoir a reinstaller un 321654754eme bouton ?
regarde mon composant "TdbpDefaultButton" il prends en charge les BitBtn, SpeedButton et Button, comme ça, on install pas un autre bouton :p (par contre on pose sur la fiche le bouton de son choix + mon compo)
hs : je connaissait pas l'expression avec Arthur, mais je la garde, je la trouve excellente =)
venant de Japee je pense plus à une faute d'ynnatention ;-)
@Delphiprog : "passons sur le définition"
définition n'est plus féminin ?
comme quoi personne n'est infaillible ... ^_^
bon restons serieux.
je suis du même avis que Loda quand à l'utilisation de deux If ...
et
procedure TPulseButton.TimerProgressTimer(Sender: TObject);
begin
FProgress.Interval := PROGRESS_INTERVAL div FRythm;
if FRythm < RYTHM_MAX then { jusqu'à Interval = 10 }
inc(FRythm);
FOnPulse(Self);
end;
suffit amplement:
puisque TimerProgressTimer n'est appelé que si le Timer est Enable
et le Timer est Enable que si FOnPulse est assigné
Donc pas de modifications indispensables ... ;-)
toujours verifier par vous même
@+
Cirec
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 30 oct. 2006 à 11:19
Salut Loda,
tout à fait d'accord avec toi quand à la directive de compilation pour le AND : raison de plus pour ne pas y voir un avantage par rapport à IF THEN. Je reste donc sur ma position ;-)
Par contre,je ne comprend pas vraiment où l'utilisation de OnMouseDown et OnMouseUp sont bloquées...
Je viens de tester vite fait avec mon composant installé, ces évènements sont bien pris en compte. Ils apparaissent dans l'inspecteur d'objet et réagissent normalement.
Je suis quand même troublé par l'ordre dans lequel les évènements sont détectés :
1: PulseButton1MouseDown
2: PulseButton1MouseUp
3: PulseButton1Pulse
Ca me parait assez bizarre au premier abord, bien que ça ne soit pas gênant : j'aurais pensé que Pulse aurait lieu avant Up. Enfin... je creuserai ça plus tard.
Ton commentaire m'encourage à aller plus loin.
D'autres composants gagneraient en ergonomie en utilisant ce TPulseButton. Je pense en particulier au TSpinEdit qu'il serait intéressant de recréer, ou au TMonthCalendar, et d'autres encore.
Merci à tous pour vos commentaires dont je tiens compte, soyez en sûrs, dans l'évolution et la finalisation de ce composant.
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 30 oct. 2006 à 09:59
salut,
en ce qui conserne inc(), c'est sensé être plus rapide. Je m'en sert dans les boucles, pour le rest je me dis que la différence doit même pas être mesurable.
"Si la 1ère condition n'est pas satisfaite, la 2ème ne sera pas testée," hum. si tu fait un AND, cela dépendra des directive de compiltation (evaluation boolean complet). Si tu fait deux if then, le deuxième ne serra pas évaluer si le premier est faux.
je trouve ton compo très sympa, et de plus c'est une super idée. Je déplore juste que tu "bloque" l'utilisation de OnMouseDown et Up. Pourquoi n'as tu pas fait un override de MouseDown?
bon code,
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 30 oct. 2006 à 00:27
f0xi:
Tu me suggères donc de remplacer
if Assigned(FOnPulse) then
if ssLeft in Shift then...
par
if Assigned(FOnPulse) and (ssLeft in Shift) then...
Si la 1ère condition n'est pas satisfaite, la 2ème ne sera pas testée, ok, ok... Mais je ne vois pas où le code serait optimisé par rapport à ma manière de procéder ?
Et tu me proposes de remplacer :
FRythm := FRythm + 1
par
inc(FRythm)
Même réflexion. J'utilise parfois, ou n'utilise pas Inc(), bien qu'en connaissant l'usage, car je ne suis pas forcément convaincu de l'avantage procuré par son utilisation...
Delphyprog :
Bon, j'ai pas trop la phryte en ce moment, le décalage horaire sans doute. Ce n'est pas une raison pour en prophyter et pour essayer de me faire péter la honte devant tout le monde, mdr...
De toute manière, je fais exprès de laisser quelques fautes par ci par là, pour ne pas te phyler trop de complexes ^^.
Ouais, pour RYTHM_MAX, j'ai dû me perdre en route, je ne me rappelle plus la logique qui me l'a fait déclarer en var...
Sinon, diantre, pourquoi m'affirmes-tu que les corrections données par f0xi sont indispensables ?
Caribensila :
Merci de prendre ma défense. Delphiprog est parfois un peu cruel avec nous, mais que veux-tu, ça l'aide a maintenir son ego intact. Il en a besoin afin de continuer dans sa dure tache d'admin d'un site qui sans lui partirait à vau-l'eau ^^...
Oui, la réalisation de composants, je pense qu'on peut plus s'arrêter de néophyter dès qu'on a commencé.
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 29 oct. 2006 à 23:03
Merci Japee. Tu nous offres :
1) L'envie de néophyter en création de composant.
2) Un joli exemple pour commencer à néophyter.
-> Delphiprog:
Pardon pour le néologisme (néophyter).
Mais si tu te mets à corriger les fautes d'orthographe, on n'a pas fini de "se faire appeler Arthur".
Étymologie de cette expression:
De l'allemand acht Uhr (« huit heures »), pendant la Seconde Guerre mondiale, en France occupée, le couvre-feu était à huit heures du soir. Les patrouilles allemandes avaient donc pour habitude de prévenir les retardataires en leur indiquant leur montre et en leur disant « acht Uhr ! », la sagesse populaire et le fort niveau en langue d'outre-Rhin des Français a fait le reste.
PS: Au fait, avez-vous mis vos pendules à l'heure d'hiver?
;)
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 29 oct. 2006 à 19:11
Mince, Japee qui fait une faute d'orthographe ? :p
> néophyte
(nom commun)
Nom donné anciennement dans l'Eglise aux nouveaux chrétiens.? Adepte nouveau d'une religion, d'une doctrine, d'un parti, etc.
Bon passons sur le définition (quoique...) et restons concentrés sur l'orthographe.
Les corrections données par Foxi (if Assigned(FOnPulse) ...) sont indispensables et je ne vois rien de plus à ajouter.
Pourquoi avoir déclaré RYTHM_MAX comme variable si elle n'est jamais affectée dans le reste du code ?
Sinon, l'idée est intéressante et apporte un petit plus au composant TSpeedButton un peu trop...statique !
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 29 oct. 2006 à 18:05
procedure TPulseButton.TimerProgressTimer(Sender: TObject);
begin
if Assigned(FOnPulse) then begin
FProgress.Interval := PROGRESS_INTERVAL div FRythm;
if FRythm < RYTHM_MAX then { jusqu'à Interval = 10 }
inc(FRythm);
FOnPulse(Self);
end;
end;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 29 oct. 2006 à 18:03
pas mal ...
procedure TPulseButton.PBMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Assigned(FOnPulse) and (ssLeft in Shift) then begin
FOnPulse(self);
FRythm := RYTHM_MIN;
FProgress.Enabled := True;
end;
inherited;
end;
procedure TPulseButton.TimerProgressTimer(Sender: TObject);
begin
if Assigned(FOnPulse) then begin
FProgress.Interval := PROGRESS_INTERVAL div FRythm;
if FRythm < RYTHM_MAX then { jusqu'à Interval = 10 }
inc(FRythm);
end;
end;
14 nov. 2006 à 18:02
14 nov. 2006 à 18:00
De plus, je te rapelle que si on se fie à nos descriptifs "codes sources", je suis nettement plus croulant et décrépi que toi avec près de 105 années :)
Bon j'avoue, j'ai un peu menti sur mon âge ... Mais bon, on m'a toujours dit que les femmes aimaient les gens plus agés qu'elles, alors j'ai mis le paquet :p
Bon trève de flood, je sort ->
14 nov. 2006 à 15:52
Bon, maintenant tout le monde sait que je suis un vieillard atrabilaire.
Moi qui passait sur ce forum pour un mec sympa et cool, tu as définitivement ruiné ma réputation... ^^
Merci pour tes voeux :-)
P-S : il n'empêche, ton orthographe, maintenant, tu n'as pas trop à en rougir, hein ?
(tu n'as pas fait plus de 3 fautes, et encore, si tu t'étais arrêté à "je suis persuadé d'en avoir déjà laissé une ou deux dans ces simples lignes", tu n'en aurais que 2, mdr...)
A +
japee
14 nov. 2006 à 14:12
Je me rapelle que, dans mon enfance, j'ai eu une longue série de lignes à écrire qui ressemblait étrangement :
"Je ne ferai plus de fautes d'orthographe à orthographe".
Quand je vois JAPEE, mon cher père, écrire "phaute d'ortografe", je peux vous assurer que je ne peux rester de glace :) Bon j'en dirai pas plus, je suis persuadé d'en avoir déjà laissé une ou deux dans ces simples lignes (malgrès une relecture minutieuse).
Celà étant, même si ici n'est pas la place pôur ce genre de discussion, bon anniversaire Japy !
31 oct. 2006 à 19:17
Tu me confirmes que ce composant peut avoir une utilité, j'en suis ravi.
Pour la led clignotante, je me trompe peut-être, mais je préfère laisser au développeur qui utiliserait mon TPulseButton la possibilité de lui affecter selon son choix 2 glyphs de leds (On et Off) qui seraient activées sur les évènements OnPulse (On) et MouseUp (Off), par exemple.
Par contre, je compte utiliser à terme ce bouton dans d'autres composants.
Merci pour ton appréciation. :-)
A +
31 oct. 2006 à 19:02
- certaines sources de m... qui ont pris 2 secondes et demi (le "et demi" est important, si si) se retrouvent avec des 9/10 ou 10/10, avec des "trop fort", "trop cool".
- Des sources très interessantes mais souvent incomplètes car ce sont des sources très complexes et de longue halaine (avec plusieurs mises à jour) se font massacrer par les "néophytes" (lol) de delphi qui pensent qu' ils sont des pros de la programmation : "Hein? pourquoi tu fais comme ça alors que comme ça c' est mieux ... Ça dégoute celui qui a fait l' effort alors que celui qui met un 3/10 le fait pour dire aux autres qu' il est meilleur quelque part mais on sait pas trop oú ...
Sur ce, et ne voulant pas relancer le débat des notes ... bravo à toi Japee, pas de note donc mais tu as compris ce que j' en pensais!
A+
31 oct. 2006 à 18:50
je te dis tout de suite que je n' ai pas compilé la source, j' ai juste regarder le code...
D' abord, je dois dire que j' en ai déjà eu besoin d' un compo comme celui-ci!
Il y a juste un truc qui à mon avis peut-être amélioré: il faudrait un effet visuel sur le bouton provoqué par le OnTimer, genre, changement de couleur, je pensais à un Bouton type Led qui clignoterait.
Oui je sais, le compo descend de TSpeedButton donc, à moins de réecrire le Onpaint ...
Bref, bravo!
31 oct. 2006 à 12:41
"Que ce passe-il si je set l'event à nil dans un des event?"
Oui, en effet. Tu viens de m'éclairer sur un point que je n'avais pas encore complètement assimilé. Merci, je vais corriger.
31 oct. 2006 à 12:03
2x "If then" vs AND:
J'ai pas du être très clair, mais je n'ai pas d'avis absolu sur ce genre de cas. Je ne faisssait que souligner que le comportement dépend des directive de compilation et donc le "gain" (hum, quel gain, un cycle machine, peut-être même moins) aussi.
Dans ce cas c'est pas important. Cela devient très important quand tu fais appel a des functions ou quand le deuxième test raise si le premier est faux.
Au temps que possible, je pense qu'il vaut mieux être indépendant des directives de compilation. Mais dans ce cas,.. pfff pour ce que ça change...
Sinon, un détail pour rendre ton code plus sur:
# procedure TPulseButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
# begin
# inherited;
# if Assigned(FOnPulse) then <-- a supprimer.
# FProgress.Enabled := False;
# end;
# procedure TPulseButton.TimerProgressTimer(Sender: TObject);
# begin
# FProgress.Interval := PROGRESS_INTERVAL div FRythm;
# if FRythm < RYTHM_MAX then { jusqu'à Interval = 10 }
# Inc(FRythm);
# if Assigned(FOnPulse) then <-- a ajouter
# FOnPulse(self);
# end;
je m'explique: Que ce passe-il si je set l'event à nil dans un des event? tu pourrais ne jamais desactiver le timer!
et donc, t'aurra des AV dans le OnTimer.
De plus, C'est pas important si tu reset timer.enabled pour rien.
bon code,
31 oct. 2006 à 00:06
Si vous voyez autre chose, mais je crois que là j'approche du but.
Je reverrai peut-être la progression du rythme, ça me parait un peu nerveux au départ.
Et j'appliquerai peut-être la suggestion de JulioDelphi...
Mais bon, je fais une pause.
Bonne nuit ^^
30 oct. 2006 à 22:06
Cirec : ouais, c'est clair que si j'étais moitié aussi fort en prog qu'en orthographe...
D'ailleurs, à ce propos...
Loda : mais oui ! Tu as raison, je bloque OnMouseDown et OnMouseUp. Ca m'avait totalement échappé, je pensais m'en sortir facile avec inherited...
C'est génial de l'avoir remarqué, c'est exactement LA critique que j'attendais, lol.
C'est corrigé chez moi, ça marche au poil, dès que j'ai mis ça au propre, je balance la nouvelle mouture.
Et j'en prophyterait pour corrigé la phaute d'ortografe.
A + !
30 oct. 2006 à 13:04
tu peux en faire une version de composant non visible ? pour ne pas avoir a reinstaller un 321654754eme bouton ?
regarde mon composant "TdbpDefaultButton" il prends en charge les BitBtn, SpeedButton et Button, comme ça, on install pas un autre bouton :p (par contre on pose sur la fiche le bouton de son choix + mon compo)
hs : je connaissait pas l'expression avec Arthur, mais je la garde, je la trouve excellente =)
30 oct. 2006 à 11:29
venant de Japee je pense plus à une faute d'ynnatention ;-)
@Delphiprog : "passons sur le définition"
définition n'est plus féminin ?
comme quoi personne n'est infaillible ... ^_^
bon restons serieux.
je suis du même avis que Loda quand à l'utilisation de deux If ...
et
procedure TPulseButton.TimerProgressTimer(Sender: TObject);
begin
FProgress.Interval := PROGRESS_INTERVAL div FRythm;
if FRythm < RYTHM_MAX then { jusqu'à Interval = 10 }
inc(FRythm);
FOnPulse(Self);
end;
suffit amplement:
puisque TimerProgressTimer n'est appelé que si le Timer est Enable
et le Timer est Enable que si FOnPulse est assigné
Donc pas de modifications indispensables ... ;-)
toujours verifier par vous même
@+
Cirec
30 oct. 2006 à 11:19
tout à fait d'accord avec toi quand à la directive de compilation pour le AND : raison de plus pour ne pas y voir un avantage par rapport à IF THEN. Je reste donc sur ma position ;-)
Par contre,je ne comprend pas vraiment où l'utilisation de OnMouseDown et OnMouseUp sont bloquées...
Je viens de tester vite fait avec mon composant installé, ces évènements sont bien pris en compte. Ils apparaissent dans l'inspecteur d'objet et réagissent normalement.
Je suis quand même troublé par l'ordre dans lequel les évènements sont détectés :
1: PulseButton1MouseDown
2: PulseButton1MouseUp
3: PulseButton1Pulse
Ca me parait assez bizarre au premier abord, bien que ça ne soit pas gênant : j'aurais pensé que Pulse aurait lieu avant Up. Enfin... je creuserai ça plus tard.
Ton commentaire m'encourage à aller plus loin.
D'autres composants gagneraient en ergonomie en utilisant ce TPulseButton. Je pense en particulier au TSpinEdit qu'il serait intéressant de recréer, ou au TMonthCalendar, et d'autres encore.
Merci à tous pour vos commentaires dont je tiens compte, soyez en sûrs, dans l'évolution et la finalisation de ce composant.
30 oct. 2006 à 09:59
en ce qui conserne inc(), c'est sensé être plus rapide. Je m'en sert dans les boucles, pour le rest je me dis que la différence doit même pas être mesurable.
"Si la 1ère condition n'est pas satisfaite, la 2ème ne sera pas testée," hum. si tu fait un AND, cela dépendra des directive de compiltation (evaluation boolean complet). Si tu fait deux if then, le deuxième ne serra pas évaluer si le premier est faux.
je trouve ton compo très sympa, et de plus c'est une super idée. Je déplore juste que tu "bloque" l'utilisation de OnMouseDown et Up. Pourquoi n'as tu pas fait un override de MouseDown?
bon code,
30 oct. 2006 à 00:27
Tu me suggères donc de remplacer
if Assigned(FOnPulse) then
if ssLeft in Shift then...
par
if Assigned(FOnPulse) and (ssLeft in Shift) then...
Si la 1ère condition n'est pas satisfaite, la 2ème ne sera pas testée, ok, ok... Mais je ne vois pas où le code serait optimisé par rapport à ma manière de procéder ?
Et tu me proposes de remplacer :
FRythm := FRythm + 1
par
inc(FRythm)
Même réflexion. J'utilise parfois, ou n'utilise pas Inc(), bien qu'en connaissant l'usage, car je ne suis pas forcément convaincu de l'avantage procuré par son utilisation...
Delphyprog :
Bon, j'ai pas trop la phryte en ce moment, le décalage horaire sans doute. Ce n'est pas une raison pour en prophyter et pour essayer de me faire péter la honte devant tout le monde, mdr...
De toute manière, je fais exprès de laisser quelques fautes par ci par là, pour ne pas te phyler trop de complexes ^^.
Ouais, pour RYTHM_MAX, j'ai dû me perdre en route, je ne me rappelle plus la logique qui me l'a fait déclarer en var...
Sinon, diantre, pourquoi m'affirmes-tu que les corrections données par f0xi sont indispensables ?
Caribensila :
Merci de prendre ma défense. Delphiprog est parfois un peu cruel avec nous, mais que veux-tu, ça l'aide a maintenir son ego intact. Il en a besoin afin de continuer dans sa dure tache d'admin d'un site qui sans lui partirait à vau-l'eau ^^...
Oui, la réalisation de composants, je pense qu'on peut plus s'arrêter de néophyter dès qu'on a commencé.
29 oct. 2006 à 23:03
1) L'envie de néophyter en création de composant.
2) Un joli exemple pour commencer à néophyter.
-> Delphiprog:
Pardon pour le néologisme (néophyter).
Mais si tu te mets à corriger les fautes d'orthographe, on n'a pas fini de "se faire appeler Arthur".
Étymologie de cette expression:
De l'allemand acht Uhr (« huit heures »), pendant la Seconde Guerre mondiale, en France occupée, le couvre-feu était à huit heures du soir. Les patrouilles allemandes avaient donc pour habitude de prévenir les retardataires en leur indiquant leur montre et en leur disant « acht Uhr ! », la sagesse populaire et le fort niveau en langue d'outre-Rhin des Français a fait le reste.
PS: Au fait, avez-vous mis vos pendules à l'heure d'hiver?
;)
29 oct. 2006 à 19:11
> néophyte
(nom commun)
Nom donné anciennement dans l'Eglise aux nouveaux chrétiens.? Adepte nouveau d'une religion, d'une doctrine, d'un parti, etc.
Bon passons sur le définition (quoique...) et restons concentrés sur l'orthographe.
Les corrections données par Foxi (if Assigned(FOnPulse) ...) sont indispensables et je ne vois rien de plus à ajouter.
Pourquoi avoir déclaré RYTHM_MAX comme variable si elle n'est jamais affectée dans le reste du code ?
Sinon, l'idée est intéressante et apporte un petit plus au composant TSpeedButton un peu trop...statique !
29 oct. 2006 à 18:05
begin
if Assigned(FOnPulse) then begin
FProgress.Interval := PROGRESS_INTERVAL div FRythm;
if FRythm < RYTHM_MAX then { jusqu'à Interval = 10 }
inc(FRythm);
FOnPulse(Self);
end;
end;
29 oct. 2006 à 18:03
procedure TPulseButton.PBMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Assigned(FOnPulse) and (ssLeft in Shift) then begin
FOnPulse(self);
FRythm := RYTHM_MIN;
FProgress.Enabled := True;
end;
inherited;
end;
procedure TPulseButton.TimerProgressTimer(Sender: TObject);
begin
if Assigned(FOnPulse) then begin
FProgress.Interval := PROGRESS_INTERVAL div FRythm;
if FRythm < RYTHM_MAX then { jusqu'à Interval = 10 }
inc(FRythm);
end;
end;