4D v17WP Get position |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v17
WP Get position
|
WP Get position ( objCible {; presentation} ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
objCible | Objet |
![]() |
Plage ou référence d'élément ou document 4D Write Pro | |||||
presentation | Entier long |
![]() |
Mise en page de document 4D Write Pro utilisée pour la présentation : 0 (par défaut) = mise en page 4D Write Pro, 1 = HTML WYSIWYG | |||||
Résultat | Objet |
![]() |
Informations sur la position | |||||
La commande WP Get position retourne un objet décrivant la position courante de objCible.
Dans le paramètre objCible vous pouvez passer :
La commande retourne des informations sur la position dans un objet avec les propriétés suivantes :
Nom de la propriété | Type | Description |
section | Nombre | Numéro de la première section qui croise l'objCible |
page | Nombre | Numéro de la première page qui croise l'objCible |
column | Nombre | Index de la première colonne qui croise l'objCible (base 1) |
line | Nombre | Index de la première ligne qui croise l'objCible (par rapport à la colonne -ou la page si aucune colonne- base 1) |
position | Nombre | Position dans la ligne du premier caractère de l'objCible (base 1) |
Si objCible est une plage vide, WP Get position retourne des informations sur la position du début de la plage.
Si objCible référence un texte en en-tête ou en pied, WP Get position retourne des informations sur la position où l'en-tête et le pied de page sont affichés dans la première section/page.
Si objCible référence une image ancrée (qui peut être répliquée sur plusieurs pages), WP Get position renvoie des informations sur la position où l'image est ancrée dans la première section/page.
Le paramètre presentation peut être utilisé pour définir du wysiwyg HTML pour l'évaluation de l'objCible. Vous pouvez passer une des constantes suivantes du thème "4D Write Pro" :
Constante | Type | Valeur | Comment |
wk 4D Write Pro layout | Entier long | 0 | Format 4D Write Pro standard, pouvant inclure des attributs de style spécifiques |
wk html wysiwyg | Entier long | 1 | Dans ce format, les éventuels attributs avancés de 4D Write Pro non disponibles dans tous les navigateurs sont supprimés (multi-colonnes, double interlignes...) |
Si presentation est omis, la présentation 4D Write Pro (0) est utilisée par défaut.
Les mêmes paramétrages de présentation que pour la commande WP PRINT sont utilisés avec WP Get position:
Si objCible est affiché dans une zone formulaire 4D Write Pro, assurez-vous que les paramètres d'affichage de la zone correspondent aux paramètres d'affichage de la commande afin d'obtenir des informations cohérentes. Notez également que si ces paramètres sont différents dans la zone, 4D Write Pro devra "cloner" le document pour calculer la présentation à chaque appel de la commande, ce qui peut prendre un certain temps. Pour des raisons de performances, il est recommandé dans ce cas de créer le document hors ligne et de le copier dans la zone sur le formulaire uniquement lorsque la génération est terminée.
Vous souhaitez connaître le numéro de page d'une plage :
C_OBJECT($range;$rangePosition)
$range:=WP Get selection(WParea) //plage de la sélection de l'utilisateur
$rangePosition:=WP Get position($range;wk 4D Write Pro layout)
ALERT("Votre sélection se trouve en page "+String($rangePosition.page))
Vous voulez appliquer la couleur bleue pour le texte de la première et de la dernière page d'un document :
C_LONGINT($nbPages)
C_OBJECT($body)
C_COLLECTION($_paragraphs)
$nbPages:=WP Get page count([DOC]Sample)
$body:=WP Get body([DOC]Sample)
$_paragraphs:=WP Get elements($body;wk type paragraph)
For each($paragraph;$_paragraphs)
$info:=WP Get position($paragraph)
If($info.page=1)|($info.page=$nbPages) // pour la première et la dernière page, couleur du texte en bleu
WP SET ATTRIBUTES($paragraph;wk text color;"blue")
Else //pour les paragraphes des autres pages, le texte est en noir
WP SET ATTRIBUTES($paragraph;wk text color;"black")
End if
End for each
Lors de la création d'un document, vous souhaitez éviter les fractionnements de paragraphes :
C_OBJECT(WParea;$body)
C_COLLECTION($_paragraphs)
WParea:=WP New
$body:=WP Get body([DOC]Sample)
$_paragraphs:=WP Get elements($body;wk type paragraph)
For each($paragraph;$_paragraphs)
$insert:=WP New($paragraph)
//mémorise la plage courante et le numéro de page
$rangeBefore:=WP Create range(WParea;wk end text;wk end text)
$info:=WP Get position($rangeBefore)
$memoPage:=$info.page
//insère les contenus, sans toucher à la plage
WP INSERT DOCUMENT($rangeBefore;$insert;wk append;wk exclude from range)
//vérifie la position après l'insertion
$rangeAfter:=WP Create range(WParea;wk end text;wk end text)
$info:=WP Get position($rangeAfter)
If($memoPage#$info.page) // si la page a changé, insertion d'un saut de page
WP INSERT BREAK($rangeBefore;wk page break;wk replace)
fin de si
End for each
Produit : 4D
Thème : 4D Write Pro - Langage
Numéro :
1577
Créé : 4D v17
4D Write Pro ( 4D v17)