PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Origine et marges physiques
  • Gestion du paramètre
  • Combinaison de positions
  • Divers
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Permet de gérer la position verticale (ordonnée ou ligne) du curseur d'impression dans la page. Il est possible de :
  • connaître la position verticale en cours,
  • modifier la position verticale du curseur d'impression.
Remarque : Lors de l'impression d'une chaîne texte, la position verticale en cours pointe sur le haut de la chaîne à imprimer. La ligne basse d'impression dépend de la hauteur des polices utilisées dans la ligne imprimée.
Exemple
// Traçage de traits horizontaux tous les deux millimètres
// sur toute la hauteur de la page
iTraitH(0, iLargeurPage(), 1)  // Trace un trait
iPosY(iPosY() + 2)  // Positionne le curseur 2 mm plus bas
iTraitH(0, iLargeurPage(), 3)  // Trace un second trait
iFinImprime()
Syntaxe

Connaître la position verticale du curseur d'impression Masquer les détails

<Résultat> = iPosY()
<Résultat> : Réel
Position verticale actuelle du curseur (en millimètres).

Modifier la position verticale du curseur d'impression Masquer les détails

<Résultat> = iPosY(<Position verticale> [, <Calcul immédiat>])
<Résultat> : Chaîne de caractères
Position verticale demandée.
<Position verticale> : Réel
Nouvelle position verticale (ordonnée ou ligne) du curseur d'impression (en millimètres).
<Calcul immédiat> : Booléen optionnel
  • Vrai (par défaut) pour effectuer immédiatement le calcul de la position verticale.
  • Faux si le calcul de la position verticale doit être effectué uniquement lors de l'impression (cas d'imbrication de positions par exemple). Pour plus de détails, consultez les remarques.
Remarques

Origine et marges physiques

L'origine (0,0) est située dans le coin supérieur gauche de la feuille. Cette origine tient compte des marges physiques de l'imprimante.
Chaque imprimante gère des marges physiques dans lesquelles aucune impression n'est possible. La fonction iMarge permet de définir des marges "logiques" d'impression. Si des marges logiques ont été définies, la fonction iPosY gère la position verticale par rapport à ces nouvelles marges.

Gestion du paramètre <Calcul Immédiat>

Lorsque le paramètre <Position Verticale> est précisé dans la fonction iPosY, la fonction effectue deux actions en même temps :
  • Renvoi d'une chaîne de caractères de contrôle. Cette chaîne de caractères de contrôle provoque une modification de la position d'impression au moment où elle est imprimée.
  • Modification immédiate de la position en cours du curseur d'impression
Le paramètre <Calcul immédiat> permet de récupérer la chaîne de caractères de contrôle sans modifier la position en cours du curseur d'impression.
sMonTitre est une chaîne = "Titre impression"
iAperçu()
// --- CAS 1 : <Calcul immédiat> à Vrai (par défaut)
// Positionnement du curseur à l'endroit souhaité
// Note : La chaîne de caractères de contrôle n'est pas récupérée ici
iPosX((iLargeurPage() - iLargeurTexte(sMonTitre))/2)
// Calcul pour centrer le texte
// Impression à la position du curseur précédemment déterminée
iImprime(sMonTitre) // Donc doit être centré
// --- CAS 2 : Le même code avec le paramètre <Calcul immédiat> à Faux
// La chaîne de caractères de contrôle n'est pas récupérée ici
// Et le curseur d'impression n'est pas positionné car
// <Calcul immédiat> est à Faux
// Note : Donc cette ligne ne sert à rien
iPosX((iLargeurPage() - iLargeurTexte(sMonTitre))/2, Faux)
// Impression à la position du curseur.
// La ligne de code précédente ne l'ayant pas changé, le texte va s'imprimer
// à la position précédente (donc en début de ligne ici)
iImprime(sMonTitre) // Donc NE doit PAS être centré
// --- CAS 3 : Le code en une seule ligne
// Avec le paramètre <Calcul immédiat> à Faux ou à Vrai,
// le résultat est le même
// La position du curseur d'impression est modifiée au moment de
// l'exécution de iPosX, et au moment de l'impression de la
// chaîne de caractères qui contient le résultat renvoyé par iPosX
iImprime(iPosX((iLargeurPage() - iLargeurTexte(sMonTitre))/2, Vrai) + sMonTitre)
// Donc doit être centré
// Le positionnement est fait deux fois : un peu plus lourd
// mais le résultat est celui attendu
// --- 3 Bis
// La position du curseur d'impression N'est PAS modifiée au moment
// de l'exécution de iPosX, MAIS elle est modifiée au moment
// de l'impression de la chaîne de caractères qui contient le résultat
// renvoyé par iPosX
iImprime(iPosX((iLargeurPage() - iLargeurTexte(sMonTitre))/2, Faux) + sMonTitre)
// Donc doit être centré
// Fin d'impression
iFinImprime()

Combinaison de positions

Lors de la combinaison de positions, des effets inattendus peuvent être observés. Par exemple, le code :
iPosY(50)
iImprime("Première partie" + iPosY(30) + "Seconde partie")
n'est pas équivalent à :
iImprime(iPosY(50) + "Première partie" + iPosY(30) + "Seconde partie")
Dans le premier cas, toute la chaîne de caractères est imprimée en position verticale 30. En effet, dans ce cas, la fonction iPosY(30) est exécutée lors de la construction de la chaîne à imprimer et donc avant l'impression de la chaîne "Première partie".
Pour obtenir un résultat identique, il suffit d'utiliser (dans la première syntaxe) la fonction iPosY avec le paramètre Faux : la fonction iPosY(30, Faux) ne sera réellement exécutée que lors de l'impression.
La même manipulation peut être réalisée avec la fonction iPosX.

Divers

La fonction iPosY ne doit pas être utilisée dans un paramètre de la fonction iImprimeMot.
Composante : wd240prn.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire