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 :

Problème de passage de paramètre d'un etat composite vers un sous etat


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Problème de passage de paramètre d'un etat composite vers un sous etat
    Bonjour,

    J'ai un problème avec le passage de paramètres entre mon état composite et mon sous état.

    Dans le code d'ouverture de l'état composite, j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PROCÉDURE MonEtat(pIDVar est un entier)
     
    iInitSousEtat(ETAT_DPE_Portrait_Parametres_Variante,pIDVar)
    dans le code de mon sous-etat, j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROCÉDURE ETAT_DPE_Portrait_Parametres_Variante(iDVar est un entier)
     
    //Déclaration des variables
    Tab_Temp est un tableau associatif de réels
     
    //On recherche la variante
    HLitRecherchePremier(DPE_VARiante,IDDPE_VARiante,iDVar)
    SI iDVar = 0 _OU_ PAS HTrouve(DPE_VARiante) ALORS RETOUR
     
    //On transfert les données vers le tableau temporaire
    Tab_Temp <= Tab_Variantes[iDVar]
    J'ai besoin d'imprimer cet état plusieurs fois et en un seul document. Du coup, j'utilise le code suivant la fonction iEnchaînementAjoute avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iEnchaînementAjoute(sNomEtat,iParamEtat1)
    sNomEtat est une variable de type chaine et iParamEtat1 un entier

    L'état composite va se répéter autant de fois que nécessaire avec un pIDVar différent à chaque fois évidement.

    J'ai exécuté le code pas à pas et je vois que le paramètre pIDVar récupéré par l'état composite n'est pas correctement envoyé au sous etat
    A l'exécution de la la fonction iInitSousEtat, la valeur passée en paramètre au sous état est correcte et correspond bien à l’enregistrement cherché
    Mais quand je vérifie la valeur récupérée par le sous etat à son ouverture, ça n'est pas la même !?
    En fait, c'est la première valeur passée qui reste

    Du coup, la fonction iEnchaînementImprime() utilisée à la fin, imprime bien plusieurs états mais ils ont tous les mêmes données

    Je cherche mais je sèche

    Si vous avez un tuyau, je sui preneur

    Merci de votre aide ;-)
    Les solutions les plus simples sont les plus efficaces

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Si je passe mon paramètre sous la forme d'une variable globale, ça fonctionne.
    c'est curieux cet histoire de paramètre qui diffère entre le point de départ et d'arrivée non ?
    Les solutions les plus simples sont les plus efficaces

  3. #3
    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
    Hello lolo,

    Je ne suis pas surpris pour l'histoire de la variable globale. Après, ca ne me parait pas logique.

    Peut-être faudrait-il appeler le ST pour avoir une explication.
    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

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci de l'info french, parfois je me demande si c'est moi qui bosse mal ou si le Windev bug
    Je renonce à appeler le ST car il me demande toujours de produire un projet qui produit le bug et j'ai toujours du mal à reproduire l'erreur dans un projet spécifique car je ne sais pas d'où elle vient.

    Maintenant j'ai un autre problème et il semble que ça soit aussi lié au fait que j'utilise la fonction iEnchainementAjoute.

    Dans le même état composite, j'appelle un état dans lequel une image va être affichée en fonction d'une valeur.
    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    SELON ArrondiSupérieur(Tab_Temp["Indice_EP"],0)//ArrondiSupérieur(Val(Lib_EP),0)
    			CAS 1 À 49
    				Lib_EP..Y = Tab_Y[1]
    				Lib_EP..Couleur = Blanc
    				IMG_EP_P = "IMG_Etiquette_EP_A.png"
    			CAS 50 À 90
    				Lib_EP..Y = Tab_Y[2]
    				Lib_EP..Couleur = Blanc
    				IMG_EP_P = "IMG_Etiquette_EP_B.png"
    			CAS 91 À 150
    				Lib_EP..Y = Tab_Y[3]
    				Lib_EP..Couleur = Noir
    				IMG_EP_P = "IMG_Etiquette_EP_C.png"
    			CAS 151 À 230
    				Lib_EP..Y = Tab_Y[4]
    				Lib_EP..Couleur = Noir
    				IMG_EP_P = "IMG_Etiquette_EP_D.png"
    			CAS 231 À 330
    				Lib_EP..Y = Tab_Y[5]
    				Lib_EP..Couleur = Noir
    				IMG_EP_P = "IMG_Etiquette_EP_E.png"
    			CAS 331 À 450
    				Lib_EP..Y = Tab_Y[6]
    				Lib_EP..Couleur = Blanc
    				IMG_EP_P = "IMG_Etiquette_EP_F.png"
    			CAS > 450
    				Lib_EP..Y = Tab_Y[7]
    				Lib_EP..Couleur = Blanc
    				IMG_EP_P = "IMG_Etiquette_EP_G.png"
    			AUTRES CAS
    				Lib_EP..Y = Tab_Y[7]
    				IMG_EP_P = "IMG_Etiquette_EP_X.png"
    				Lib_EP = 0
    		FIN
    Cet état composite doit être répété 2 fois
    Si j'imprime les 2 exemplaire indépendamment l'un de l’autre, pas de problème, mes images apparaissent et sont parfaitement imprimées
    Mais si j'imprime en ayant utilisé la fonction iEnchainementAjoute puis iEnchaînementImprime(), seul le premier document est correct, le second n'a pas d'image
    Si je fais la même chose mais en demandant un aperçu écran, j'ai bien les images sur les deux exemplaires mais si j'imprime à partir du visualisateur, même problème, l'image du doc 2 ne s'imprime pas.
    Pourtant elle est bien visible à l'écran dans le visualisateur.
    Et plutôt que d'imprimer, j'exporte en PDF, pas de problème, l'image est bien là...

    J'y perd mon latin.
    Les solutions les plus simples sont les plus efficaces

  5. #5
    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
    Hello lolo,

    Je suis d'accord avec toi pour le st. Ma dernière requête a nécessité un projet. Mais comme c'était facile à reproduire, j'ai pu le faire en 5 min. Bon, je pense que le correctif apparaîtra en version 42, mais bon.
    Là ou je suis dubitatif, c'est quand on a un code migré au fil des versions (16 puis 18 puis 22 puis 24), qui ne fonctionne plus en 24...

    Les ienchainexxx sont assez "pointus" à faire, je trouve.

    Une astuce (une idée), à tester, est de charger tes images dans une variable/un tableau.
    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

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci de ta réponse et merci pour l'astuce des images en variables,

    En fait, j'ai déjà testé l'astuce de la mise en variables des images mais j'ai toujours le problème.
    Ce qui est bizarre c'est que l'état en question contient d'autres images qui ne posent pas de problème.
    J'ai beau essayer de trouver une différence de paramétrage ou je ne sais quoi, je trouve rien

    J'ai trouvé une autre astuce mais bon, c'est beurk :
    - A la fin de mon enchainement, j'imprime vers un pdf que j'ajoute ensuite dans un nouvel enchainement et pour finir, j'imprime le nouvel enchainement vers l'imprimante et je supprime le fichier créé.
    Les solutions les plus simples sont les plus efficaces

  7. #7
    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
    Pas mal ton astuce.

    Bah, tu sais, souvent il y a contournements qui sont "moches" mais malheureusement nécessaires.
    J'ai (eu) un souci d'inclusion de pdf dans un projet en 18. Je suis passé par un projet en wd24 pour convertir les pdf en images et comme ça sature la mémoire, je généré un pdf par facture que j'assemble par un autre projet en 24. Note : pour l'instant, on ne peut pas migrer le projet de 18 en 24.
    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

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Ouais, l'astuce est super moche mais elle fonctionne.
    J'ai la petite fenêtre d'info d'impression qui s'affiche deux, rien que ça c'est déjà nul

    Merci de ton aide French
    Les solutions les plus simples sont les plus efficaces

  9. #9
    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
    Pour ne pas avoir la fenêtre d'abandon (d'impression) qui s'affiche(souci que j'ai eu également), iFenêtreAbandon(faux) avant chaque impression.
    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

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Bon, mon astuce fonctionne mais pas à tous les coups

    Nom : 2021-03-02_134130.png
