Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev
WinDev Forum d'entraide sur la programmation en WinDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 09h23   #1
cassandra
Membre du Club
 
Inscription : mai 2002
Messages : 56
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 56
Points : 55
Points : 55
Par défaut [WD18] 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 ?
cassandra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 09h26   #2
frenchsting
Expert Confirmé
 
Avatar de frenchsting
 
Homme Claude
Développeur informatique
Inscription : juin 2003
Messages : 1 806
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2003
Messages : 1 806
Points : 3 151
Points : 3 151
Ou simplement tester que tu as une date valide dans le traitement de ton sélecteur.
__________________
Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
Pas de question par MP s'il vous plait. Le forum est fait pour cela...

Make it real not fantasy
frenchsting est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 09h30   #3
michel.souris
Membre actif
 
Homme
Développeur informatique
Inscription : mars 2009
Messages : 151
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2009
Messages : 151
Points : 191
Points : 191
Envoyer un message via MSN à michel.souris
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
PHP/HTML/JS/CSS : et avec ça tu fais fessebouc !
Windev : ***** et **** parce que ***** même si ****** bien

"Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)
michel.souris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 09h36   #4
cassandra
Membre du Club
 
Inscription : mai 2002
Messages : 56
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 56
Points : 55
Points : 55
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.
cassandra est déconnecté   Envoyer un message privé Réponse avec citation 40
Vieux 09/01/2013, 09h36   #5
djejackk
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 158
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 158
Points : 445
Points : 445
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
djejackk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2013, 09h49   #6
djejackk
Membre éprouvé
 
Homme
Inscription : avril 2005
Messages : 158
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2005
Messages : 158
Points : 445
Points : 445
(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 :
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
djejackk est déconnecté   Envoyer un message privé Réponse avec citation 60
Vieux 09/01/2013, 09h50   #7
michel.souris
Membre actif
 
Homme
Développeur informatique
Inscription : mars 2009
Messages : 151
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2009
Messages : 151
Points : 191
Points : 191
Envoyer un message via MSN à michel.souris
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
PHP/HTML/JS/CSS : et avec ça tu fais fessebouc !
Windev : ***** et **** parce que ***** même si ****** bien

"Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)
michel.souris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 11h00   #8
cassandra
Membre du Club
 
Inscription : mai 2002
Messages : 56
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 56
Points : 55
Points : 55
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
cassandra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 12h36   #9
hpascal
Expert Confirmé
 
Homme Pascal
Inscription : juillet 2002
Messages : 1 435
Détails du profil
Informations personnelles :
Nom : Homme Pascal
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2002
Messages : 1 435
Points : 2 776
Points : 2 776
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"
hpascal est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2013, 13h41   #10
Atsibat
Membre expérimenté
 
Développeur informatique
Inscription : mars 2009
Messages : 300
Détails du profil
Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2009
Messages : 300
Points : 574
Points : 574
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.
Atsibat est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/01/2013, 10h33   #11
Hemgé
Membre chevronné
 
Homme
Inscription : octobre 2007
Messages : 306
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2007
Messages : 306
Points : 726
Points : 726
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.

Citation:
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é
Hemgé est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 11/01/2013, 11h41   #12
OnePoint
Membre expérimenté
 
Inscription : septembre 2010
Messages : 208
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : septembre 2010
Messages : 208
Points : 535
Points : 535
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.
OnePoint est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h22.


 
 
 
 
Partenaires

Hébergement Web