La commande FIXER TAQUET IMPRESSION permet de définir la position d’un taquet au moment de l’impression. Combinée aux commandes Lire taquet impression, OBJET DEPLACER ou Imprimer ligne, cette commande permet d’ajuster la taille des zones d’impression.
FIXER TAQUET IMPRESSION peut être appelée dans deux contextes :
- lors de l’événement formulaire Sur entête, dans le cadre de l’utilisation des commandes IMPRIMER SELECTION et IMPRIMER ENREGISTREMENT.
- lors de l’événement formulaire Sur impression corps, dans le cadre de l’utilisation de la commande Imprimer ligne. Ce fonctionnement facilite l’impression d’états personnalisés (voir exemple).
L’effet de la commande est limité à l’impression, aucune modification n’apparaît à l’écran. Les modifications apportées aux formulaires ne sont pas sauvegardées.
Passez dans le paramètre numTaquet une des constantes du thème “Zone de formulaire” :
Constante |
Type |
Valeur |
Corps formulaire |
Entier long |
0 |
Entête formulaire |
Entier long |
200 |
Entête formulaire1 |
Entier long |
201 |
Entête formulaire10 |
Entier long |
210 |
Entête formulaire2 |
Entier long |
202 |
Entête formulaire3 |
Entier long |
203 |
Entête formulaire4 |
Entier long |
204 |
Entête formulaire5 |
Entier long |
205 |
Entête formulaire6 |
Entier long |
206 |
Entête formulaire7 |
Entier long |
207 |
Entête formulaire8 |
Entier long |
208 |
Entête formulaire9 |
Entier long |
209 |
Pied de page formulaire |
Entier long |
100 |
Rupture formulaire0 |
Entier long |
300 |
Rupture formulaire1 |
Entier long |
301 |
Rupture formulaire2 |
Entier long |
302 |
Rupture formulaire3 |
Entier long |
303 |
Rupture formulaire4 |
Entier long |
304 |
Rupture formulaire5 |
Entier long |
305 |
Rupture formulaire6 |
Entier long |
306 |
Rupture formulaire7 |
Entier long |
307 |
Rupture formulaire8 |
Entier long |
308 |
Rupture formulaire9 |
Entier long |
309 |
Passez dans position la nouvelle position souhaitée du taquet, exprimée en pixels.
Si vous passez le paramètre optionnel *, tous les marqueurs situés au-dessous du marqueur désigné par numTaquet seront déplacés du même nombre de pixels et dans la même direction que lui lors de l’exécution de la commande. Attention : dans ce cas, les objets éventuellement présents dans les zones situées au-dessous du marqueur sont également déplacés.
Lorsque le paramètre * est utilisé, il est donc possible de positionner le marqueur numTaquet au-delà de la position initiale des marqueurs qui le suivent — ces derniers étant déplacés simultanément.
Notes :
- Cette commande modifie la position des taquets existants uniquement. Elle ne permet pas d’ajouter des taquets. Si vous désignez un taquet qui n’existe pas dans le formulaire, la commande ne fait rien.
- Le fonctionnement des taquets d’impression en mode Développement est conservé : un taquet ne peut pas aller plus haut que celui qui le précède ni plus bas que celui qui le suit (lorsque le paramètre * n’est pas utilisé).
Cet exemple complet permet de générer l’impression d’un état sur trois colonnes, la hauteur de chaque ligne étant calculée à la volée en fonction du contenu des champs.
Le formulaire de sortie utilisé pour l’impression est le suivant :
L’événement formulaire Sur impression corps a été sélectionné pour le formulaire (rappelons que la commande Imprimer ligne ne génère que cet événement, quelle que soit la zone imprimée).
Pour chaque enregistrement, la hauteur de la ligne doit être adaptée en fonction du contenu de la colonne “Acteurs” ou “Résumé” (colonne ayant le plus de contenu). Voici le résultat souhaité :
La méthode projet d’impression est la suivante :
La méthode du formulaire Print_List3 est la suivante :
C_ENTIER LONG($g;$h;$d;$b;$larg_fix;$haut_préc;$g1;$h1;$d1;$b1)
C_ENTIER LONG($pos_finale;$i)
C_ENTIER LONG($position_c;$position_e;$hauteur_a_imprimer;$hauteur_restante)
Au cas ou
:(vSimpr_zone="Corps")
OBJET LIRE COORDONNEES([Film]Acteurs;$g;$h;$d;$b)
$larg_fix:=$d-$g
$haut_préc:=$b-$h
OBJET LIRE TAILLE OPTIMALE([Film]Acteurs;$larg;$haut;$larg_fix)
$deplacement:=$haut-$haut_préc
OBJET LIRE COORDONNEES([Film]Résumé;$g1;$h1;$d1;$b1)
$larg_fix1:=$d1-$g1
$haut_préc1:=$b1-$h1
OBJET LIRE TAILLE OPTIMALE([Film]Résumé;$larg1;$haut1;$larg_fix1)
$deplacement1:=$haut1-$haut_préc1
Si($deplacement1>$deplacement)
$deplacement:=$deplacement1
Fin de si
Si($deplacement>0)
$position:=Lire taquet impression(Corps formulaire)
$pos_finale:=$position+$deplacement
FIXER TAQUET IMPRESSION(Corps formulaire;$pos_finale;*)
OBJET DEPLACER([Film]Acteurs;$g;$h;$d;$haut+$h;*)
OBJET DEPLACER([Film]Résumé;$g1;$h1;$d1;$haut1+$h1;*)
OBJET LIRE COORDONNEES(*;"LigneH1";$g;$h;$d;$b)
OBJET DEPLACER(*;"LigneH1";$g;$pos_finale-1;$d;$pos_finale;*)
Boucle($i;1;4;1)
OBJET LIRE COORDONNEES(*;"LigneV"+Chaine($i);$g;$h;$d;$b)
OBJET DEPLACER(*;"LigneV"+Chaine($i);$g;$h;$d;$pos_finale;*)
Fin de boucle
Fin de si
$position_c:=Lire taquet impression(Corps formulaire)
$position_e:=Lire taquet impression(Entête formulaire)
$hauteur_a_imprimer:=$position_c-$position_e
$hauteur_restante:=hauteur_impression-vLhauteur_imprimee
Si($hauteur_restante<$hauteur_a_imprimer)
NE PAS VALIDER
Fin de si
Fin de cas