4D v16.3

FIXER TAQUET IMPRESSION

Accueil

 
4D v16.3
FIXER TAQUET IMPRESSION

FIXER TAQUET IMPRESSION 


 

FIXER TAQUET IMPRESSION ( numTaquet ; position {; *} ) 
Paramètre Type   Description
numTaquet  Entier long in Numéro de taquet
position  Entier long in Nouvelle position du taquet
Opérateur in 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 :

  • 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é).

Exemple  

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



Voir aussi  

IMPRIMER ENREGISTREMENT
Imprimer ligne
IMPRIMER SELECTION
Lire taquet impression
OBJET DEPLACER
OBJET LIRE COORDONNEES
OBJET LIRE TAILLE OPTIMALE
SAUT DE PAGE

 
PROPRIÉTÉS 

Produit : 4D
Thème : Impressions
Numéro : 709
Nom intl. : SET PRINT MARKER

 
HISTORIQUE 

Modifié : 4D 2003

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)