PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Spin Horaire - WinDev17
Spin Horaire - WinDev17
Débuté par David, 13 mar. 2020 16:25 - 10 réponses
Membre enregistré
66 messages
Popularité : +0 (2 votes)
Posté le 13 mars 2020 - 16:25
Bonjour

J'aimerais faire fonctionner les spins afin de gérer des heures et minutes





Merci de votre aide

David
Posté le 13 mars 2020 - 18:41
Le spin de gauche : + ou - 1 heure
le spin de droite : + ou - 1 minute

Où est la difficulté ?
Membre enregistré
66 messages
Popularité : +0 (2 votes)
Posté le 13 mars 2020 - 22:55
Bonsoir Philou

C'est le code des spins et/ou du champs de saisie que je ne trouve pas
Membre enregistré
3 872 messages
Popularité : +227 (347 votes)
Posté le 15 mars 2020 - 08:44
Bonjour,
Il y a un superchamp prédéfini utilisant les spins, tu devrais t'en inspirer.

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
66 messages
Popularité : +0 (2 votes)
Posté le 18 mars 2020 - 20:05
Bonjour Voroltinquo
Dans la version 17, je ne vois pas de superchamp prédéfini utilisant les spins !

Sinon j'ai commencé à faire ceci :





Et dans le bouton :
// Affiche le temps de travail

hHeureDébut est une Heure = SAI_Heure_Début
hHeureFin est une Heure = SAI_Heure_Fin
hTempsPause est une Heure = SAI_Pause

SI SAI_Heure_Début<SAI_Heure_Fin ALORS
TempsTravail est une Durée = hHeureFin - hHeureDébut
SAI_Durée_Travail_Heure = DuréeVersChaîne(TempsTravail, "HH:MM")
SAI_Durée_Travail_Centième = DuréeVersChaîne(TempsTravail, duréeCentième)
SINON
TempsTravail est une Durée = hHeureDébut - hHeureFin
SAI_Durée_Travail_Heure = DuréeVersChaîne(TempsTravail, "HH:MM")
SAI_Durée_Travail_Centième = DuréeVersChaîne(TempsTravail, duréeCentième)
FIN


Les centièmes ne fonctionnent pas !

Le but final c'est d'enlever le bouton "Calculer" et utiliser seulement les spins

Merci
David
Membre enregistré
309 messages
Popularité : +31 (37 votes)
Posté le 19 mars 2020 - 11:08
Bonjour,

Quelques indications pour vous aiguiller :


hHeureDébut est une Heure = SAI_Heure_Début //----> 16:56:00:000
hHeureFin est une Heure = SAI_Heure_Fin //------->18:50:00:000


// Faire varier les heures ou les minutes --------- (en fonction des spins)
//On augmente
hHeureDébut..Heure++ //-----> 17:56:00:000

hHeureDébut..Minute++ //-----> 17:57:00:000

//On diminue
hHeureDébut..Minute-- //-----> 17:56:00:000

hHeureDébut..Heure-- //-----> 16:56:00:000

//.........(Puis on reaffiche dans le champ SAI_Heure_Début )
SAI_Heure_Début =hHeureDébut

//---------------------------------------------------------------

//Calculer la difference et l'afficher -------------------------
ld est un entier = HeureDifférence(hHeureDébut,hHeureFin)

hLetempsPasse est une Heure="000000000"

hLetempsPasse..Seconde+=(ld/100)

SAI_Durée_Travail_Heure = letempsPasse


Bon dev.
Membre enregistré
66 messages
Popularité : +0 (2 votes)
Posté le 19 mars 2020 - 22:56
Bonjour et merci de l'aide

Pour les spins, il n'y avait plus de problème.

Pour le calcul en HEURE, ça fonctionne tant que je dépasse pas le minuit ! (ce qui pose problème)
Pour le calcul en CENTIEME, je n'y arrive pas !

