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
TEXT TO ARRAY
|
TEXT TO ARRAY ( varTexte ; tabTexte ; largeur ; nomPolice ; taillePolice {; stylePolice {; *}} ) | ||||||||
Paramètre | Type | Description | ||||||
varTexte | Texte |
![]() |
Texte original à découper | |||||
tabTexte | Tableau texte |
![]() |
Tableau contenant le texte découpé en mots ou lignes | |||||
largeur | Entier long |
![]() |
Largeur maximale de la chaîne (en pixels) | |||||
nomPolice | Texte |
![]() |
Nom de police | |||||
taillePolice | Entier long |
![]() |
Taille de police | |||||
stylePolice | Entier long |
![]() |
Style de police | |||||
* | Opérateur |
![]() |
Si passé = interpréter le texte en multistyle | |||||
La commande TEXT TO ARRAY permet de transformer une variable texte en tableau texte. Le texte d’origine (stylé ou non) est découpé et chaque morceau devient un élément du tableau tabTexte qui est retourné par la commande. Cette commande peut être utilisée par exemple pour remplir des pages ou des colonnes de texte de taille fixe.
Le découpage du texte original est effectué en "mots" à partir d’une taille de ligne définie par les paramètres de la commande et tenant compte des styles utilisés.
Passez dans varTexte le texte à découper en éléments de tableaux. Ce texte peut être multistyle ou non. Certains paramètres seront ignorés si le texte est multistyle.
Passez dans tabTexte le nom du tableau qui sera rempli par le texte découpé.
Passez dans largeur une taille en pixels indiquant la longueur maximum de ligne à mesurer pour découper le texte. Pour l’ensemble du texte, la commande évaluera le nombre maximum de mots pouvant "tenir" dans cette largeur en fonction des attributs graphiques du texte (police, style).
Chaque élément du tableau doit contenir au moins un mot. Si la largeur passée est trop faible pour que la règle de découpage soit entièrement respectée, le tableau sera rempli de la façon la plus proche possible des paramètres et la variable OK prendra la valeur 0. Par exemple, si vous passez une largeur de 3 pixels, il est probable que la taille de la plupart des mots sera au-delà de cette longueur. Dans ce cas, la variable OK prendra la valeur 0.
Ce principe implique également que la taille théorique maximale du tableau retourné est égale au nombre de mots présents dans varTexte.
Passez dans nomPolice et taillePolice le nom et la taille de la police de caractères avec laquelle varTexte doit être évalué par la commande pour effectuer le découpage. Ces paramètres sont obligatoires dans le cas d’un texte brut.
Passez dans stylePolice une ou une combinaison de constante(s) du thème Styles de caractères :
Constante | Type | Valeur |
Bold | Entier long | 1 |
Italic | Entier long | 2 |
Plain | Entier long | 0 |
Underline | Entier long | 4 |
Ce paramètre est optionnel ; s’il est omis, le style Plain est utilisé.
Le paramètre optionnel *, s’il est passé, permet de forcer la prise en compte des paramètres nomPolice, taillePolice et/ou stylePolice pour les textes multistyles lorsque ces paramètres ne sont pas définis dans le texte d’origine. S’ils sont définis dans le texte, les paramètres passés à la commande sont ignorés dans tous les cas.
Nous souhaitons découper un texte multistyle en lignes d’une taille maximale de 200 pixels :
TEXT TO ARRAY(leTexte;leTabTexte;200;"Arial";20;Plain;*)
// les attributs Arial, 20, Normal ne seront pris en compte que s’ils ne sont pas définis dans le texte
Nous souhaitons découper un texte brut en lignes d’une taille maximale de 350 pixels en police Bodoni gras 14. Comme la commande ne fonctionne pas correctement si la police n’est pas disponible, il est utile de vérifier sa présence :
ARRAY TEXT($FontList;0)
FONT LIST($FontList)
$Font:="Bodoni"
$p:=Find in array($FontList;$Font)
If($p>0)
TEXT TO ARRAY(leTexte;leTabTexte;350;"Bodoni";14;Bold)
Else
// utiliser une autre police.
End if
Un texte multistyle doit être imprimé sans style dans la police Arial normal 12 avec une largeur maximale de 600 pixels :
// on transforme le texte multistyle en texte brut
$RawText:=OBJECT Get plain text(vText)
// on remplit le tableau
TEXT TO ARRAY($RawText;tabTexte;600;"Arial";12)
Vous devez imprimer dans une zone de 400 pixels de large un texte d’un maximum de 80 lignes et ce, avec la plus grande taille de police possible (ne devant pas dépasser 24 points). Vous pouvez écrire :
ARRAY TEXT(tabTexte;0)
$Taille:=24
Repeat
TEXT TO ARRAY($RawText;tabTexte;400;"Arial";$Taille)
$Taille:=$Taille-1
$n:=Size of array(tabTexte)
Until($n<=80)
Produit : 4D
Thème : Tableaux
Numéro :
1149
Créé : 4D v13
4D - Langage ( 4D v20 R7)