Ecriture dot notation + constante

<code 4D>
C_OBJECT($O_Record)
$O_Record:=New object

$O_Record.fn_RecordID:=“100”
</code 4D>

fn_RecordID est une constante mais l’éditeur de méthode perd l’aspect de la constante. Cependant la propriété est bien créée.

bonjour

Vous ne pouvez pas utiliser de constantes de cette façon.
La propritété créée sera “fn_RecordID” quelque soit la valeur de la constante.
Pour que ça marche, il faut utiliser la notation “à crochet”, pas “à point”

$O_Record[fn_RecordID]:=“100”

Dans ce cas, le contenu des crochets est évalué

Autre exemple :

Plutot que d’écrire :

$o.name:=“Mike”

Vous pouvez aussi écrire :

$property:=“name”
$o[$property]:=“Mike”

C’est strictement équivalent quant ay résultat.
(et je n’y reviendrai pas :slight_smile:

Cordialement,

Roland Lannuzel

: Roland LANNUZEL

Vous ne pouvez pas utiliser de constantes de cette façon
Merci

Cher Roland,

Fort de tes reco, j’essaie avec du texte multi-style mais ça coince :

<code 4D>

C_OBJECT($O_Societe)
$O_Societe:=New object
$O_Societe.company:=“MA SOCIETE”

ST SET ATTRIBUTES($O_Societe["company"];1;1000;Attribute font name;"Arial")

</code 4D>

Pour l’instant ça coince pour styler le contenu de la propriété.

Et je rajoute que ce texte stylé sera inséré dans une cellule d’un tableau WP

J’ai pas vu les Guillemets dans l’explication de Roland :doubt:

c’est pas plutôt:
<code 4D>
ST SET ATTRIBUTES($O_Societe[company];1;1000;Attribute font name;“Arial”)

</code 4D>

bonjour,

Ce qu’il faut retenir c’est que dans le cas des crochets, le contenu est évalué

client.name

client[“name”]

$var := “name”
client[$var]

: Roland LANNUZEL

$var := “name”
client[$var]

Ce code génère une erreur:

<code 4D>
C_OBJECT($O_Societe)
$O_Societe:=New object
$O_Societe.company:=“MAS OCIETE”

$t:=“company”
ST SET ATTRIBUTES($O_Societe[$t];1;1000;Attribute font name;“Arial”)

ST SET ATTRIBUTES($O_Societe[“company”];1;1000;Attribute font name;“Arial”)

</code 4D>

fyi, je suis en 17R4

Je suppose que vous voulez conserver dans votre objet du texte stylé.
Je ferais plutôt :

<code 4D>
$t:=“MA SOCIETE”
ST SET ATTRIBUTES($t;1;1000;Attribute font name;“Arial”)
$o:=New object(“company”;$t)
</code 4D>

V,

Oui il y aurait même d’autres façons de faire pour arriver au résultat par exemple un tableau texte à la place de l’objet.

Le “challenge” aujourd’hui est : comment passer une propriété à la commande STxxxx

B

À ma connaissance, ce n’est pas possible.
Une propriété est une expression non typée.
Que doit-il se passer si cette propriété est une image ou autre type non texte ?

Essayer de mélanger directement ancien et nouveau langage est souvent une erreur et une perte de temps.

Le challenge est de penser autrement.
Et c’est passionnant.

Par exemple :
<code 4D>
$o:=New object(“company”;“MA SOCIETE”)
$o.styledText:=New formula(ST_SET_ATTIBUTES)
$o.company:=$o.styledText(String(This.company);Attribute font name;“Arial”)
</code 4D>

Je vous laisse deviner ce qu’il y a dans la méthode ST_SET_ATTIBUTES…