Merci pour l'approfondissement de votre réponse

Les SAI_Durée_Travail_Heure et SAI_Durée_Travail_Centième sont en type "Texte" avec un masque de saisie "Chiffres"
Les SAI_Heure_Début et SAI_Heure_Fin sont en Type "Heure" avec un masque de saisie "Heure défini dans le projet" - Masque et valeur retournée "HH:MM"


// TEMPS DE TRAVAIL

hHeureDébut est une Heure = SAI_Heure_Début
hHeureFin est une Heure = SAI_Heure_Fin
//hTempsPause est une heure = SAI_Pause

//Calcul pour Format HEURE
SI SAI_Heure_Début<SAI_Heure_Fin ALORS
TempsTravailHeure est une Durée = hHeureFin - hHeureDébut
SAI_Durée_Travail_Heure = DuréeVersChaîne(TempsTravailHeure, "HH:MM")
SINON
TempsTravailHeure est une Durée = hHeureDébut - hHeureFin
SAI_Durée_Travail_Heure = DuréeVersChaîne(TempsTravailHeure, "HH:MM")
FIN


//Calcul pour Format CENTIEME
SI SAI_Heure_Début>SAI_Heure_Fin ALORS
Diff est un entier= HeureDifférence(hHeureFin,hHeureDébut)
TempsTravailCentième est une Heure="000000000"
TempsTravailCentième..Seconde+=(Diff/100)
SAI_Durée_Travail_Centième = TempsTravailCentième
SINON
Diff est un entier= HeureDifférence(hHeureDébut,hHeureFin)
TempsTravailCentième est une Heure="000000000"
TempsTravailCentième..Seconde+=(Diff/100)
SAI_Durée_Travail_Centième = TempsTravailCentième
FIN
Membre enregistré
393 messages
Popularité : +13 (13 votes)
Posté le 20 mars 2020 - 10:31
Bonjour,

Il y a un souci dans votre algorithme.

Vous faite un HeureDifférence(hHeureDébut,hHeureFin), vous récupérez une durée en centième de secondes, que vous divisez par 100 (l'unité devient donc des secondes), puis l'ajoutez dans les secondes d'une variable de type durée initialisée à 0. Pour moi ce n'est rien d'autre qu'une façon très alambiquée de faire "SAI_Durée_Travail_Centième = hHeureFin - hHeureDebut"

Est-ce un format en centième d'heure que vous voulez afficher ? Si oui il vous manque une division par 60 (si votre unité de base est la minute) ou par 3600 (si l'unité est la seconde) quelque part dans votre code.
Membre enregistré
66 messages
Popularité : +0 (2 votes)
Posté le 20 mars 2020 - 16:22
Bonjour Benjamin

Quand "SAI_Durée_Travail_Heure" = "10:15"
Dans "SAI_Durée_Travail_Centième", je cherche à récupérer "10:25"

Merci de l'aide
Membre enregistré
66 messages
Popularité : +0 (2 votes)
Posté le 20 mars 2020 - 16:24
Bonjour Benjamin

Quand "SAI_Durée_Travail_Heure" = "10:15"
Dans "SAI_Durée_Travail_Centième", je cherche à récupérer "10,25"

Merci de l'aide
Membre enregistré
393 messages
Popularité : +13 (13 votes)
Posté le 20 mars 2020 - 17:22
Je comprends bien l'idée, et j'ai expliqué dans mon message précédent ce qu'il manquait pour y parvenir. Comme on passe du gramme au kilogramme en divisant par mille (2000g = 2000/1000 = 2kg), on passe de la minute à l'heure en divisant par 60 (15 min = 15/60 = 0.25h).

Autre solution, si vous avez déjà une variable de type Durée, utiliser directement la propriété ..EnHeures qui fait le calcul pour vous. Pratique quand on a la flemme ;) Documentation de la propriété : https://doc.pcsoft.fr/fr-FR/?1000017296&1000017296