PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE


  • Origine et marges physiques
  • Gestion du paramètre
  • Combinaison de positions
  • Impression en Java et Android
  • 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.
Versions 18 et supérieures
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Nouveauté 18
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Versions 19 et supérieures
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Nouveauté 19
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Versions 21 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Nouveauté 21
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
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.
AndroidWidget AndroidJava

Impression en Java et Android

Les impressions peuvent être moins précises car la résolution des impressions est de 72 points par pouce (ppp) même si l'imprimante supporte des résolutions plus importantes.
Conséquence : Les calculs des points des images et des dessins (traits par exemple) sont arrondis durant les calculs de position en impression, en particulier lorsque l'on manipule des valeurs petites. Lors de l'impression, les calculs se font en point (en fonction de la résolution d'impression) et non en mm (ou cm).
Exemple : Impressions de traits en Java : si les traits sont espacés de 0.5 mm, combien y a-t-il de points entre chaque trait en Java (résolution 72 ppp) ?
Le premier trait est à 0.5 mm soit (0.5/25.4) pouces et avec une résolution de 72 points par pouce (ppp) : (0.5/25.4) x 72 = 1,42 point. Mais le point est l'unité de base, il est donc indivisible : le résultat est automatiquement arrondi au 1 point inférieur ou supérieur selon le cas.
Voici donc une succession de traits imprimés avec un espace de à 0.5 mm :
  • 0.5 mm --> (1.42) 1 point
  • 1.0 mm --> (2.84) 3 points
  • 1.5 mm --> (4.25) 4 points. Attention : le trait à 1.5 mm est collé avec le trait qui est à 1 mm (sans espace entre ces deux traits)
  • 2.0 mm --> (5.67) 6 points
  • 2.5 mm --> (7.09) 7 points. Attention : le trait à 2.5 mm est collé avec le trait qui est à 2 mm (sans espace entre ces deux traits)
  • 3.0 mm --> (8.50) 9 points
  • 3.5 mm --> (9.92) 10 points. Attention : le trait à 3.5 mm est collé avec le trait qui est à 3 mm (sans espace entre ces deux traits)
  • 4.0 mm --> (11.33) 11 points. Attention : le trait à 4 mm est collé avec le trait qui est à 3.5 mm (sans espace entre ces deux traits)
  • etc.
Pour avoir une représentation fidèle (sans arrondis), la taille et / ou la position en mm pour une résolution de 72 ppp doit être un multiple de 127/360.
1 point --> (1/72) pouces --> (1/72) x 25.4 mm = 127/360 = 0.3527778 mm

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