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

WinDev Discussion :

Neutraliser toute action sur une fenêtre [WD25]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    janvier 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2008
    Messages : 235
    Points : 134
    Points
    134
    Par défaut Neutraliser toute action sur une fenêtre
    Bonjour,
    Je ne retrouve pas d'information sur ce sujet
    J'ai un traitement assez long à l'ouverture d'une fenêtre, aussi je lance le sablier, et je le ferme à la fin de ce traitement
    Mais pendant ce délais, les boutons de la fenêtre sont visibles, et même si le curseur est le sablier, si l'utilisateur fait un clique gauche sur un bouton, c'est le code de ce bouton qui est exécuté lorsque le traitement est terminé
    Par exemple, si l’utilisateur clique sur le bouton fermer alors que le sablier est actif, la fenêtre se ferme lorsque le traitement est terminé

    Comment neutraliser les clics de souris, et la touche entrée, pendant qu'un traitement se déroule, de manière que l'action de l'utilisateur ne puisse se faire qu'a la FIN du traitement, donc sablier à faux ?

    Cordialement
    SC

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    3 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 3 067
    Points : 6 986
    Points
    6 986
    Par défaut
    C'est assez surprenant.
    Les clics tentés par l'utilisateur pendant cette phase ne sont pas mémorisés. Sauf si tu as fait en sorte de laisser l'utilisateur cliquer pendant le traitement.

    Si tu as mis des instructions du type Multitache(n) avec n négatif, alors oui, l'utilisateur peut cliquer sur des boutons (s'il est chanceux et que son clic arrive bien pendant le millième de seconde de pause).
    Si ta procédure longue s'exacute dans un thread secondaire, alors oui, l'utilisateur doit pouvoir cliquer sur des boutons.

    Mais en dehors de ces 2 cas spécifiques, il me semble que le comportement standard est celui que tu recherches.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 1 424
    Points : 2 501
    Points
    2 501
    Par défaut
    Bonjour,
    Une solution serait d'inclure les champs incriminés dans un groupe (e.g. GR_NonClicable) et d'utiliser la propriété Etat pour le groupe pendant le traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sablier()
    GR_NonClicable..Etat=Grisé
    ProcTraitement()
    GR_NonClicable..Etat=Actif
    Sablier(Faux)
    Il y a peut être plus simple, mais ça tourne

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    mutlitâche-multifonction
    Inscrit en
    juin 2003
    Messages
    4 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : mutlitâche-multifonction
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2003
    Messages : 4 002
    Points : 6 833
    Points
    6 833
    Par défaut
    Bonjour,

    +1 pour Voroltinquo.

    Une solution, que j'avais mise en œuvre il y a un certain temps, était d'afficher une image transparente sur la fenêtre (ou sur une zone comprenant les boutons), puis de la rendre invisible après traitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Il faut créer un champ image en dehors de la fenêtre, et vérifier qu'elle est bien au premier plan.
    img_tranparente..X = 0
    img_tranparente..Y = 0
    img_tranparente..Largeur = Mafenêtre..Largeur
    img_tranparente..Hauteur = Mafenêtre..Hauteur
    Multitacherepeint() //suivant l'endroit où tu te trouves dans le code, ça fait pas de mal
    ProcTraitement()
    img_tranparente..visible = faux
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Make it real not fantasy.

  5. #5
    Membre habitué
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    janvier 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2008
    Messages : 235
    Points : 134
    Points
    134
    Par défaut
    Bonjour,
    Merci, mais hélas, avec le groupe, si en visualisation les champs sont biens grisés, ils ont quand même acceptés le clic ...
    Cdlt
    SC

  6. #6
    Membre habitué
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    janvier 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2008
    Messages : 235
    Points : 134
    Points
    134
    Par défaut
    Merci à tous,
    La solution avec le groupe ne fonctionnant pas, j'ai essayé avec l'image
    Pour être sur du positionnement, j'ai mis une image dans le champs image
    A l'affichage, parfait, l'image recouvre la fenêtre

    Mais, que je rende cette image cliquable ou non, si je clique sur l'image à la hauteur d'un bouton, ce bouton est exécuté !!!!!!!!

  7. #7
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    3 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 3 556
    Points : 6 927
    Points
    6 927
    Par défaut
    Citation Envoyé par scn68100 Voir le message
    Bonjour,
    Merci, mais hélas, avec le groupe, si en visualisation les champs sont biens grisés, ils ont quand même acceptés le clic ...
    Cdlt
    SC
    Heu ! Tu fais comment ? Parce que franchement, les boutons grisés n'acceptent pas le clic...
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  8. #8
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 1 424
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Heu ! Tu fais comment ? Parce que franchement, les boutons grisés n'acceptent pas le clic...
    De même que, je cite la doc :
    Pendant la durée de l'affichage du sablier, la fenêtre est inactive : l'utilisateur ne peut pas cliquer dans la fenêtre.
    @scn68100
    A là place de grisé, tu peux tenter "AffichageSeulement"
    Et pour faire "ceinture et bretelle" place l'instruction avant l'activaton du sablier.
    Sinon, tu parle du clic gauche, y a t-il un menu contextuel ?
    Pourrais tu poster le code de ta procédure ?
    Il y a peut être plus simple, mais ça tourne

  9. #9
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : septembre 2017
    Messages : 327
    Points : 485
    Points
    485
    Par défaut
    Bonjour,

    Dans le code de votre procédure de traitement, mettre à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Temporisation(100)
    Sablier(Faux)
    Ceci permet de neutraliser toute action sur la fenêtre.
    Attention, ne pas préciser la constante optionnelle : tempoDessin, tempoRien, tempoSourisEtClavier, tempoTimer, sinon cela ne va pas fonctionner.
    En tout cas, j'ai fait le test ça fonctionne et c'est vraiment bizarre.

  10. #10
    Membre habitué
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    janvier 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2008
    Messages : 235
    Points : 134
    Points
    134
    Par défaut
    Effectivement, j'avais remarqué que le fait de mettre un message en fait de procédure réglé le problème
    Temporiser est mieux ....
    Merci bien

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

Discussions similaires

  1. Contrôler les actions sur une fenêtre externe
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 27/04/2011, 11h22
  2. Réponses: 4
    Dernier message: 03/10/2010, 12h30
  3. Enregistrer les actions effectuée sur une fenêtre
    Par netomax dans le forum WinDev
    Réponses: 5
    Dernier message: 25/04/2007, 22h11
  4. Faire défiler un texte sur une fenêtre
    Par Crisanar dans le forum Windows
    Réponses: 15
    Dernier message: 25/11/2004, 00h05
  5. Rendre le curseur invisible sur une fenêtre donnée
    Par Meuhmeuh dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/11/2002, 13h25

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