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 :

Etat multi-page par programmaton [WD19]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut Etat multi-page par programmaton
    Bonjour à tous,

    Je travaille actuellement sur un état dont le principe est le même que pour des impressions d'étiquettes mais :
    - la deuxième page sera différente (page de texte)
    - je veux pouvoir changer les données de mes étiquettes au bout de quelques pages
    - les données que je veux imprimer sur les étiquettes proviennent d'une liste (je sélectionne dans la liste ceux que je veux et le nombre de copies)

    Au final, c'est censé donner ça si j'ai sélectionné dans la liste (qui contient par exemple A, B, C, D et E) les lettres A, C, D et décidé d'en imprimer 2 exemplaires :
    1 page d'étiquettes A
    Un texte lié à A
    1 page de A
    Un texte lié à A
    1 page de C
    Un texte lié à C
    1 page de C
    Un texte lié à C
    1 page de D
    Un texte lié à D
    1 page de D
    Un texte lié à D

    Je le fais actuellement dans un état vierge par programmation dans lequel je clone mes champs. J'ai testé avec des iSautePage() et iTerminePage() mais j'ai souvent juste des pages vierges au début puis une page d'étiquettes .

    Quelqu'un saurait comment faire?

    Merci d'avance!

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Personne n'a d'idée ou je me suis mal exprimé

  3. #3
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    As-tu une gestion des positions x et Y des champs que tu clones ?
    Vérifies que tu n'as pas un problème avec une position Y

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Hello ,

    Merci pour la réponse.

    Alors justement. Je commence par cloner et positionner sur une page. Dans ce cas, tout fonctionne, c'est bien positionné (peu importe le nombre).
    Dès que j'ajoute une page (via iSautePage etc), une page vide se positionne au début du document (x et y n'ont pas changé, je les ai fixé pour tester, pourtant ils sont décalés d'une page).

    Si je suis sur une nouvelle page, comment dois-je gérer ma position Y?
    Voici une des versions testées du code (j'ai épuré dans le post, donc s'il y a une erreur de syntaxe ou autre, c'est une erreur mais le code est bon dans windev) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    xInit est un numérique=2
    yInit est un numérique=3.175
    POUR j=1 _A_ 17
    	POUR i=1 _A_ 9
    		ChampClone(LIB_SansNom,"LIB_SansNom_"+i+"_"+j,xInit+(i-1)*(20+2),yInit+(j-1)*(20+2))
    		{"LIB_SansNom_"+i+"_"+j}="test"
    	FIN
    	SI j=13 ALORS
    		iSautePage()
    	FIN
    FIN
    L'idée est que je ne peux en mettre que 13 par page d'où le j --> 17 et le isautepage en j=13

    Merci d'avance

  5. #5
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    bonjour

    Citation Envoyé par Simeonn Voir le message
    Si je suis sur une nouvelle page, comment dois-je gérer ma position Y?
    Tu dois réinitialiser la position Y quand tu changes de page ou d'après ton code gérer un compteur de champ par pages et ne pas utiliser le compteur j.

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Merci pour l'info, je vais regarder de ce côté.

    Mais j'ai tout de même une question : Pourquoi dans ce cas c'est la première page qui est vierge et pas la deuxième?

  7. #7
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    J'utiliserais la fonction iTerminePage au lieu de iSautePage.

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Je suis de retour.

    Concernant le iTerminePage(), je viens de l'utiliser, le comportement est similaire. J'en ai profité pour remettre à zéro la position initiale : aucun changement.
    J'ai voulu tenter des valeurs négatives... pareil.

    J'en perds la tête...

    Je vais tenter quelques essais encore, voire changer complètement de technique... On verra bien...

  9. #9
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Lorsque l'on créé un état par programmation il faut utiliser les fonctions iPosx() et iposY().

    Comme tu n'as pas utiliser ces fonctions pour forcer les positions x et y dans ton code, les positions respectives sont 0 et 0. C'est pour cette raison que les fonctions iSautePage() et iTerminePage() te créer une page vierge en première page.

    Si tu veux conserver ton code avec l'utilisation de la fonction champClone(), voici un exemple de code :
    Code non testé, écris directement dans le fil de discussion

    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
     
    xInit est un numérique=2
    yInit est un numérique=3.175
    POUR j=1 _A_ 17
    	POUR i=1 _A_ 9
    		ChampClone(LIB_SansNom,"LIB_SansNom_"+i+"_"+j,xInit+(i-1)*(20+2),yInit+(j-1)*(20+2))
                    //----->Modification des positions x et Y dans l'état
                    iPosX(xInit+(i-1)*(20+2))
                    iPosY(yInit+(j-1)*(20+2))
    		{"LIB_SansNom_"+i+"_"+j}="test"
    	FIN
    	SI j=13 ALORS
    		iSautePage()
                    //------>Initialisation des positions X et Y pour la nouvelle page. Cette initialisation est surement inutile. A tester
                    iPosX(0)
                    iPosY(0)
    	FIN
    FIN
    Dis moi si cela fonctionne, je pense que la ré initialisation a zéro n'est pas utile ...

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Salut :hello: !

    Merci beaucoup pour le code, je vais tester ça dès que j'en ai la possibilité, dans la journée.

    Je reviens donner des nouvelles dès que c'est bon. Merci!

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    Je suis de retour, avec de bonnes nouvelles.

    Bien que le code n'ait pas fonctionné, il m'a permis de tester pas mal de choses auxquelles je n'aurais pas pensé.
    Donc merci beaucoup, ça fonctionne très bien.

    Le code que je donnais en exemple n'était pas exactement ce que j'utilisais (pour simplifier, j'avais enlevé une partie). Je voulais voir apparaitre des codes barres en plus de libellés.
    Finalement, avec ces idées de iPosX et iPosY, j'ai trouvé les fonctions iImprimeCodeBarre et iImprimeMot dont je me suis servi.
    Au final, il me reste simplement à sauter une page quand nécessaire et réinitialiser la position d'écriture d'où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    POUR j=1 _A_ 13
    	POUR i=1 _A_ 9
    		iImprimeCodeBarre(MonQRCode, xInit+(i-1)*(20+2),yInit+(j-1)*(20+2), xInit+(i-1)*(20+2)+CBA_CAB..Largeur, yInit+(j-1)*(20+2)+CBA_CAB..Hauteur)
    		iImprimeMot(iPolice(1)+iPosX(xInit+(i-1)*(20+2))+iPosY(yInit+(j-1)*(20+2)+CBA_CAB..Hauteur)+"Test1")
    	FIN
    	SI j=13 ALORS
    		iSautePage()
    		yInit-=(j)*(20+2)
    		iImprime("Etat1")
    	FIN
    FIN
    Merci beaucoup pour ton aide et ta patience
    Je note comme résolu!
    Thx

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

Discussions similaires

  1. [AC-2007] Etat : Une page par enregistrement
    Par j.lebowski dans le forum IHM
    Réponses: 2
    Dernier message: 09/07/2010, 12h50
  2. [Etat] Une page par semaine pour un intervalle
    Par robocop2776 dans le forum IHM
    Réponses: 5
    Dernier message: 08/08/2007, 18h12
  3. N° de page par groupe dans etat
    Par electrosat03 dans le forum IHM
    Réponses: 2
    Dernier message: 18/06/2007, 19h42
  4. Réponses: 7
    Dernier message: 05/12/2003, 10h14

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