PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → doc / tuto : wm mvp & DemandeMiseAJourUI
doc / tuto : wm mvp & DemandeMiseAJourUI
Débuté par ncaplan, 30 mai 2021 17:42 - 10 réponses
Posté le 30 mai 2021 - 17:42
Bonjour, je recherche DE LA vrai doc pour utiliser DemandeMiseAJourUI / mvp avec windev mobile.
la doc en ligne étend pas très claire et peu fournie. je reste sur une fin!
Je n'arrive même pas a comprendre le concept du DemandeMiseAJourUI.

MERCI de l'aide.
Membre enregistré
449 messages
Popularité : +31 (43 votes)
Posté le 31 mai 2021 - 15:38
Bonjour

si cela peut vous aider voici une procedure local dont je me sers et qui appel demandemiseajourui :

Procedure GestionConnexion(sNomConnexion)

sMessage est une chaîne
sIp est une chaîne = SocketClientInfo(sNomConnexion,SocketAdresse)
sNomPC est une chaîne = NetNomMachine(sIp)
// Lecture des messages
BOUCLE
SI SignalAttend("TERM",5) ALORS SORTIR


SI SocketExiste(sNomConnexion) ALORS
MettreAjourTable(sNomConnexion,sNomPC,sIp)
sMessage = SocketLit(sNomConnexion,Faux,10)
FIN

SI sMessage <> "" ALORS
DemandeMiseAJourUI("Code_Barre",sMessage)

FIN

SELON sMessage
CAS "Fin de session" :
// Sortie de l'utilisateur
SORTIR

CAS "" :
// Ce n'est pas une lecture bloquante, on retourne dans la boucle
ThreadPause(1)

AUTRES CAS :
// Message à poster
//GestionMessage(sMessage)
FIN
FIN

// Fermeture de la socket
SI SocketExiste(sNomConnexion) ALORS
SocketFerme(sNomConnexion)
FIN

DemandeMiseAJourUI("Fermeture_client",sNomConnexion)



et dans le code de ma fenêtre à qui je demande une maj : "demande mise à jour de l'affichage ", j'ai une procédure qui me permet de gérer plusieurs appel et de faire des traitements différents :

Procedure MAJInterface(sTYpe="",sData="")
SELON sTYpe
CAS "Code_Barre"
Sai_Liste = Sai_Liste + sData + CR
ToastAffiche(sData,toastCourt,cvMilieu,chCentre)
Affichage_Menuiserie(sData)

CAS "Fermeture_client"
ToastAffiche(sData,toastCourt,cvMilieu,chCentre)


CAS "messageOK"
ToastAffiche(sData,toastCourt,cvMilieu,chCentre)

CAS "messageKO"
ToastAffiche(sData,toastCourt,cvMilieu,chCentre)

AUTRE CAS
SourceVersEcran()
TableAffiche(Table_Palette_Entete)
FIN



cdlt

DG
Posté le 01 juin 2021 - 10:10
Mais je ne comprends toujours pas comment
DemandeMiseAJourUI("Code_Barre",sMessage)

fonctionne comment DemandeMiseAJourUI gère le truc ? la procédure vient d’où ? les paramètres sont instancier ou ?
dans cet event "DemandeMiseAJourUI" on met quoi ? bref c'est assez flou. si je compare avec Symfony PHP qui utilise des event c'est tres claire le fonctionnement mais la je suis ....... ;( c'est très très confus. pour c'est un comme dire de faire une mayo : on dit voila la moutard, huile, et tu te démerde avec ça (il va de soit : jaune d’œuf BIEN-SUR tu dois deviner).

en tous les cas merci.
Posté le 01 juin 2021 - 12:10
je viens de relire la page d'aide de la fonction, et tout y est... tu es sur que tu l'as lu en entier ?

Bref, je vais donc paraphraser l'aide...

On ne peut pas toujours faire une mise à jour directe de l'interface (c'est interdit depuis les threads, pour cause de conflit)
Donc, PCSoft à ajouté dans les fenêtres une nouvelle zone de code : comme l'init, la fermeture, il y a maintenant aussi "Evénement Demande de mise à jour de l'affichage".

C'est la que tu mets tout le code qui sera appelé quand tu utilise la fonction....demandemiseajourUI (ou ses copines, aussi indiquées dans l'aide)...si si... Et tu appelles ces fonctions quand tu as besoin de mettre a àjour ta fenêtre depuis un endroit ou tu n'as pas le droit de faire un accès direct (ou tu risque un conflit)

Quand aux paramètres, la je recopie simplement l'aide:

