FIXER TAQUET IMPRESSION

4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 2003 (Modifiée)


FIXER TAQUET IMPRESSION (numTaquet; position{; *})

ParamètreTypeDescription
numTaquetNumériqueNuméro de taquet
positionNumériqueNouvelle position du taquet
**Si passé = déplacer les marqueurs suivants
Si omis = ne pas déplacer les marqueurs suivants

Description

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, DEPLACER OBJET 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" :

ConstanteType Valeur
Entête formulaireEntier long200
Entête formulaire1...10Entier long201...210
Corps formulaireEntier long0
Rupture formulaire0...9Entier long300...309
Pied de page formulaireEntier long100

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
         LIRE RECT OBJET([Film]Acteurs;$g;$h;$d;$b) 
         $larg_fix:=$d-$g   `Calcul de la taille du champ texte Acteurs
         $haut_préc:=$b-$h
         TAILLE OBJET OPTIMALE([Film]Acteurs;$larg;$haut;$larg_fix)
            `Taille optimale du champ en fonction du contenu
         $deplacement:=$haut-$haut_préc
   
         LIRE RECT OBJET([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
         TAILLE OBJET 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
            DEPLACER OBJET([Film]Acteurs;$g;$h;$d;$haut+$h;*)
            DEPLACER OBJET([Film]Résumé;$g1;$h1;$d1;$haut1+$h1;*)
   
               `Redimensionnement des lignes de séparation
            LIRE RECT OBJET(*;"LigneH1";$g;$h;$d;$b)
            DEPLACER OBJET(*;"LigneH1";$g;$pos_finale-1;$d;$pos_finale;*)
            Boucle ($i;1;4;1)
               LIRE RECT OBJET(*;"LigneV"+Chaine($i);$g;$h;$d;$b)
               DEPLACER OBJET(*;"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

Référence

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


4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant