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 :

ExécuteTraitement ne réagit pas à l'initialisation de la fenêtre [WD15]


Sujet :

WinDev

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut ExécuteTraitement ne réagit pas à l'initialisation de la fenêtre
    Bonsoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        // PARAMETRE DE LA REQUETE : 2 DERNIERS CARACTERES DE L'ANNEE EN COURS
        REQ_HFRE.NUMERO_FAC_INI=Milieu(DateSys(),3,2)
        HExécuteRequête(REQ_HFRE, hModifieFichier)
        // LA TABLE SE POSITIONNE SUR LA DERNIERE FACTURE DE CETTE ANNEE
        TableAffiche(TABLE_HFRE,taCourantPremier)
        // CE CODE NE FONCTIONNE PAS
        ExécuteTraitement(TABLE_HFRE,trtSélection)
        // NI CE CODE NE FONCTIONNE PAS POUR EXECUTER LA VISUALISATION DE LA TABLE DETAILS
        ExécuteTraitement(TABLE_HFRE,trtClic)
        // SI JE CLIQUE AVEC LA SOURIS CELA FONCTIONNE

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 264
    Points
    5 264
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Pourquoi ne pas appeler directement la procédure qui se trouve dans la partie Sélection d'une ligne ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Membre actif

    Homme Profil pro
    Sans
    Inscrit en
    Mars 2018
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mars 2018
    Messages : 153
    Points : 295
    Points
    295
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    Il manque quelques informations pour pouvoir aider.

    - La fenêtre est-elle une fenêtre interne ou une fenêtre classique ?
    - A quel endroit est déposé le code ci-dessus ?
    - Les champs de la fenêtre sont-ils initialisés au moment où ce code s'exécute ?

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    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 : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Quand tu cliques avec la souris, ça pointe une des lignes de la table, et ce n° de ligne est utilisable par ta procédure.
    Ce n'est pas le cas dans les autres essais que tu fais.

    Par ailleurs 'Ca ne fonctionne pas', c'est ambigu : la procédure ne se lance pas du tout ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    D'après le titre de la discussion, le code mis est celui présent dans l'init de la fenêtre.
    Si je ne m'abuse, l'init de la fenêtre se fait avant celle des champs donc l'appel au traitement de la ligne ne fonctionne pas car à ce moment la table est vide, non ?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Merci pour tous les conseils.
    Tous m'ont été utiles.
    Le problème venait d'une procédure appelée par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TimerSys(Rafraichir, gnTempo2, 2)
    Au lieu de TableAffiche(TABLE_HFRE, taCourantBandeau)
    j'avais mis :
    TableAffiche(TABLE_HFRE, taCourantEnreg)
    La temporisation était tellement courte que le curseur n'avait pas le temps de sélectionner la ligne de la table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROCEDURE Rafraichir()
     
    // Pour détection automatique des modifications faîtes sur les autres postes.
    FinTimerSys(2)
    SI gnVersionFichier <> HVersion(HFRE) ALORS
        // Modification faîte sur un autre poste
        gnVersionFichier = HVersion(HFRE)
        SI Gauche(HFRE.NUMERO_FAC,2)<>"ZZ" ALORS
            TableAffiche(TABLE_HFRE, taCourantBandeau)
        FIN
    FIN
    TimerSys(Rafraichir, gnTempo2, 2)

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Citation Envoyé par Lo² Voir le message
    Bonjour,

    D'après le titre de la discussion, le code mis est celui présent dans l'init de la fenêtre.
    Si je ne m'abuse, l'init de la fenêtre se fait avant celle des champs donc l'appel au traitement de la ligne ne fonctionne pas car à ce moment la table est vide, non ?
    En regardant l'aide :
    https://doc.pcsoft.fr/?1010021
    J'ai remarqué que l'ordre d'exécution est diférent :
    L'ordre d'exécution des événements est le suivant :
    • Initialisation des champs de la fenêtre (*)
    • Initialisation de la fenêtre
    • Prise de focus

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    C'est l'ordre après l'initialisation de la fenêtre (fin d'initialisation), c'est à dire que les déclarations globales de la fenêtre a été faite (ce que j'appelle initialisation de la fenêtre).

    Je viens de faire un test dans une fenêtre avec des traces et j'ai comme résultat :
    déclarations globales de la fenêtre
    init des champs
    fin d'init de la fenêtre

  9. #9
    Membre actif

    Homme Profil pro
    Sans
    Inscrit en
    Mars 2018
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mars 2018
    Messages : 153
    Points : 295
    Points
    295
    Billets dans le blog
    1
    Par défaut
    Un petit test rapide montre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Declarations globales
    Init  Saisie1
    Init  Bouton1
    Demande Mise à jour
    Fin Init
    Donc les champs sont initialisés entre "Declarations globales" et "Demande Mise à jour"

  10. #10
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 264
    Points
    5 264
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Une précision :
    Déclarations globales de la fenêtre
    Initialisation des modèles de champs
    Initialisation des champs
    Initialisation du modèle de la fenêtre
    Initialisation de la fenêtre
    et ce pour les version >5.5 avant, les champs étaient initialisés à la fin
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Dans mon exemple le problême venait de l'emplacement du Timer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Declarations globales FENETRE // LE TIMER ETAIT DECLENCHE ICI
    Initialisation TABLE_HFRE // AVANT L'INITIALISATION DE LA TABLE
    Initialisation COMBO_BUSCAR
    Prise de focus FENETRE
    FIN Initialisation TABLE_HFRE
    Initialisation FENETRE 
    FIN Initialisation TABLE_HFRE
    Merci pour tout.

  12. #12
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 264
    Points
    5 264
    Billets dans le blog
    1
    Par défaut
    Propos légèrement hors sujet, pourquoi faire tourner un timer plutôt que d'utiliser un trigger ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  13. #13
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    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 : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Dans Déclarations-Globales de la fenêtre, il faut mettre les déclarations des variables globales, et normalement rien d'autre.
    Les traitements d'Init sont dans la section 'Initialisation de la fenêtre'.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Pourtant c'est exactement ce que fait Pcsoft dans l'exemple WD qui bloque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TitreEnCours(LibelleFichier("CLIENT"))
     
    // Timer permettant de signaler les demandes de libération de blocage envoyés d'autres utilisateurs
    TimerSys(MsgBlocage,500,1)
     
     
    // Pour rafraîchissement automatique
    GLOBAL
        nVersionFichier est un entier  
     
     
        nVersionFichier = HVersion(CLIENT)
        TimerSys(Rafraichir,50,2)

  15. #15
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Dans Déclarations-Globales de la fenêtre, il faut mettre les déclarations des variables globales, et normalement rien d'autre.
    Les traitements d'Init sont dans la section 'Initialisation de la fenêtre'.
    Bonjour tbc92,

    Ta remarque m'a trotté dans la tête tout le week-end mais j'ai eu la flemme d'ouvrir mon PC pour vérifier ^^

    Globalement, je suis d'accord avec toi mais ce qui m'a fait me poser des questions c'est cette section d'Initialisation de fenêtre.
    Ca fait un bout de temps que je bosse sur Windev et ça ne me disait rien.
    J'ai vérifié ce matin et je n'ai pas cette section sur mes fenêtres.

    Quand je regarde l'aide sur les événements associés à une fenêtre, ça parle d'un ordonnancement initialisation des champs, initialisation de la fenêtre, prise de focus.
    Est-ce que la section Fin d'initialisation correspond à l'initialisation pour toi ?

  16. #16
    Membre actif

    Homme Profil pro
    Sans
    Inscrit en
    Mars 2018
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mars 2018
    Messages : 153
    Points : 295
    Points
    295
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lo² Voir le message
    ...Quand je regarde l'aide sur les événements associés à une fenêtre, ça parle d'un ordonnancement initialisation des champs, initialisation de la fenêtre, prise de focus.
    Est-ce que la section Fin d'initialisation correspond à l'initialisation pour toi ?
    Bonjour à tous,

    Je pense, moi aussi, que initialisation de la fenêtre, indiqué par l'aide et tbc92, correspond à l'évènement Fin d'initialisation de la fenêtre.

    L'initialisation de la fenêtre correspond en fait, et ça n'engage que moi, à tout ce qui se passe entre la première instruction de Declarations globales de la fenêtre jusqu'à la dernière instruction de Fin d'initialisation de la fenêtre.

    Dans les déclarations globales, je mets, bien évidemment les déclarations des variables globales à la fenêtre mais aussi, et ça n'engage là encore que moi ( @ tbc92), l'initialisation des éléments qui seront nécessaires aux champs contenus dans ma fenêtre.
    J'initialise, notamment, une classe de <présentation> quasiment systématiquement associée à ma fenêtre (Interne ou normale) qui se charge de diriger l'ensemble. Si cette classe a besoin d'autres éléments extérieurs, c'est aussi à cette étape que cela se passe.

    Je ne vois pas comment faire autrement. Je n'ai aucun autre "évènement" pouvant se substituer aux Declarations globales de la fenêtre avant que mes champs puissent être initialisés.

  17. #17
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    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 : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Est-ce que la section Fin d'initialisation correspond à l'initialisation pour toi ?
    Effectivement, dans l'éditeur de code , cette section s'appelle fin d'initialisation. Initialisation, ou fin d'initialisation : on parle de la même chose. Désolé si je n'ai pas utilisé le mot précis.

    Je ne suis pas complètement d'accord avec PadBrain.
    Mon sentiment (je n'ai pas fait d'expérience pour vérifier, pas relu la doc non plus) :

    -1- Exécution de la section : Déclarations Globales de la fenêtre ; en particulier, si on a des paramètres dans l'appel de la fenêtre, on a besoin de commencer par cette section pour récupérer les paramètres.
    -2- Exécution des codes d'initialisation des champs
    -3- Exécution du code de fin d'initialisation de la fenêtre.

    En particulier, si la section 'Déclarations globales' et 'Fin d'initialisation' étaient exécutées dans la foulée l'une de l'autre, PCSoft n'aurait pas créé 2 sections séparées !

    Dans les faits, je mets très rarement du code dans la partie 'Initialisation des champs', et donc j'ai rarement l'occasion de tester si cette partie s'exécute avant ou après telle autre.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  18. #18
    Membre actif

    Homme Profil pro
    Sans
    Inscrit en
    Mars 2018
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mars 2018
    Messages : 153
    Points : 295
    Points
    295
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    ...
    Je ne suis pas complètement d'accord avec PadBrain.
    Sur tout ou sur ça :

    En particulier, si la section 'Déclarations globales' et 'Fin d'initialisation' étaient exécutées dans la foulée l'une de l'autre, PCSoft n'aurait pas créé 2 sections séparées !
    Je suis d'accord avec ça. Je n'ai pas dis que Déclarations globales et Fin d'initialisation étaient exécutées dans la foulée mais que JE CONSIDÉRAIS que la partie initialisation de la fenêtre englobait les évènements allant de Déclarations globales à Fin d'initialisation

    ceci comprend ce qui suit avec entre le -2- et le -3- l'évènement -2.1-Demande de mise à jour IHM

    Mon sentiment (je n'ai pas fait d'expérience pour vérifier, pas relu la doc non plus) :

    -1- Exécution de la section : Déclarations Globales de la fenêtre ; en particulier, si on a des paramètres dans l'appel de la fenêtre, on a besoin de commencer par cette section pour récupérer les paramètres.
    -2- Exécution des codes d'initialisation des champs
    -3- Exécution du code de fin d'initialisation de la fenêtre.


    Dans les faits, je mets très rarement du code dans la partie 'Initialisation des champs', et donc j'ai rarement l'occasion de tester si cette partie s'exécute avant ou après telle autre.
    Mes champs s'occupent d'initialiser eux même leur contenu. Du coup, lorsque j'ai besoin que leur contenu se mette à jour, je fait un petit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monChamp.ExécuteTraitement(TrtInit)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/10/2006, 13h20
  2. [C#/ASP.Net] Pourquoi "ConnectionString n'a pas été initialisée" ?
    Par Louisa dans le forum Accès aux données
    Réponses: 5
    Dernier message: 21/07/2006, 10h31
  3. onChange ne réagit pas
    Par tomchaz dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/07/2006, 17h17
  4. Editbox d'activeX qui ne réagit pas au backspace
    Par mr.saucisse dans le forum MFC
    Réponses: 18
    Dernier message: 01/03/2006, 18h35
  5. TCombboxEx ne réagit pas à la saisie
    Par SkYsO dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/02/2006, 18h25

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