PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Présentation
  • Comment le faire ?
  • Automatiser une procédure
  • Automatiser une procédure
  • Cas des timers / Procédures différées
  • Cas des threads
  • Cas du thread principal
  • Remarques
  • Icône des procédures automatiques
  • Tableau récapitulatif
  • Option "A la fin de l'événement contenant l'appel"
  • Arrêter une procédure automatique
  • Procédure avec lancement automatique de threads
  • Programmation Orientée Objet (POO)
  • Limitation WEBDEV
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
La programmation des timers, des threads, des procédures différées est désormais automatique, gérée par l'environnement.
Au lieu de programmer les traitements et de les synchroniser par le code WLangage, il suffit de configurer les options d'automatisme de la procédure.
C'est la fin des fonctions TimerSys, Timer, ThreadExécute, ... Ces fonctions sont bien entendu toujours présentes pour compatibilité.
Voici quelques exemples de traitements définissables sans une seule ligne de code :
  • lancer une procédure toutes les 10 secondes (vérifier une boîte email, vérifier la présence d'un fichier sur le réseau, ...)
  • idem, mais en ne commençant que 5 minutes après le lancement du programme.
  • exécuter la procédure en tâche de fond (dans un thread), donc sans attendre sa valeur de retour.
Versions 18 et supérieures
WEBDEV - Code Serveur Ce mécanisme permet également d'exécuter des tâches planifiées et des tâches différées sur le Serveur d'Application WEBDEV. Pour plus de détails, consultez Tâches planifiées et tâches différées.
Nouveauté 18
WEBDEV - Code Serveur Ce mécanisme permet également d'exécuter des tâches planifiées et des tâches différées sur le Serveur d'Application WEBDEV. Pour plus de détails, consultez Tâches planifiées et tâches différées.
WEBDEV - Code Serveur Ce mécanisme permet également d'exécuter des tâches planifiées et des tâches différées sur le Serveur d'Application WEBDEV. Pour plus de détails, consultez Tâches planifiées et tâches différées.
Versions 19 et supérieures
Android Cette fonctionnalité est désormais disponible pour les applications Android.
Widget Android Cette fonctionnalité est désormais disponible en mode Widget Android.
Nouveauté 19
Android Cette fonctionnalité est désormais disponible pour les applications Android.
Widget Android Cette fonctionnalité est désormais disponible en mode Widget Android.
Android Cette fonctionnalité est désormais disponible pour les applications Android.
Widget Android Cette fonctionnalité est désormais disponible en mode Widget Android.
Versions 20 et supérieures
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV en Linux.
Nouveauté 20
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV en Linux.
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV en Linux.
Comment le faire ?

Automatiser une procédure

Pour automatiser une procédure :
  1. Affichez le code de la procédure.
  2. Affichez la fenêtre de description des automatismes de la procédure :
    • Cliquez sur l'icône Icône présente dans le bandeau de la procédure.
    • Sélectionnez l'option "Paramétrer les automatismes de la procédure" dans le menu contextuel de la procédure (volet "Explorateur de projet").
    • Sélectionnez l'option "Propriétés" du menu contextuel de la procédure dans le volet "Code".
  3. Dans la fenêtre qui s'affiche, sélectionnez les automatismes et leurs caractéristiques :
    • Exécution de la procédure :
      Exécution de la procédure
      Par défaut, la procédure est exécutée lors de chacun de ses appels.
      La procédure peut également être exécutée automatiquement après le code d'initialisation du projet (dans le cas d'une procédure globale) ou après le code d'initialisation de la fenêtre ou de la page (dans le cas d'une procédure locale).
    • Combien de fois :
      Combien de fois

      La procédure peut être exécutée :
      • une fois : la procédure s'arrêtera automatiquement après son exécution.
      • plusieurs fois : la procédure s'exécutera plusieurs fois d'affilé. Dans ce cas, il est possible d'espacer les exécutions de la procédure. Un timer sera donc mis en place automatiquement.
      • un nombre infini de fois : la procédure s'exécutera un nombre infini de fois. Dans ce cas, il est possible d'espacer les exécutions de la procédure. Un timer sera donc mis en place automatiquement.
        Si les exécutions sont espacées, il est possible de conserver ou non cet espacement pour les futurs appels de la procédure.
        Si cet espacement n'est pas conservé (option "Chaque appel suivant exécute une seule fois la procédure, sans timer"), lors d'un nouvel appel, la procédure s'exécutera une seule fois.
        Si cet espacement est conservé (option "Chaque appel suivant relance un nouveau timer"), lors d'un nouvel appel, la procédure s'exécutera un nombre infini de fois espacé de la durée indiquée.
        Remarque : Cette option doit être cochée si l'élément (fenêtre ou page) appelant la procédure est utilisé plusieurs fois simultanément (fenêtre et page interne par exemple).
    • Quand :
      Quand
      La procédure peut être exécutée :
      • immédiatement : la procédure est exécutée dès qu'elle est appelée dans le code et automatiquement après le code d'initialisation (si l'option "Exécution automatique après le code d'initialisation" a été cochée).
      • en différé : le procédure est exécutée après le délai spécifié.
        Si l'exécution est différée, il est possible de conserver ou non cette attente pour les futurs appels de la procédure.
        Si cette attente n'est pas conservée (option "Chaque appel suivant exécute une seule fois la procédure, sans timer"), lors d'un nouvel appel, la procédure s'exécutera immédiatement.
        Si cette attente est conservée (option "Chaque appel suivant relance un nouveau timer"), lors d'un nouvel appel, la procédure s'exécutera après le délai spécifié.
      • à la fin du traitement contenant l'appel : la procédure est exécutée lorsque le traitement contenant l'appel de la procédure est fini.
      • à la fin de l'événement contenant l'appel : la procédure est exécutée lorsque le traitement contenant l'appel de la procédure sera fini. Pour plus de détails, consultez le paragraphe "Option "A la fin de l'événement contenant l'appel"".
    • Comment :
      Comment
      Cette option permet de spécifier si la procédure doit s'exécuter en tâche de fond (dans un thread) et si ce thread doit faire des accès à des fichiers de données HyperFileSQL.
      WEBDEV - Code Serveur Remarque : En WEBDEV, les timers ne sont pas disponibles. Les automatismes de répétition et d'exécution différée ne sont pas disponibles.
      L'utilisation d'une procédure automatique répétée est tout de même configurable car une collection de procédures, une classe, ... peut être partagée entre plusieurs produits.
    Dans la fenêtre qui s'affiche, sélectionnez les propriétés de la procédure :
    • Type de l'automatisme à configurer :
      Type
      Par défaut, la procédure est exécutée lors de chacun de ses appels. La procédure peut également être exécutée :
      • automatiquement :
        • après le code d'initialisation du projet (dans le cas d'une procédure globale)
        • après le code d'initialisation de la fenêtre ou de la page (dans le cas d'une procédure locale).
      • Versions 18 et supérieures
        WEBDEV - Code Serveur en tant que tâche planifiée sur un serveur d'application WEBDEV. Pour plus de détails, consultez Tâches planifiées.
        Nouveauté 18
        WEBDEV - Code Serveur en tant que tâche planifiée sur un serveur d'application WEBDEV. Pour plus de détails, consultez Tâches planifiées.
        WEBDEV - Code Serveur en tant que tâche planifiée sur un serveur d'application WEBDEV. Pour plus de détails, consultez Tâches planifiées.
      • Versions 18 et supérieures
        WEBDEV - Code Serveur en tant que tâche différée sur un serveur d'application WEBDEV. Pour plus de détails, consultez Tâches différées.
        Nouveauté 18
        WEBDEV - Code Serveur en tant que tâche différée sur un serveur d'application WEBDEV. Pour plus de détails, consultez Tâches différées.
        WEBDEV - Code Serveur en tant que tâche différée sur un serveur d'application WEBDEV. Pour plus de détails, consultez Tâches différées.
    • Combien de fois :
      Combien de fois
      La procédure peut être exécutée :
      • une fois : la procédure s'arrêtera automatiquement après son exécution.
      • plusieurs fois : la procédure s'exécutera plusieurs fois d'affilé. Dans ce cas, il est possible d'espacer les exécutions de la procédure. Un timer sera donc mis en place automatiquement.
      • un nombre infini de fois : la procédure s'exécutera un nombre infini de fois. Dans ce cas, il est possible d'espacer les exécutions de la procédure. Un timer sera donc mis en place automatiquement.
        Si les exécutions sont espacées, il est possible de conserver ou non cet espacement pour les futurs appels de la procédure.
        Si cet espacement n'est pas conservé (option "Chaque appel suivant exécute une seule fois la procédure, sans timer"), lors d'un nouvel appel, la procédure s'exécutera une seule fois.
        Si cet espacement est conservé (option "Chaque appel suivant relance un nouveau timer"), lors d'un nouvel appel, la procédure s'exécutera un nombre infini de fois espacé de la durée indiquée.
        Remarque : Cette option doit être cochée si l'élément (fenêtre ou page) appelant la procédure est utilisé plusieurs fois simultanément (fenêtre et page interne par exemple).
    • Quand :
      Quand
      La procédure peut être exécutée :
      • immédiatement : la procédure est exécutée dès qu'elle est appelée dans le code et automatiquement après le code d'initialisation (si l'option "Exécution automatique après le code d'initialisation" a été cochée).
      • en différé : le procédure est exécutée après le délai spécifié.
        Si l'exécution est différée, il est possible de conserver ou non cette attente pour les futurs appels de la procédure.
        Si cette attente n'est pas conservée (option "Chaque appel suivant exécute une seule fois la procédure, sans timer"), lors d'un nouvel appel, la procédure s'exécutera immédiatement.
        Si cette attente est conservée (option "Chaque appel suivant relance un nouveau timer"), lors d'un nouvel appel, la procédure s'exécutera après le délai spécifié.
      • à la fin du traitement contenant l'appel : la procédure est exécutée lorsque le traitement contenant l'appel de la procédure est fini.
      • à la fin de l'événement contenant l'appel : la procédure est exécutée lorsque le traitement contenant l'appel de la procédure sera fini. Pour plus de détails, consultez le paragraphe "Option "A la fin de l'événement contenant l'appel"".
    • Comment :
      Comment
      Cette option permet de spécifier si la procédure doit s'exécuter en tâche de fond (dans un thread) et si ce thread doit faire des accès à des fichiers de données HFSQL.
      WEBDEV - Code Serveur Remarque : En WEBDEV, les timers ne sont pas disponibles. Les automatismes de répétition et d'exécution différée ne sont pas disponibles. L'utilisation d'une procédure automatique répétée est tout de même configurable car une collection de procédures, une classe, ... peut être partagée entre plusieurs produits.

Automatiser une procédure

Pour automatiser une procédure :
  1. Affichez le code de la procédure.
  2. Affichez la fenêtre de description des automatismes de la procédure :
    • Cliquez sur l'icône Icône présente dans le bandeau de la procédure.
    • Sélectionnez l'option "Paramétrer les automatismes de la procédure" dans le menu contextuel de la procédure (volet "Explorateur de projet").
    • Sélectionnez l'option "Propriétés" du menu contextuel de la procédure dans le volet "Code".
  3. Dans la fenêtre qui s'affiche, sélectionnez le type d'automatisme :

Cas des timers / Procédures différées

Les options sont les suivantes :
  • Nombre de fois :
    Nombre de fois
    La procédure peut être exécutée :
    • une fois : la procédure s'arrêtera automatiquement après son exécution.
    • plusieurs fois : la procédure s'exécutera plusieurs fois d'affilé. Dans ce cas, il est possible d'espacer les exécutions de la procédure. Un timer sera donc mis en place automatiquement.
    • un nombre infini de fois : la procédure s'exécutera un nombre infini de fois. Dans ce cas, il est possible d'espacer les exécutions de la procédure. Un timer sera donc mis en place automatiquement.
      Si les exécutions sont espacées, il est possible de conserver ou non cet espacement pour les futurs appels de la procédure.
      Si cet espacement n'est pas conservé (option "Chaque appel suivant exécute une seule fois la procédure, sans timer"), lors d'un nouvel appel, la procédure s'exécutera une seule fois.Si cet espacement n'est pas conservé (option "Faire uniquement l'appel"), lors d'un nouvel appel, la procédure s'exécutera une seule fois.Si cet espacement est conservé (option "Chaque appel suivant relance un nouveau timer"), lors d'un nouvel appel, la procédure s'exécutera un nombre infini de fois espacé de la durée indiquée.Si cet espacement est conservé (option "Lancer un timer supplémentaire"), lors d'un nouvel appel, la procédure s'exécutera un nombre infini de fois espacé de la durée indiquée.
      Remarque : Cette option doit être cochée si l'élément (fenêtre ou page) appelant la procédure est utilisé plusieurs fois simultanément (fenêtre et page interne par exemple).
  • Quand :
    Quand
    La procédure peut être exécutée :
    • immédiatement : la procédure est exécutée dès qu'elle est appelée dans le code.
    • Démarrage automatique : la procédure est exécutée automatiquement après le code d'initialisation (de la fenêtre, de la page ou du projet).
    • en différé : le procédure est exécutée après le délai spécifié.
      Si l'exécution est différée, il est possible de conserver ou non cette attente pour les futurs appels de la procédure.
      Si cette attente n'est pas conservée (option "Chaque appel suivant exécute une seule fois la procédure, sans timer"), lors d'un nouvel appel, la procédure s'exécutera immédiatement.Si cette attente n'est pas conservée (option "Faire uniquement l'appel"), lors d'un nouvel appel, la procédure s'exécutera immédiatement.Si cette attente est conservée (option "Chaque appel suivant relance un nouveau timer"), lors d'un nouvel appel, la procédure s'exécutera après le délai spécifié.Si cette attente est conservée (option "Lancer un timer supplémentaire"), lors d'un nouvel appel, la procédure s'exécutera après le délai spécifié.
    • à la fin du traitement contenant l'appel : la procédure est exécutée lorsque le traitement contenant l'appel de la procédure est fini.
    • à la fin de l'événement contenant l'appel : la procédure est exécutée lorsque le traitement contenant l'appel de la procédure sera fini. Pour plus de détails, consultez le paragraphe Option "A la fin de l'événement contenant l'appel".
WEBDEV - Code Serveur Remarque : En WEBDEV, les timers ne sont pas disponibles. Les automatismes de répétition et d'exécution différée ne sont pas disponibles. L'utilisation d'une procédure automatique répétée est tout de même configurable car une collection de procédures, une classe, ... peut être partagée entre plusieurs produits.

Cas des threads

Cette option permet de spécifier si la procédure doit s'exécuter en tâche de fond (dans un thread).
Les options sont les suivantes :
  • Nombre de fois :
    Nombre de fois
    La procédure peut :
    • être exécutée une fois : la procédure s'arrêtera automatiquement après son exécution.
    • être exécutée plusieurs fois : la procédure s'exécutera plusieurs fois d'affilé. Dans ce cas, il est possible d'espacer les exécutions de la procédure. Un timer sera donc mis en place automatiquement.
    • être exécutée un nombre infini de fois : la procédure s'exécutera un nombre infini de fois. Dans ce cas, il est possible d'espacer les exécutions de la procédure. Un timer sera donc mis en place automatiquement.
    • utiliser ou non HFSQL : Cette option permet de spécifier si le thread doit faire des accès à des fichiers de données HFSQL.
      Deux types d'accès sont disponibles :
      • Copie de contexte complète : Permet de copier le contexte des connexions, des positions, des requêtes, ...
      • Versions 20 et supérieures
        Copie de contexte légère : Permet de copier uniquement le contexte des connexions.
        Nouveauté 20
        Copie de contexte légère : Permet de copier uniquement le contexte des connexions.
        Copie de contexte légère : Permet de copier uniquement le contexte des connexions.
  • Quand :
    Quand
    La procédure peut être exécutée :
    • immédiatement : la procédure est exécutée dès qu'elle est appelée dans le code et automatiquement après le code d'initialisation (si l'option "Exécution automatique après le code d'initialisation" a été cochée).
    • en différé : le procédure est exécutée après le délai spécifié.
      Si l'exécution est différée, il est possible de conserver ou non cette attente pour les futurs appels de la procédure.
      Si cette attente n'est pas conservée (option "Chaque appel suivant exécute une seule fois la procédure, sans timer"), lors d'un nouvel appel, la procédure s'exécutera immédiatement.Si cette attente n'est pas conservée (option "Faire uniquement l'appel"), lors d'un nouvel appel, la procédure s'exécutera immédiatement.Si cette attente est conservée (option "Chaque appel suivant relance un nouveau timer"), lors d'un nouvel appel, la procédure s'exécutera après le délai spécifié.Si cette attente est conservée (option "Lancer un timer supplémentaire"), lors d'un nouvel appel, la procédure s'exécutera après le délai spécifié.
    • à la fin du traitement contenant l'appel : la procédure est exécutée lorsque le traitement contenant l'appel de la procédure est fini.
    • à la fin de l'événement contenant l'appel : la procédure est exécutée lorsque le traitement contenant l'appel de la procédure sera fini. Pour plus de détails, consultez le paragraphe Option "A la fin de l'événement contenant l'appel".
Versions 20 et supérieures

Cas du thread principal

Cette option permet d'appeler une procédure dans le thread principal à partir d'un thread secondaire. Cette option est notamment utilisée pour accéder à l'IHM. Cette option est équivalente à la fonction ExécuteThreadPrincipal.
Nouveauté 20

Cas du thread principal

Cette option permet d'appeler une procédure dans le thread principal à partir d'un thread secondaire. Cette option est notamment utilisée pour accéder à l'IHM. Cette option est équivalente à la fonction ExécuteThreadPrincipal.

Cas du thread principal

Cette option permet d'appeler une procédure dans le thread principal à partir d'un thread secondaire. Cette option est notamment utilisée pour accéder à l'IHM. Cette option est équivalente à la fonction ExécuteThreadPrincipal.
Remarques

Icône des procédures automatiques

Dès qu'une procédure est automatisée, l'icône icône présent à droite dans le bandeau de la procédure devient Icône
L'icône présent à gauche dans le bandeau de la procédure indique le type d'automatisation de la procédure :
  • procédure répétée : Icône procédure répétée
  • procédure différée : Icône procédure différée
  • procédure répétée avec thread : Icône procédure répétée avec thread
  • procédure exécutée dans un thread : Icône procédure exécutée dans un thread
  • procédure répétée avec timer : Icône procédure répétée avec timer
  • procédure répétée, différée, dans un thread : Icône procédure répétée, différée, dans un thread

Tableau récapitulatif

Le tableau suivant permet de visualiser les différents cas d'exécution des procédures selon les options d'automatisme choisies :
Appels suivants sans conserver l'espacement ou l'attenteAppels suivants avec conservation de l'espacement ou de l'attente
Procédure différée (option "Différé" cochée)1er appel manuelTemporisation puis lancement de la procédureTemporisation puis lancement de la procédure
Appels suivantsLancement de la procédureTemporisation puis lancement de la procédure
Procédure différée, répétée avec temporisation (options "Différé", "Infini" et "Espacer les appels" cochées)1er appel manuelTemporisation -> Procédure -> temporisation-> Procédure ...Temporisation -> Procédure -> temporisation-> Procédure ...
Appel suivantsLancement de la procédure (une seule fois)Temporisation -> Procédure -> temporisation-> Procédure ...
Procédure différée, exécutée automatiquement (options "Différé" et "Exécution automatique..." cochées)1er appel automatiqueTemporisation puis lancement de la procédureTemporisation puis lancement de la procédure
Appels suivantsLancement de la procédureTemporisation puis lancement de la procédure
Procédure différée, exécutée automatiquement, répétée avec temporisation (options "Différé", "Infini", "Espacer les appels" et "Exécution automatique..." cochées)1er appel automatiqueTemporisation -> Procédure -> temporisation-> Procédure ...Temporisation -> Procédure -> temporisation-> Procédure ...
Appels suivantsLancement de la procédure (une seule fois)Temporisation -> Procédure -> temporisation-> Procédure ...

Option "A la fin de l'événement contenant l'appel"

Les procédures avec l'option "A la fin de l'événement contenant l'appel" appelées depuis une procédure de callback (par exemple procédures utilisées par les fonctions fListeFichier, Evénement, ...) sont exécutées à la fin de chaque appel de la callback.
Exemple :
// -----------------
// cas normal
// -----------------
Clic de bouton
// début du code du clic de bouton
Proc1
// début du code de Procédure1
Proc2
// début du code de Procédure2

Appel de Procédure FinEvénément
// fin du code de Proc2
// fin du code de Proc1
// fin du code du clic de bouton
Exécution de Procédure FinEvénément
// -------------------
// cas callback
// -------------------
Clic de bouton
Proc1
Proc2
utilisation de la fonction fListeFichier
Procédure Callback1
// début du code de Procédure Callback1
ProcCallback2
// début du code de Procédure Callback2
Appel de ProcFinEvénément
// fin du code de ProcédureCallback2
// fin du code de ProcédureCallback1
Exécution de ProcFinEvénément
ProcédureCallback1
// début du code de ProcédureCallback1
ProcédureCallback2
// début du code de ProcédureCallback2
Appel de ProcFinEvénément
// fin du code de ProcédureCallback2
// fin du code de ProcédureCallback1
Exécution de ProcFinEvénément

Arrêter une procédure automatique

Pour arrêter une procédure automatique, il suffit d'utiliser la fonction FinAutomatismeProcédure.

Procédure avec lancement automatique de threads

Rappel : En WLangage, par défaut, chaque procédure fait une section critique automatique. Deux threads ne peuvent donc pas exécuter en même temps la même procédure.
Si une procédure qui déclenche automatiquement un thread est appelée deux fois :
  • en mode par défaut : la première procédure se lance et la seconde procédure attend que la première ait fini pour se lancer.
  • en mode threadSectionCritique (défini avec la fonction ThreadMode), les deux threads se déclenchent en même temps.

Programmation Orientée Objet (POO)

Lorsqu'un automatisme de procédure est défini sur une méthode de classe pour une exécution infinie par timer, un seul appel pour toutes les instances pourra être fait :
  • si l'automatisme de la méthode est configuré avec "Faire uniquement l'appel" : seule une des instances de la classe fera l'appel de la méthode via le timer.
  • si l'automatisme de la méthode est configuré avec "Lancer un timer supplémentaire" : toutes les instances de la classe feront un appel de la méthode pour l'instance en cours.
Si l'automatisme est configuré pour une exécution infinie dans un thread, toutes les instances de la classe feront un appel de la méthode pour l'instance en cours.
WEBDEV - Code Serveur

Limitation WEBDEV

En WEBDEV, les timers ne sont pas disponibles. Les automatismes de répétition et d'exécution différée ne sont pas disponibles.
Remarque : L'utilisation d'une procédure automatique répétée est tout de même configurable car une collection de procédures (ou une classe, ...) peut être partagée entre plusieurs produits.
Liste des exemples associés :
Les fonctions Chrono Exemples unitaires (WINDEV) : Les fonctions Chrono
[ + ] Utilisation des fonctions ChronoXXX.
Ces fonctions permettent de calculer le temps écoulé entre le début (Fonction ChronoDébut) et la fin (Fonction ChronoFin)
WD Ecran de veille Exemples didactiques (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 Exemples didactiques (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 Exemples unitaires (WEBDEV) : Gestion des timers
[ + ] Mise en place d'un timer :
- Démarrage d'un timer
- Exécution d'un code à chaque appel du timer
- Arrêt d'un timer
Gestion des timers Exemples unitaires (WINDEV Mobile) : Gestion des timers
[ + ] Mise en place d'un timer :
- démarrer un timer
- exécuter un code à chaque appel du timer
- arrêter un timer
Les alarmes Exemples unitaires (WINDEV) : Les alarmes
[ + ] Mise en place d'une alarme pour afficher un message d'alerte dans la barre de titre de la fenêtre active (quelle que soit l'application).

Nous abordons les principaux thèmes suivants :
1/ Les fonctions système (récupération du handle d'une fenêtre)
2/ Le déclenchement d'un traitement selon une fréquence donnée (les timers)
Les fonctions Chrono Exemples unitaires (WINDEV Mobile) : Les fonctions Chrono
[ + ] Utilisation des fonctions WLangage "Chrono".
Ces fonctions permettent de calculer le temps écoulé entre le début (Fonction ChronoDébut) et la fin (Fonction ChronoFin)
Version minimum requise
  • Version 10
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire