PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

Version : 19.0

WinDevWebDev - Code ServeurWebDev - Code NavigateurWinDev MobileEtats et RequêtesWindowsLinuxWindows MobileWindows PhoneWindows Store appsAndroidWidget AndroidiPhone/iPadJavaPHPAjaxCode Utilisateur (MCU)Langage ExterneHFSQLHFSQL Client/ServeurProcédures stockéesHyper File 5.5OLE DBODBCAccès Natifs
Timer (Fonction)
En anglais : Timer

Appelle périodiquement et automatiquement une procédure du WLangage. Utilisée dans la procédure, la fonction Timer permet d'identifier le timer qui a lancé la procédure.

On appelle timer la séquence d'appel périodique d'une procédure. Cet appel périodique sera stoppé grâce à la fonction FinTimer.

WinDevWinDev Mobile L'utilisation de procédures automatiques permet d'éviter l'utilisation de la fonction Timer. Pour plus de détails, consultez les procédures automatiques.
Exemple
// Procédure permettant l'affichage régulier de l'heure dans SAI_HEURE1
PROCEDURE AFFICH_HEURE()
SAI_HEURE1 = HeureSys()

// Traitement à l'ouverture de la fenêtre / de la page
// AFFICH_HEURE sera automatiquement appelée chaque seconde
SI Timer("AFFICH_HEURE", 100, 1) = 0 ALORS
        Erreur("Création du timer impossible")
FIN

Syntaxe

Lancer périodiquement une procédure Masquer les détails

<Résultat> = Timer(<Nom de la procédure> , <Fréquence> [, <Numéro>])
<Résultat> : Entier
  • Numéro du timer ouvert (<Numéro> si ce paramètre a été précisé),
  • 0 si le timer n'a pas pu être ouvert.
<Nom de la procédure> : Chaîne de caractères
Nom de la procédure WLangage à lancer périodiquement.
<Fréquence> : Entier
Temps (en centièmes de seconde) entre deux appels à la procédure par timer. La précision de la fréquence dépend de l'état d'attente du système.
<Numéro> : Entier optionnel
Numéro imposé du timer. Si ce paramètre est précisé, le numéro du timer sera le numéro choisi. Si ce numéro correspond à un timer existant, il sera arrêté et remplacé par le nouveau timer.

WebDev - Code Navigateur Ce paramètre n'est pas disponible. Dans cette version, il n'est pas possible d'imposer un numéro au timer. Si le timer doit être arrêté par programmation avant la fermeture de la page, il est nécessaire de mémoriser le numéro du timer (paramètre <Résultat>) afin de l'utiliser dans la fonction FinTimer.
WinDevWebDev - Code ServeurWinDev MobileEtats et RequêtesCode Utilisateur (MCU)

Connaître le numéro du timer Masquer les détails

<Résultat> = Timer()
<Résultat> : Entier
Numéro du timer qui a appelé la procédure en cours.

Remarques
WinDevWinDev MobileEtats et RequêtesWindowsWindows MobileCode Utilisateur (MCU)

Différences entre les fonctions Timer et TimerSys

  • La fonction Timer permet d'utiliser un timer géré par WinDev. Dans ce cas, la fréquence d'appel est calculée à partir du moment où l'appel du timer a été effectué.
  • La fonction TimerSys permet d'utiliser un timer géré par le système. Dans ce cas, la fréquence d'appel est calculée à partir de l'instant de la fin de l'exécution de la procédure.