Affichages : 233
Taille : 11,1 Ko
    Les solutions les plus simples sont les plus efficaces

  11. #11
    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
    Une idée : je pense qu'elle est lourde : utiliser des blocs dans le même état. Et activer ces blocs en passant un paramètre. La question est : l'état est-il compliqué ou pas ?
    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

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci de ton aide french,

    J'ai trouvé la cause de l'erreur mais pas la solution.
    C'est le champ de numérotation des pages qui posait problème.
    Supprimé, plus de numéro de page (chiant) mais plus de bug (ouf)

    Mais maintenant j'ai un autre problème :
    Pour contourner mon problème de bug d'images sur des états enchainés, j'ai donc utilisé l'astuce de créer un fichier PDF intermédiaire
    Mais le fichier PDF généré, pour la première page, ne respecte pas la mise page de mes états. Il me la passe systématiquement en portrait. Les autres page sont ok, les états en portrait sont ok, mais les états en paysage sont merdiques.
    J'ai essayé de forcer la mise en page en paysage par iparametre, j'ai essayé d'insérer une page vide au début de l'état... rien ne fonctionne
    Les solutions les plus simples sont les plus efficaces

  13. #13
    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
    Pour le pb des pdf, une idée est de créer un état en mode paysage pour les imprimer (en tant qu'image).

    Ou de passer par iimprimeimage()/ifinimprime() en imprimant chaque page du pdf comme une image.
    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

  14. #14
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 807
    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 807
    Points : 5 263
    Points
    5 263
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Dans ton sous état, qu'est ce que ça donne en passant par 2 champs sous-état interne ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

Discussions similaires

  1. Réponses: 19
    Dernier message: 09/06/2006, 10h03
  2. Problème de passage de paramètres à une procedure
    Par momo62 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 22/12/2005, 15h22
  3. [template] problème de passage de paramètres
    Par vinny_the_true dans le forum C++
    Réponses: 2
    Dernier message: 14/12/2005, 01h15
  4. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  5. problème de passage de paramêtre sous mozilla
    Par mat10000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/09/2004, 10h48

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