Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TPULSEBUTTON - RÉPÉTITION PROGRESSIVE D'UN EVENT PENDANT ONKEYDOWN


Information sur la source

Catégorie :Composants Classé sous : onkeypress, répéter, évènement, incrémenter, button Niveau : Débutant Date de création : 29/10/2006 Date de mise à jour : 31/10/2006 00:11:23 Vu / téléchargé: 3 276 / 354

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Ce qui fait l'intérêt de ce composant est l'évènement OnPulse.
Le rythme de OnPulse est progressif. Lent au départ, il s'accélère progressivement pour atteindre sa valeur maximale.
OnPulse est déclenché par OnMouseDown, et stoppé par OnMouseUp.
Une utilisation évidente de TPulseButton est l'incrémentation/décrémentation d'une valeur par l'utilisateur en phase d'exécution.
TPulseButton hérite de TSpeedButton.

Ce n'est pas tout à fait mon premier composant, bien que je sois assez néophyte en la matière, mais c'est le premier que je publie car il me semble offrir un intérêt ailleurs que dans mes bouts de programmes.
Bien qu'il soit très simple, je me suis efforcé de l'aborder avec rigueur.
Et je lui trouve une certaine utilité : je commence personnellement à en coller partout, lol.

Je peaufinerai peut-être les valeurs concernant le rythme, mais il me semble qu'elles sont plutôt satisfaisantes.

Vous pouvez tester ce composant sans l'installer, avec le programme de démonstration.
Si vous l'installez, vous trouverez un fichier .dcr pour l'icône.
N'hésitez pas à critiquer, je poste un peu pour ça...


Modifications du 30 octobre 2006 :

- déclaré RYTHM_MAX en constante (merci à Delphiprog)
- "FRythm := FRythm + 1" modifié vers => "Inc(FRythm)" (merci à f0xi)
- débloqué l'utilisation de OnMouseDown et OnMouseUp (merci à Loda)
J'ai également modifié la position de inherited dans OnMouseDown et OnMouseUp,
ça me semble finalement plus logique, mais ça se discute.
Merci à Caribensila, Cirec et JulioDelphi pour leurs commentaires et
encouragements.
Merci à l'eau du robinet.


 

Source

  • unit PulseBtn;
  • interface
  • uses Buttons, ExtCtrls, Classes, Controls;
  • type
  • TPulseButton = class(TSpeedButton)
  • private
  • FProgress: TTimer;
  • FRythm: Integer;
  • FOnPulse: TNotifyEvent;
  • procedure TimerProgressTimer(Sender: TObject);
  • protected
  • procedure MouseDown(Button: TMouseButton;
  • Shift: TShiftState; X, Y: Integer); override;
  • procedure MouseUp(Button: TMouseButton;
  • Shift: TShiftState; X, Y: Integer); override;
  • public
  • constructor Create(AOwner: TComponent); override;
  • destructor Destroy; override;
  • published
  • property OnMouseDown;
  • property OnMouseUp;
  • property OnPulse: TNotifyEvent read FOnPulse write FOnPulse;
  • end;
  • procedure Register;
  • implementation
  • const
  • RYTHM_MIN: Integer = 2; { Valeur initiale de FRythm }
  • RYTHM_MAX: Integer = 31; { FRythm = (PROGRESS_INTERVAL div par 10) + 1 }
  • PROGRESS_INTERVAL: Integer = 300; { Valeur initiale de FProgress.Interval }
  • constructor TPulseButton.Create;
  • begin
  • inherited;
  • FProgress := TTimer.Create(self);
  • FProgress.Interval := PROGRESS_INTERVAL; // <- évite un temps mort
  • FProgress.Enabled := False;
  • FProgress.OnTimer := TimerProgressTimer;
  • end;
  • destructor TPulseButton.Destroy;
  • begin
  • FProgress.Free;
  • inherited Destroy;
  • end;
  • 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;
  • procedure TPulseButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  • begin
  • inherited;
  • if Assigned(FOnPulse) then
  • if ssLeft in Shift then
  • begin
  • FOnPulse(self);
  • FRythm := RYTHM_MIN;
  • FProgress.Enabled := True;
  • end;
  • end;
  • procedure TPulseButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  • begin
  • inherited;
  • if Assigned(FOnPulse) then
  • FProgress.Enabled := False;
  • end;
  • procedure Register;
  • begin
  • RegisterComponents('Japee', [TPulseButton]);
  • end;
  • end.
unit PulseBtn;

interface

uses Buttons, ExtCtrls, Classes, Controls;