Cet événement peut attendre des paramètres. Il suffit de déclarer une procédure dans l'événement. Par exemple :
// Demande de mise à jour de l'affichage
PROCÉDURE DemandeMiseAjour(TypeMiseAJour est un booléen)

je vois pas vraiment comment on peut être plus clair que ca.
Posté le 01 juin 2021 - 14:34
ok je vois un peu mieux, donc si tu veux rafraichir une jauge il faut intégrer DemandeMiseAJourUI dans le code de la jauge ?

qui demande le rafraichissement toutes les x secondes? c'est un fonctionnement normal ?
Posté le 01 juin 2021 - 15:25
absolument pas...

Si tu n'utilises pas les threads ou taches parallèles, tu n'en as pas besoin...

Si tu les utilises, et que tu as besoin de faire quelque chose dans l'UI DEPUIS les codes du thread secondaire, tu utilise la fonction en question
Membre enregistré
449 messages
Popularité : +31 (43 votes)
Posté le 01 juin 2021 - 16:14
mon exemple est simple et expliqué dans l'aide de pcsoft il suffit juste de lire : (https://doc.pcsoft.fr/fr-FR/?1000023899&name=demandemiseajourui)

=> Aide pc soft
Remarques
Evénement "Demande de mise à jour de l'affichage"

Un des événements associés à la fenêtre est l'événement "Demande de mise à jour de l'affichage". Cet événement permet de regrouper le code de mise à jour des champs de la fenêtre : contenu des champs, état (visible, grisé, ...), libellé à mettre à jour, ... Cet événement est disponible sur les fenêtres, fenêtres internes, pages, pages internes, modèles de champs et superchamps.

****************************************************
L'explication ici => Cet événement peut attendre des paramètres. Il suffit de déclarer une procédure dans l'événement. Par exemple :
*********************************************************

// Demande de mise à jour de l'affichage
PROCÉDURE DemandeMiseAjour(TypeMiseAJour est un booléen)
Cet événement est lancé sur demande grâce aux fonctions :
DemandeMiseAJourUI : Exécute l'événement "Demande de mise à jour de l'affichage" à la fin du traitement en cours (lancement asynchrone).
Posté le 02 juin 2021 - 09:35
donc l'utilisation
DemandeMiseAJourUI
est uniquement dans le cas d'utilisation de thread/TP.

Ok c'est donc bien ce que je pensais, j'ai un très gros bug !!! Au départ je pensais que mon code etait une grosse merde, mal formulé .... et que je devais passer par la solution
DemandeMiseAJourUI
MAIS non.

voici le bleme : dans une fenêtre interne une ZR avec une requête tout fonctionne. dans cette ZR un Btn qui grise la ligne du Btn sélectionné ça fonctionne. je clic sur une autre ligne impec. je reclick sur la ligne grisé (avant) et la comme par magie elle se re-active.

précision : sur le premier click la DB est mise a jour. Dans la ZR il n'y a pas de code dans event Entre, Sortie, EnSelection ou autre.

merci de vos conseilles.
Membre enregistré
950 messages
Popularité : +53 (63 votes)
Posté le 02 juin 2021 - 12:20
ncaplan a écrit :
donc l'utilisation
DemandeMiseAJourUI
est uniquement dans le cas d'utilisation de thread/TP.

Ok c'est donc bien ce que je pensais, j'ai un très gros bug !!! Au départ je pensais que mon code etait une grosse merde, mal formulé .... et que je devais passer par la solution
DemandeMiseAJourUI
MAIS non.

voici le bleme : dans une fenêtre interne une ZR avec une requête tout fonctionne. dans cette ZR un Btn qui grise la ligne du Btn sélectionné ça fonctionne. je clic sur une autre ligne impec. je reclick sur la ligne grisé (avant) et la comme par magie elle se re-active.

précision : sur le premier click la DB est mise a jour. Dans la ZR il n'y a pas de code dans event Entre, Sortie, EnSelection ou autre.

merci de vos conseilles.


Bonjour,

Ca ressemble plus a un problème ihm, dans les style de ta ZR, tu as quoi dans sélection d'une ligne ?
Quel est ton code dans sélection d'une ligne ? dans le bouton ?

jordan
Posté le 02 juin 2021 - 14:31
il n'y a pas de code !!! dans la ZR, elle affiche directement le résultat d'une REQ.

c'est justement le probleme, que je pensais régler avec
DemandeMiseAJourUI
Membre enregistré
477 messages
Popularité : +20 (20 votes)
Posté le 02 juin 2021 - 22:04
Code du bouton ?