Conseil : Dans la majorité des cas, utilisez la fonction TimerSys.
En effet, la fonction Timer consomme plus de ressources que la fonction TimerSys et ne fonctionne que lorsque des fenêtres WinDev sont en cours (le timer s'arrête si une boîte de message est affichée).
WinDevWinDev MobileEtats et RequêtesWindowsWindows MobileCode Utilisateur (MCU)

Opérations bloquantes ou non

  • Un timer n'est pas bloqué par l'ouverture des menus, l'ouverture d'une fenêtre, l'ouverture des fenêtres des fonctions Avertissement, Confirmer, Erreur, Info, OKAnnuler et OuiNon.
  • Un timer est bloqué par les déplacements et les agrandissements de fenêtre.
WinDevWinDev MobileEtats et RequêtesWindowsWindows MobileCode Utilisateur (MCU)

Temps d'exécution de la procédure

Si le temps de traitement de la procédure appelée par le timer est supérieur au temps demandé entre chaque appel de la procédure, les appels du timer ne s'empilent pas : il n'y aura qu'un seul appel en attente.
WinDevWinDev MobileEtats et RequêtesWindowsWindows MobileCode Utilisateur (MCU)

Traitement d'appel du timer

  • Code de projet :
    • Si la fonction Timer est appelée dans un code du projet, le timer est associé au projet. Le timer est interrompu par la fonction FinTimer et par la fin de l'exécution de l'application. La procédure appelée par le timer doit être :
      • soit une procédure globale du projet : Timer ("<procédure globale>", 1000). Il n'est pas possible de passer des paramètres à la procédure appelée (utilisez des variables globales).
      • soit une méthode statique d'une classe : Timer("<class>::<méthode statique>", 1000)
    • Si la fonction Timer est utilisée dans le traitement d'ouverture du projet et si aucune fenêtre n'est ouverte, le timer sera valide sur tout le projet. Il est en attente et sera déclenché automatiquement dès qu'une fenêtre sera ouverte ou lors des appels à la fonction Multitache.
  • Code d'une fenêtre, d'un champ ou d'une procédure locale :
    Si la fonction Timer est appelée dans un code d'une fenêtre, d'un des champs de la fenêtre ou d'une procédure locale de la fenêtre, le timer est associé à la fenêtre. Le timer est interrompu par la fonction FinTimer et par la fermeture de la fenêtre. La procédure appelé par le timer doit être :
    • soit une procédure locale de la fenêtre : Timer ("<procédure locale>", 1000). Il n'est pas possible de passer des paramètres à la procédure appelée (utilisez des variables globales).
    • soit une procédure globale du projet : Timer ("<procédure globale>", 1000). Il n'est pas possible de passer des paramètres à la procédure appelée (utilisez des variables globales).
    • soit une méthode statique d'une classe : Timer ("<class>::<méthode statique>", 1000)
  • Code d'une méthode statique de classe :
    Si la fonction Timer est appelée dans une méthode statique de classe, le timer est associé à la classe. Le timer est interrompu par la fonction FinTimer et par la fin d'exécution de l'application. La procédure appelée par le timer doit être :
    • soit une méthode statique de la classe : Timer ("::<méthode statique>", 1000)
    • soit une méthode statique d'une autre classe : Timer ("<class>::<méthode statique>", 1000)
    • soit une procédure globale du projet : Timer ("<procédure globale>", 1000)
  • Code d'une méthode d'un objet :
    Si la fonction Timer est appelée dans une méthode d'un objet, le timer est associé à l'objet. Le timer est interrompu par FinTimer ou par la libération de l'objet. La procédure appelée par le timer doit être :
    • soit une méthode non statique de l'objet : Timer ("<:méthode>", 1000)
    • soit une méthode statique de la classe de l'objet : Timer ("::<méthode statique>", 1000)
    • soit une méthode statique d'une autre classe : Timer ("<class>::<méthode>", 1000)
    • soit une procédure globale du projet : Timer ("<procédure globale>", 1000)
WebDev - Code NavigateurAjax

Traitement d'appel du timer

Si la fonction Timer est appelée dans un code d'une page, d'un des champs de la page ou d'une procédure locale navigateur de la page, le timer est associé à la page . Le timer est interrompu par :
  • la fonction FinTimer,
  • la validation de la page,
  • le remplacement de la page par une autre page dans le navigateur.
La procédure appelé par le timer doit être une procédure navigateur locale de la page : Timer ("<procédure locale>", 1000)
WinDevEtats et RequêtesWindowsCode Utilisateur (MCU)

Timer et fenêtres soeurs

Dans le cas de l'ouverture multiple d'une même fenêtre gérant un timer (fenêtres soeurs dans un MDI), il faut utiliser la fonction Timer sans préciser le numéro de timer. Ainsi, un numéro de timer sera automatiquement attribué à chaque fenêtre.
WinDevEtats et RequêtesWindowsCode Utilisateur (MCU)

Timer et Thread

Une procédure lancée par les fonctions Timer ou TimerSys à partir d'un thread secondaire (fonction ThreadExécute) ne sera pas appelée. En effet, un thread secondaire n'a pas d'interface (c'est-à-dire pas de fenêtre ouverte) : ce thread secondaire ne reçoit pas les messages du système (la "boucle de message") comme le thread principal de l'application.

WinDevWindows

Timer et service Windows

Pour utiliser la fonction Timer depuis un Service Windows, il est nécessaire d'appeler cette fonction à partir d'une fenêtre ouverte par le code du service.

Attention : Cette solution n'est pas conseillée. Pour répéter un traitement depuis un service, il est conseillé d'appeler ce traitement à partir du code du service (le code du service s'exécutant en boucle).

Liste des exemples associés :
WD Alarme Exemple Didactique (WinDev) : WD Alarme
[ + ] Cet exemple montre comment déclencher un message d'alerte dans la barre de titre de la fenêtre active (quelle que soit l'application).