type
  TPulseButton = class(TSpeedButton)
  private
    FProgress: TTimer;
    FRythm: Integer;
    FOnPulse: TNotifyEvent;
    procedure TimerProgressTimer(Sender: TObject);
  protected
    procedure MouseDown(Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property OnMouseDown;
    property OnMouseUp;
    property OnPulse: TNotifyEvent read FOnPulse write FOnPulse;
  end;

procedure Register;

implementation

const
  RYTHM_MIN: Integer = 2;   { Valeur initiale de FRythm }
  RYTHM_MAX: Integer = 31;  { FRythm = (PROGRESS_INTERVAL div par 10) + 1 }
  PROGRESS_INTERVAL: Integer = 300;   { Valeur initiale de FProgress.Interval }

constructor TPulseButton.Create;
begin
  inherited;
  FProgress           := TTimer.Create(self);
  FProgress.Interval  := PROGRESS_INTERVAL;   // <- évite un temps mort
  FProgress.Enabled   := False;
  FProgress.OnTimer   := TimerProgressTimer;
end;

destructor TPulseButton.Destroy;
begin
  FProgress.Free;
  inherited Destroy;
end;

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;

procedure TPulseButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  inherited;
  if Assigned(FOnPulse) then
    if ssLeft in Shift then
    begin
      FOnPulse(self);
      FRythm := RYTHM_MIN;
      FProgress.Enabled := True;
    end;
end;

procedure TPulseButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  inherited;
  if Assigned(FOnPulse) then
    FProgress.Enabled := False;
end;

procedure Register;
begin
  RegisterComponents('Japee', [TPulseButton]);
end;

end.

Conclusion

Fait sous D4 pro.
En principe compatible avec toute version ultérieure (tant qu'il y aura des TSpeedButtons, lol).
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

30 octobre 2006 23:48:44 :
Les évènements OnMouseDown et OnMouseUp sont maintenant accessibles (merci à Loda). Nouveau fichier .dcr (glyph plus joli avec un petit coeur qui pulse, lol)
31 octobre 2006 00:11:23 :
Petite erreur dûe au copier-coller, rien de grave.

Commentaires et avis

signaler à un administrateur
Commentaire de f0xi le 29/10/2006 18:03:44 administrateur CS

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;

signaler à un administrateur
Commentaire de f0xi le 29/10/2006 18:05:29 administrateur CS




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;

signaler à un administrateur
Commentaire de Delphiprog le 29/10/2006 19:11:30 administrateur CS

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 !

signaler à un administrateur
Commentaire de Caribensila le 29/10/2006 23:03:09

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?

;)

signaler à un administrateur
Commentaire de japee le 30/10/2006 00:27:11 administrateur CS

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é.

signaler à un administrateur
Commentaire de Loda le 30/10/2006 09:59:32

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,

signaler à un administrateur
Commentaire de japee le 30/10/2006 11:19:52 administrateur CS

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.

signaler à un administrateur
Commentaire de cirec le 30/10/2006 11:29:56 administrateur CS

Salut,

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

signaler à un administrateur
Commentaire de JulioDelphi le 30/10/2006 13:04:48 administrateur CS

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 =)

signaler à un administrateur
Commentaire de japee le 30/10/2006 22:06:50 administrateur CS

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 + !

signaler à un administrateur
Commentaire de japee le 31/10/2006 00:06:03 administrateur CS

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 ^^

signaler à un administrateur
Commentaire de Loda le 31/10/2006 12:03:02

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,

signaler à un administrateur
Commentaire de japee le 31/10/2006 12:41:28 administrateur CS

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.

signaler à un administrateur
Commentaire de MAURICIO le 31/10/2006 18:50:45

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!

signaler à un administrateur
Commentaire de MAURICIO le 31/10/2006 19:02:49

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+

signaler à un administrateur
Commentaire de japee le 31/10/2006 19:17:55 administrateur CS

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 +

signaler à un administrateur
Commentaire de psycho81 le 14/11/2006 14:12:44

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 !

signaler à un administrateur
Commentaire de japee le 14/11/2006 15:52:33 administrateur CS

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

signaler à un administrateur
Commentaire de psycho81 le 14/11/2006 18:00:19

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 ->

signaler à un administrateur
Commentaire de psycho81 le 14/11/2006 18:02:54

euh ... sors :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

OnKeyPress les constantes ne sont pas reconnues [ par MasterJ ] Salut sur l'event onKeyPress, je fais ceci : if not(Key in ['0'..'9','.',Key_Return,Key_Backspace]) then Key:=#0;j'ai pourtant bien importer le unit q Ajouter OnKeyPress à un TPaintBox [ par jlg75 ] J'utilise un TPaintBox pour un programme de dessin, je voudrais qu'il réagisse à l'événement OnKeyPress (ou OnKeyDown) pour sortir de la fonction dess Button envoyan vers une page web ??? [ par Niala ] Salut, comment je fais pour mettre un boutons vers un site internet explorer.ex: je cree un boutton je clik decu et quesque jecrit???merci de me repon Button envoyan vers une page web ??? [ par Niala ] Salut, comment je fais pour mettre un boutons vers un site internet explorer.ex: je cree un boutton je clik decu et quesque jecrit???merci de me repon creation de button sans le declarer [ par g0belin ] voila j'aimerai faire quelque chose comme sa :var i:integer;beginfor i:=1 to 10 do begin Tbutton(inttostr(i)).create; end;je sais que c'est possi Button Hide or Show [ par Ark1 ] Hello all,Enfait j'ai fait un programme qui nécessite en fonction du moment soit l'affichage de tout les boutons (16) ou le "hide" de tout les boutons OnFormCreate --> problème [ par stailer ] Salut,J'ai un problème avec l'évènement onformcreate.En effet, si je fais par exemple :if (a &gt; 5) then form1.freej'ai droit à un superbe message Activer / desactiver un évènement [ par vagabon ] Bonjour,Comment faire pour Activer et desactiver un évènement ? par exemple OnChange sur une combo ? Merci Vag Comen répéter une video automatiquement d'un Tmediaplayer [ par Animax77 ] Voila mon pb: je sui en train de faire un jeu, et en fon, je voudrai metre une video, donc j'ai un Panel en fond dan lekel il y a la video, mai dès ke [composant] TShellChangeNotifier [ par adelavarenne ] Salut,je voudrais utiliser le composant TShellChangeNotifier mais je ne trouve pas grand chose dans l'aide et je galère grave.Voila je veux déclencher


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,72 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS