PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → [WD24] iEnchaînementAjoute et rectoverso ajouter une page blanche
[WD24] iEnchaînementAjoute et rectoverso ajouter une page blanche
Iniciado por Gurdarr, 20,feb. 2020 11:56 - 3 respuestas
Miembro registrado
237 mensajes
Publicado el 20,febrero 2020 - 11:56
Bonjour,

J'utilise iEnchaînementAjoute sur une imprimante recto verso pour imprimer à la chaine des Factures bien entendu l'objectif est qu'une facture qui tient sur une page n'est pas dans son verso le début de la facture suivante.

J'ai essayer le code suivant en fin de document
SI bRectoversoActiver ALORS
//On est sur une page impair
SI EstPair(iNumPage()) = Faux ALORS //Attention au moment du test on est déjà sur la page suivante
// iNumPage(1) //crache en wd24 c'est iraznbpages qui modifie iNumPage
iRAZNbPages()
// iEnchaînementAjoute(Etat_PageBlanche)
{"HAUT_DE_PAGE"}..Visible = Faux
iTerminePage()
// iImprimeEtat(Etat_PageBlanche) //impossible d'ajouter une impression quand on fait un iEnchaînementAjoute
// iNumPage(1) //crache en wd24 c'est iraznbpages qui modifie iNumPage
iRAZNbPages()
SINON
// iNumPage(1) //crache en wd24 c'est iraznbpages qui modifie iNumPage
iRAZNbPages()
FIN
SINON
// iNumPage(1) //crache en wd24 c'est iraznbpages qui modifie iNumPage
iRAZNbPages()
FIN


Sauf que cela fausse complétement le nombre de page total des états suivants qui garde quand nombre de page total (+1 pour chaque iterminepage que j'ai effectué)

Je veux juste pouvoir insérer une page blanche... c'est triste à dire

Note iimprimeetat ne marche pas du tous avec iEnchaînementAjoute ça c'est con


Vous avez une astuce ?
Miembro registrado
194 mensajes
Publicado el 20,febrero 2020 - 12:21
Bonjour

De mémoire (je n'ai pas les codes sous les yeux là) je jouais sur les données (ajout d'un enregistrement vide dans ma variable tableau utilisée en databinding sur l'état) lorsque j'avais un verso sans recto. C'est une piste à explorer.

--
Côme, Clairinfo
Miembro registrado
237 mensajes
Publicado el 20,febrero 2020 - 15:19
Bon

j'avais oublié un truc sur windev il est pas fait pour être simplevous allez comprendre

bon j'ai réussi à intégré mes pages blanches sur les impression pair lors du recto verso uniquement sur les document qui terminent sur une page impair...

le secret c'est de faire :
iRAZNbPages()
iEnchaînementAjoute(NomEtatExt,sZoneEnchainement)
SI bRectoversoActiver ALORS
iRAZNbPages()
iEnchaînementAjoute(Etat_PageBlanche,sZoneEnchainement)
FIN


et la vous allez me dire Gurdarr tu es pété ce code imprime une page blanche pour chacun de tes états...
Et je vous dirais que tu as parfaitement raison Billy !

Mais regarde dans le code de Etat_PageBlanche
//Ouverture de l'état
NumPage++ //note je n'imprime qu'une page dans l'état donc je le met à l'ouverture
n est un entier = 0

//lecture des données de l'état
SI EstImpair(NumPage) ALORS
//on imprime pas
RENVOYER Faux
FIN
n++
SI n>1 ALORS
RENVOYER Faux
FIN
RENVOYER Vrai


Attention j'utilise la variable global NumPage sur toutes mes pages de mes états, n'utiliser pas inumpage() il est bugué en wd24 (il marche en wd23)

Et la on se retrouve bien avec une page blanche sur les page pair des documents qui terminent sur une page impair

Sauf qu'il y a encore un bug Billy ! Malgré l'utilisation de iRAZNbPages() tes documents comptes toujours la page blanche
Pour résoudre cela met hors champ le champ avec le numéro de page windev

Merci
Miembro registrado
194 mensajes
Publicado el 21,febrero 2020 - 11:18
Bonjour

Bon en fait ma mémoire m'a joué des tours !
Dans mon cas pour résoudre le point j'ai en fait procédé ainsi :

- initialisation d'un compteur de page à l'ouverture de l'état :
nNumPage est un entier

- Avant impression de haut de page :
nNumPage++

- Après impression fin de rupture 1 (mon problème était là parfois le bloc rupture 1 tenait sur une page et parfois il tenait sur plus)
SI Modulo(nNumPage,2) <> 0 ALORS
// Page impaire ? => Ajouter une page vierge pour verso
nNumPage++
iSautePage()
FIN

Donc rien à voir avec ma réponse initiale désolé (souvenir d'une autre technique surement également utilisé dans d'autres situations)

--
Côme, Clairinfo