Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
FIXER TAQUET IMPRESSION
|
FIXER TAQUET IMPRESSION ( numTaquet ; position {; *} ) | ||||||||
Paramètre | Type | Description | ||||||
numTaquet | Entier long |
![]() |
Numéro de taquet | |||||
position | Entier long |
![]() |
Nouvelle position du taquet | |||||
* | Opérateur |
![]() |
Si passé = déplacer les marqueurs suivants Si omis = ne pas déplacer les marqueurs suivants | |||||
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 :
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 :
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 :
C_ENTIER LONG(vLhauteur_imp;$vLhauteur;vLhauteur_imprimee)
C_ALPHA(31;vSimpr_zone)
UTILISER PARAMETRES IMPRESSION([Film];"Print_List3")
LIRE ZONE IMPRESSION(vLhauteur_imp)
vLhauteur_imprimee:=0
TOUT SELECTIONNER([Film])
vSimpr_zone:="Entete" `Impression de la zone d’en-tête
$vLhauteur:=Imprimer ligne([Film];"Print_List3";Entête formulaire)
$vLhauteur:=21 `Hauteur fixe
vLhauteur_imprimee:=vLhauteur_imprimee+$vLhauteur
Tant que(Non(Fin de selection([Film])))
vSimpr_zone:="Corps" `Impression de la zone de corps
$vLhauteur:=Imprimer ligne([Film];"Print_List3";Corps formulaire)
`Le calcul du corps est effectué dans la méthode formulaire
vLhauteur_imprimee:=vLhauteur_imprimee+$vLhauteur
Si(OK=0) `NE PAS VALIDER a été exécutée dans la méthode formulaire
SAUT DE PAGE
vLhauteur_imprimee:=0
vSimpr_zone:="Entete" `Réimpression de la zone d’en-tête
$vLhauteur:=Imprimer ligne([Film];"Print_List3";Entête formulaire)
$vLhauteur:=21
vLhauteur_imprimee:=vLhauteur_imprimee+$vLhauteur
vSimpr_zone:="Corps"
$vLhauteur:=Imprimer ligne([Film];"Print_List3";Corps formulaire)
vLhauteur_imprimee:=vLhauteur_imprimee+$vLhauteur
Fin de si
ENREGISTREMENT SUIVANT([Film])
Fin tant que
SAUT DE PAGE `Assurons-nous que la dernière page est imprimée
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") `Impression du corps en cours
OBJET LIRE COORDONNEES([Film]Acteurs;$g;$h;$d;$b)
$larg_fix:=$d-$g `Calcul de la taille du champ texte Acteurs
$haut_préc:=$b-$h
OBJET LIRE TAILLE OPTIMALE([Film]Acteurs;$larg;$haut;$larg_fix)
`Taille optimale du champ en fonction du contenu
$deplacement:=$haut-$haut_préc
OBJET LIRE COORDONNEES([Film]Résumé;$g1;$h1;$d1;$b1)
$larg_fix1:=$d1-$g1 `Calcul de la taille du champ texte Résumé
$haut_préc1:=$b1-$h1
OBJET LIRE TAILLE OPTIMALE([Film]Résumé;$larg1;$haut1;$larg_fix1)
`Taille optimale du champ en fonction du contenu
$deplacement1:=$haut1-$haut_préc1
Si($deplacement1>$deplacement)
`On détermine le champ le plus haut
$deplacement:=$deplacement1
Fin de si
Si($deplacement>0)
$position:=Lire taquet impression(Corps formulaire)
$pos_finale:=$position+$deplacement
`On déplace le taquet Corps et ceux qui le suivent
FIXER TAQUET IMPRESSION(Corps formulaire;$pos_finale;*)
`Redimensionnement des zones de texte
OBJET DEPLACER([Film]Acteurs;$g;$h;$d;$haut+$h;*)
OBJET DEPLACER([Film]Résumé;$g1;$h1;$d1;$haut1+$h1;*)
`Redimensionnement des lignes de séparation
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
`Calcul de la place disponible
$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) `Hauteur insuffisante
NE PAS VALIDER `Passer la ligne sur la page suivante
Fin de si
Fin de cas
IMPRIMER ENREGISTREMENT
Imprimer ligne
IMPRIMER SELECTION
Lire taquet impression
OBJET DEPLACER
OBJET LIRE COORDONNEES
OBJET LIRE TAILLE OPTIMALE
SAUT DE PAGE
Produit : 4D
Thème : Impressions
Numéro :
709
Nom intl. : SET PRINT MARKER
Modifié : 4D 2003
4D - Langage ( 4D v20 R7)