begin process at 2012 02 11 07:04:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Compte à rebours


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Compte à rebours

mardi 12 mai 2009 à 18:21:22 | Compte à rebours

silversword666


Bonsoir,

Je tente dans un programme, d'utiliser un compte à rebours de 5 minutes, avec affichage de ce compte à rebours et au bout des 5 minutes, une impossibilité d'écrire dans un TEdit.
Pour la partie interdiction d'écrire dans le TEdit, je devrais m'en sortir, mais est-il possible de créer un compte à rebours avec un TTimer ou dois-je créer une fonction?

Merci d'avance pour vos réponses et bonne soirée!
Cordialement,
SSW666.
mardi 12 mai 2009 à 18:43:27 | Re : Compte à rebours

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Oui, utilise un timer, c'est le plus simple. Mais un entier comme champ privé de ta form et décrémente le dans le timer.

type
  TForm1 = class(TForm)
  private
    nCount: Integer;
  end;


mardi 12 mai 2009 à 18:46:39 | Re : Compte à rebours

f0xi

Membre Club Administrateur CodeS-SourceS


const
  MaxCounter = 5*60; // 5 minutes

var
  Counter : cardinal =  0;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 1000;
  Timer1.Enabled := false;
end;

procedure TForm1.EvenementQuiDeclancheLeCompteARebour(Sender: TObject);
begin
  Counter := 0;
  Timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // incremente de 1 toute les secondes le compteur
  inc(Counter);

  // affichage du compteur
  LabelCounter.Caption := format('%.2d:%.2d',[Counter div 60, Counter mod 60]);

  // Si compteur = 5 minutes
  if Counter = MaxCounter then
  begin
    Timer1.Enabled := false;
    ProcedureQuiDesactiveLEdit;
  end; 
end;
 




mardi 12 mai 2009 à 18:53:37 | Re : Compte à rebours

ni69

Membre Club
Plutôt que de créer des variables globales, autant mettre la valeur de compteur dans la propriété Tag du TEdit et décrémenter jusqu'à 0.
Et pour l'interdiction d'écriture, faire :
Edit.ReadOnly := true;

@+
Nico { www.ni69.info }
mercredi 13 mai 2009 à 11:19:58 | Re : Compte à rebours

silversword666

Bonjour,

Dans un premier temps, merci pour vos réponses!

Voici ce que donne mon code pour le moment :



unit Saisie;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, ExtCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Fichier1: TMenuItem;
    Nouveau1: TMenuItem;
    Quitter1: TMenuItem;
    N1: TMenuItem;
    Apropos1: TMenuItem;
    Aide1: TMenuItem;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Edit1: TEdit;
    Timer1: TTimer;
    LabelCounter: TLabel;

    procedure Quitter1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: char);
    procedure FormCreate(Sender: TObject);
    procedure EvenementQuiDeclancheLeCompteARebour(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

   
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

const
  MaxCounter = 5*60; // 5 minutes

var
  Form1: TForm1;
  Chaine: string;
  Counter : cardinal =  0;


implementation

{$R *.dfm}


procedure TForm1.Quitter1Click(Sender: TObject);
begin
Application.Terminate;
end;


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  if Key = #13 then
  begin
    Chaine := Edit1.Text;
    Edit1.Clear;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 1000;
  Timer1.Enabled := false;
end;


procedure TForm1.EvenementQuiDeclancheLeCompteARebour(Sender: TObject);
begin
  Counter := 0;
  Timer1.Enabled := true;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // incremente de 1 toute les secondes le compteur
  inc(Counter);

  // affichage du compteur
  LabelCounter.Caption := format('%.2d:%.2d',[Counter div 60, Counter mod 60]);

  // Si compteur = 5 minutes
  if Counter = MaxCounter then
  begin
    Timer1.Enabled := false;
    Edit1.Enabled:=false;
  end;
end;


end.


Pour ce qui est du TForm1.Edit1KeyPress=>
La frappe de la touche Entrée ne fonctionne pas, lorsque j'appuie sur cette touche, j'ai un bip et rien ne se passe. J'ai créé un label test et rajouté une ligne LabelTest.caption:=Chaine; après Chaine := Edit1.Text; mais rien ne s'affiche.


Pour ce qui est de la partie Compte à rebours, je n'ai pas d'affichage de celui-ci et au bout des 5 minutes, le Edit1.Enabled ne passe pas à false. Est-ce que j'ai raté quelque chose?


dimanche 17 mai 2009 à 12:45:12 | Re : Compte à rebours

ni69

Membre Club
EvenementQuiDeclancheLeCompteARebour
Il ne suffit pas de l'écrire dans le code, il faut l'inclure dans l'inspecteur d'objets ou en faire un appel à partir d'un autre événement..
C'est valable aussi pour le OnKeyPress.

Il faut penser à lire ce que l'on te donne, tenter de le comprendre et penser à l'adapter à ton cas particulier, et non pas faire un copier/coller du code. Un conseil, prends un bon tutorial pour commencer à te familiariser avec la gestion des événements, sinon tu n'iras pas très loin en Delphi.

@+
Nico { www.ni69.info }


Cette discussion est classée dans : écrire, minutes, compte, tedit, rebours


Répondre à ce message

Sujets en rapport avec ce message

COMPTE À REBOURS [ par Pierre ] Commment créer un compte à rebours en Delphi ?Merci d'avance. tedit que des lettre [ par mandymoor ] boujour tous le monde j'ai besoin d'aide est ce que c'est possible dans un tedit de ne pas permettre la saisie des chiffres et des caractere speciaux copir coller [ par mandymoor ] bonjour tous le monde j'ai une application en delphi qui contient beaucoup de tedit ,combobox....je veux faire un copier coller dedans mais je n'y arr contôles sur les Tedit et Maskedit [ par mark15 ] bonjour, j'aide un ami dans le développement d'un système d'information pour son projet de fin d'études, si vous voulez m'aider SVP j'ai oublier comme Afficher nombre réel dans un Tedit [ par anil16 ] Salut a tous, Je suis débutante et cet question est peut être posée 100 fois mais j'ai pas trouvé mon bonheur sur google[^^sad2] ....en fait j'aimera Valeur modifiée lors d'une lecture d'un TEdit [ par Jean_Jean ] Bonjour, J'ai une procédure : Procedure Tform1.MaProc(Var aEditSize : TEdit;...) begin ... showmessage(aEditSize.Text); qui me donne -9999 lor comment pourais-je crée tedit a partir button [ par liquid7snake ] slt je suis un débutant svp aider moi ,je veux crée ou affiché dans ma form1 un edit a partir d'un button ou crée un button dans form1 a partir d'un b recherche dans dbgrid avec un TEdit [ par nraloux ] Salut, j'arrive pas a faire une recherche dynamique dans un dbgrid avec une requette du genre like % j'ai lu dans un sujet une reponse de Cantador qui écrire au milieu d'un fichier [ par Jordan59 ] Bonsoir tout le monde, Je cherche à écrire une ligne en plein milieu d'un fichier texte et je n'y parviens pas. Est-il réellement possible de le fair


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales