IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment exécuter une action dans x minutes ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut Comment exécuter une action dans x minutes ?
    Je souhaite afficher une boite de message 15 minutes après l'appui sur un bouton. Il faut employer Gettickcount mais quelle est la formule ?
    Me faut-il un Timer également ?

    D'avance Merci,

    Denis

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Tu as le choix:
    Soit tu utilises un Timer qui se déclenche au bout de 15 minutes (ou bien toutes les n secondes jusqu'à ce que les 15 minutes soient passées)
    Soit tu fais une boucle avec un GetTickCount et tu déclenches lorsque les 15 minutes sont passées.
    Par contre, l'utilisation d'une boucle avec GetTickCount va pas mal te bouffer des ressources Il faudrait que tu nous dises dans quel cadre tu voudrais faire ça.
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Un simple Timer fera l'affaire.
    Tu définis ton timer sur 15 minutes que tu actives (Enabled := True) lors de l'appui sur ton bouton.

    Ne pas oublier de désactiver le timer, si tu ne veux pas répéter l'évènement toutes les 15 mn.

    [Edit]
    Citation Envoyé par Pedro
    Il faudrait que tu nous dises dans quel cadre tu voudrais faire ça.
    Ouais, c'est pas bête ça !

    @+ Claudius

  4. #4
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Merci pour la réponse
    ok pour le timer. mais je met quoi comme code dans le Timer ?
    il faut que je détermine si les 15 minutes sont passées ou non

    il faut alors peut être comparer avec gettickCount non ?

    Denis

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Voici ce qu'il faut mettre dans ton Timer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    ShowMessage('Coucou');
    Timer1.Enabled:=false; // On arrête le Timer
    end;
    Et voici comment on le déclenche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Timer1.Enabled:=true;
    end;
    Il faut vérifier, en mode Design Time que le Timer à la propriété Enable à false pour éviter que l'événément se déclenche au lancement de l'application.

    Sinon, tu mets dans le OnCreate de ta forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Timer1.Enabled:=false;
    end;
    Ensuite, il faut s'assurer de bien avoir défini l'intervalle soit en Design Time en mettant la valeur 900000 à la propriété Interval du Timer, soit par code (que tu peux mettre dans le OnCreate) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Timer1.Interval:=900000; //15 minutes
    J'espère que celà répond à tes questions

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    OK grillé par ero-sennin !
    A part que j'inverserais les 2 instructions, comme cela si l'utilisateur est parti prendre un café le timer ne se redéclenche pas avant qu'il ne referme le dialogue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Timer1.Enabled:=false; // On arrête le Timer
      ShowMessage('Coucou');
    end;
    @+ Claudius

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Re,

    OK grillé par ero-sennin !
    A part que j'inverserais les 2 instructions, comme cela si l'utilisateur est parti prendre un café le timer ne se redéclenche pas avant qu'il ne referme le dialogue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Timer1.Enabled:=false; // On arrête le Timer
      ShowMessage('Coucou');
    end;
    @+ Claudius
    Exact ... Merci pour la "rectification"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] Exécuter une action dans une tâche
    Par jacksay dans le forum Symfony
    Réponses: 1
    Dernier message: 13/09/2011, 12h34
  2. [Ruby] Comment lancer une action dans le temps ?
    Par xse.down dans le forum Ruby
    Réponses: 1
    Dernier message: 10/10/2009, 13h06
  3. Réponses: 2
    Dernier message: 21/07/2008, 00h24
  4. Exécuter une action dans une action
    Par mattheox dans le forum Struts 1
    Réponses: 1
    Dernier message: 17/07/2008, 15h44
  5. Réponses: 6
    Dernier message: 03/10/2007, 21h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo