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 :

Remarque et avis sur l'ordre d'init des champs [WD18]


Sujet :

WinDev

  1. #1
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 79
    Points
    79
    Par défaut Remarque et avis sur l'ordre d'init des champs
    Bonjour,

    J'ai plusieurs champs dans ma fenetre et pour l'ordre d'initialisation, j'ai pris l'habitude de tout mettre dans l'init de la fenetre (beaucoup plus pratique car s'il y a beaucoup de champs a initialiser, il faudrait tous les faires 1 par 1)

    Par contre il y a un truc qui n'est pas très logique à mon avis, c'est que les codes qui sont dans les modifications de champs se font avant l'init de la fenetre...

    exemple :
    j'ai un selecteur avec du code qui se base sur un champs date.
    Le champs date est initialisé uniquement a l'init de la fenetre.
    Du coup le code plante car il fait en 1er le code de modif du selecteur avant l'init.

    Je trouve donc que c'est illogique mais surtout 'dangereux' car on risque d'oublier la moitié des champs

    Mise a pars 'tricher' avec une variable d'init, je ne vois pas d'autres solutions.
    Qu'en pensez vous ?

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Ou simplement tester que tu as une date valide dans le traitement de ton sélecteur.
    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.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Bonjour,

    "...car il fait en 1er le code de modif du selecteur avant l'init."

    Ca me parait étrange effectivement... n’appelez-vous pas le code de modification via un ExecuteTraitement() quelque part ?

    Le code de modification du champ ne doit être appelé que s'il y a une modification "interface" par l'utilisateur... pas à l'initialisation... à moins que je me trompe !
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  4. #4
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 79
    Points
    79
    Par défaut
    je me répond a moi même mais je pense que ca peux interresser certains...

    en fait c'est parceque sur mon champ de type selecteur, j'ai coché 'mémoriser la valeur' et du coup windev fait ce code en 1er (toujours pas logique pour ma part mais bon au moins je sais d'ou proviens le soucis.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 276
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Cela provient du fait que vos champs ont l'option "Mémoriser la valeur" (enfin, c'est la seule explication plausible que je vois ! ).
    Pour ces champs, le code de modification est automatiquement exécuté à l'initialisation du champ.

    Voir la page http://doc.pcsoft.fr/fr-FR/?9000019 (la remarque du paragraphe "Comment le faire ?").

    Cordialement

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 276
    Points : 739
    Points
    739
    Par défaut
    (Déciment, pas de bol en ce moment, je réponds toujours à quelques secondes près .)

    Pour vous répondre, il y a bien une "logique" : lorsqu'on effectue un choix sur un sélecteur, généralement (souvent ?) on va exécuter du code en fonction de la valeur du sélecteur (pour modifier l'IHM, positionner des variables, etc.)
    Si la valeur est positionnée automatiquement via la mémorisation, mais que le code n'est pas exécuté, il y a risque de déphasage.

    Il est toutefois possible de contrer le mécanisme tout en conservant la mémorisation. Il suffit d'utiliser la fonction FenInitialisée (http://doc.pcsoft.fr/fr-FR/?1000018919) : si la fenêtre n'est pas initialisée, alors on stoppe l'exécution du code de modification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    -- Code de modif du sélecteur
    Si FenInitiliasée() = faux alors retour
     
    // Mon code de modification
    SELON SEL_MonSelecteur
    ...
    FIN

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Citation Envoyé par cassandra Voir le message
    je me répond a moi même mais je pense que ca peux interresser certains...

    en fait c'est parceque sur mon champ de type selecteur, j'ai coché 'mémoriser la valeur' et du coup windev fait ce code en 1er (toujours pas logique pour ma part mais bon au moins je sais d'ou proviens le soucis.
    On en apprend tous les jours...

    Merci pour votre retour !
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  8. #8
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 79
    Points
    79
    Par défaut
    pour ce qui est de cette logique ou non, je pense qu'on va chacun avoir son avis..

    par contre merci pour l'asctuce fenetreinitialisé c'est parfait

  9. #9
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Comme le dit djejackk, la fonction FenInitialiée() est pratique pour ça

    Je l'utilise systématiquement dans les codes de modif. de champs, ça évite d'avoir des surprises si un jour on coche "mémoriser la valeur"

  10. #10
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    A noter que ce problème se rencontre aussi lorsqu'on utilise une liaison fichierHF<-->combo ou fichierHF<-->Table.
    J'en ai fais les frais très récemment.

  11. #11
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Il faut aussi avoir à l'esprit que cela modifie la propriété ..Modifié du champ qu'il peut donc être utile de remettre à Faux dans la foulée pour avoir l'esprit tranquille.

    Comment le faire ?

    Pour activer ou désactiver la persistance d'un champ dans une fenêtre, il suffit de cocher ou décocher l'option "Mémoriser la valeur" dans l'onglet "Détail" de la fenêtre de description du champ.

    Par défaut, les valeurs des champs "persistants" sont stockées dans la base de registres.

    Remarque : L'utilisation de cette option provoque l'exécution du code "A chaque modification" lors de l'initialisation du champ. La propriété ..Modifie du champ est modifiée (<NomChamp>..Modifie = Vrai).
    Hemgé

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 812
    Points
    812
    Par défaut
    Bonjour à tous,

    J'ai mis 5 étoiles à la discussion et des à tout le monde, car cette discussion met en avant des aspects subtils, facilement oubliés, et des bonnes pratiques à conserver.

    J'ajoute cette discussion dans mes favoris Forum WD.

    aux membres du forum.

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

Discussions similaires

  1. Introduction au traitement numérique des images
    Par millie dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 08/12/2008, 22h02
  2. Réponses: 4
    Dernier message: 03/12/2007, 16h28
  3. Réponses: 3
    Dernier message: 25/08/2006, 18h06
  4. Votre avis sur l'ouverture aux particuliers des .fr ?
    Par helium_lynx dans le forum Domaines
    Réponses: 5
    Dernier message: 10/10/2005, 10h26

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