4D Write PRO: Pourquoi cela ne fonctionne pas?

<code 4D>
C_OBJET($wpRange)
$wpRange:=WP Plage signet([Facture]OBZone;“MonTableau”)
Si ($wpRange#Null) //si le tableau existe on le supprime
$wpRange:=WP Plage tableaux($wpRange)
WP FIXER TEXTE($wpRange;"";wk replace) <= ça ne marche pas ?!
Fin de si

$wpRange:=WP Plage texte([Facture]OBZone;wk start text;wk end text)

C_OBJET($wpTable)
$wpTable:=WP Insérer tableau($wpRange;wk append) //création du tableau

WP CRÉER SIGNET($wpTable;“MonTableau”)

</code 4D>

Si j’execute 2 fois ce code, je me retrouve avec 2 tableaux :-x pourquoi ?

En fait, cela fonctionne, mais le tableau descend d’une ligne à chaque itération ?

C’est quoi ce caractère qui traine :?:

NB: mon code de création(mise en forme du tableau) est situé entre la ligne 11 et la ligne 13) sinon cela ne fonctionne pas (il ne prenait pas le tableau en entier sinon).

Bon, après une journée de galère, voici une solution qui fonctionne :

<code 4D>
C_OBJET($MaZone)

C_OBJET($wpRange)
$wpRange:=WP Plage signet($MaZone;“MonTableau”)
Si ($wpRange#Null)
WP SUPPRIMER SIGNET($MaZone;“MonTableau”)
$wpTable:=WP Insérer tableau($wpRange;wk replace) //remplacement du tableau
Sinon
$wpRange:=WP Plage texte($MaZone;wk start text;wk end text)
C_OBJET($wpTable)
$wpTable:=WP Insérer tableau($wpRange;wk append) //création du tableau
Fin de si

//remplir son tableau ici

WP CRÉER SIGNET($wpTable;“MonTableau”) //A placer ici tout en dernier sinon cela ne fonctionne pas !!!

</code 4D>

Contrairement à ce qui est marqué dans la doc, la gestion des signets n’est PAS dynamique sur des tableaux vides. Si vous placez un signet sur le tableau vide, et qu’ensuite le tableau grossit le signet ne suit pas. :-x

Bonjour,

Votre “problème” est indépendant des tables.

Un signet s’étend si on ajoute quelque chose à l’intérieur des bornes. Si c’est juste avant ou juste apres, son contenu ne change pas.

Un exemple simplissime :
Un texte contient uniqument deux caracteres “AB”; il y a un signet sur “A” et un autre sur “B”
Pour que le 1er signet soit étendu, il faudrait insérer ENTRE 0 et 1 (0,5?), idem pour le second, ENTRE 1 et 2 (1,5?)

À moins de couper le A ou le B en deux, ce n’est pas possible.
Donc si vous tappez du texte avant ou apres le A ou le B, vos signets resterons inchangés.

aaaaAaaaaaabbbbbbBbbbbbb

Vous avez trouvé vous-même la conclusion…créer un signet a posteriori !
(et là, vous pourrez ajouter des lignes, les signetsseront synchro)

Un bout de code en exemple

<code 4D>
WParea:=WP New

For ($i;1;4)

$table:=WP Insert table(WParea;wk append)
WP SET ATTRIBUTES($table;"id";"myTable_"+string($i))

For ($j;1;2+(Random%4))
	WP Table append row($table;"abc";"def";Current time;Random)
End for 

WP NEW BOOKMARK($table;"Table_"+String($i))

//option, not mandatoty
WP INSERT BREAK(WParea;wk paragraph break;wk append)

End for

///***************

$col:=WP Get elements(WParea;wk type table)

For each ($table;$col)

For ($j;1;2+(Random%4))
	WP Table append row($table;"abc";"def";Current time;Random)
End for 

End for each
</code 4D>

Roland

Je ne sais pas comment sont codés votre signet, ni votre tableau vide ; mais, il ne me paraît pas cohérent (ou pour le moins surprenant) que si un tableau vide est inclus totalement dans un signet et que par la suite on insère des lignes dans ce tableau le signet ne suive pas :?: :!:

Ex:
Code :

Question subsidiaire :
La gestion des signets (en création) est uniquement présente sur le widget de la barre latérale ?
Je ne l’ai pas trouvé dans la toolbar, ni dans le popup menu (menu grisé ?) :-?

Bonjour

la toolbar est essentiellement basée sur des actions automatiques (hormis la liste des polices), c’est la raison pour laquelle les bookmarks n’y sont pas présents.
Il faudrait aussi transformer la liste en “drop down” pour les afficher.

Mais c’est une bonne remarque, on va y réfléchir !