Ce message peut éventuellement s'accompagner d'une alarme sonore.

Nous abordons les principaux thèmes suivants :
1/ Les fonctions systèmes (récupération du handle d'une fenêtre)
2/ Le déclenchement d'un traitement selon une fréquence donnée (les timers)
WD Ecran de veille Exemple Didactique (WinDev) : WD Ecran de veille
[ + ] Cet exemple illustre la réalisation d'un économiseur d'écran avec les fonctions WLangage.
Dans cet exemple, nous abordons les principaux thèmes suivants :
1/ l'appel périodique d'une procédure (les "timers")
2/ la gestion des événements Windows
3/ les fonctions système (appel d'API Windows)
Pour utiliser l'écran de veille :
- Renommer l'exécutable (.EXE) en .SCR
- Copier le fichier dans le répertoire de Windows (Ex: C:\WINDOWS)
- Ouvrir la fenêtre de propriétés d'affichage du bureau
- Choisir l'onglet "Ecran de Veille"
- Sélectionnez l'écran de veille généré avec WINDEV
WD Qui bloque Exemple Didactique (WinDev) : WD Qui bloque
[ + ] Cet exemple montre comment signaler aux utilisateurs d'une base de données HFSQL en réseau "qui" bloque un enregistrement inaccessible.

Dans cet exemple, nous abordons les principaux thèmes suivants :
1/ la gestion des accès concurrentiels
2/ le rafraîchissement automatique par timer
3/ la gestion d'un fichier "système" pour mémoriser des informations sur les verrous posés.

Résumé de l'exemple livré avec WinDev :
Cet exemple réalisé avec WinDev est composé de 2 projets :
- WD Qui bloque : application de test gérant un fichier "client" en réseau
- WD Superviseur blocages : outil d'aministration pour visualiser les verrous posés et éventuellement forcer un déblocage.
Un utilisateur peut avoir conservé une fiche de saisie ouverte depuis un certain temps ; ce qui risque de gêner les autres utilisateurs.
Le bouton 'Libérez SVP' permet d'envoyer un message à l'utilisateur concerné pour lui demander de libérer l'enregistrement.
Le bouton 'Débloquer !' permet de forcer le déblocage de l'enregistrement.
Attention : Cette opération va envoyer un message forçant la fermeture de l'application ayant effectué le blocage.
Gestion des timers Exemple unitaire (WinDev Mobile) : Gestion des timers
[ + ] Gestion des timers

Cet exemple didactique montre comment mettre en place un timer et permet de :
Démarrer un Timer
Exécuter un code à chaque appel du timer
Arrêter un timer
Pocket Chrono Exemple Pocket (WinDev Mobile) : Pocket Chrono
[ + ] Cet exemple montre comment réaliser un chronomètre pour un terminal mobile avec WinDev Mobile.
Dans cet exemple, un timer est utilisé pour afficher les aiguilles du chronomètre analogique, et pour afficher régulièrement le temps écoulé.
Gestion des timers Exemple unitaire (WebDev) : Gestion des timers
[ + ] Gestion des timers

Cet exemple didactique montre comment mettre en place un timer et permet de :
Démarrer un Timer
Exécuter un code à chaque appel du timer
Arrêter un timer
WW_DiapoFondu Exemple Didactique (WebDev) : WW_DiapoFondu
[ + ] Cet exemple montre comment réaliser un effet de fondu entre 2 images.
Cet exemple offre donc la possibilité de visionner des images présentes dans un répertoire donné avec un effet de fondu à chaque changement d'images.

Divers réglages sont disponibles :
- vitesse du fondu,
- lecture en boucle ou non,
- lecture aléatoire ou non,
- mode diaporama ou passage à l'image suivante ou précédente par clic.

Techniquement, l'effet de fondu est réalisé grâce à la fonctionnalité de transition sur un champ image WebDev et à un timer qui se charge de passer à l'image suivante à afficher (un timer navigateur pour la fluidité).
WWDiapo Exemple Didactique (WebDev) : WWDiapo
[ + ] Ce site réalisé avec WebDev est un diaporama de photographies du Cantal (15).
Les particularités de cet exemple sont :
- l'upload de fichiers,
- la gestion automatique des miniatures avec WebDev grâce au champ vignette,
- un timer navigateur qui permet de visualiser les photos en mode automatique.

Composantes
WinDevEtats et Requêtes wd190vm.dll
Windows Mobile wp190vm.dll
WebDev - Code Navigateur WDJS.DLL
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire