Bonjour,

Je réalise des états que je remplis à partir d'informations issues d'un fichier HFSQL.

Les états sont relativement simples et ne sont constitués que de champs libellés.

Les champs libellés forment des tableaux à une ou plusieurs colonnes, parfois juste une entête avec une zone de texte dessous. Cette zone de texte est souvent auto extensible.

Je rencontre des problèmes de décalages de position Y quand des champs auto extensibles sont présents dans mon état et sont remplis par programmation. Je vous décris le phénomène dans l'exemple qui suit :

Mon état est composé d'un libellé (nommé ENTETE_)sert d'entête et prend toute la largeur d'une page. Sous ce libellé se trouve un autre libellé (LIB_) qui contiendra du texte dont la hauteur est inconnue. Quelques millimètres dessous (disons 3mm pour donner une valeur), je vais trouver une autre entête (nommée par exemple ENTETE_A).

Le champ LIB_ est rempli ligne par ligne par programmation. Du coup il peut s'étendre sur plusieurs pages,
Afin de rendre plus claire la lecture, je veux reporter l'entête (ENTETE_),en ajoutant "(suite") à son libellé à chaque début de page contenant le texte que je veux mettre dans mon champ LIB_. Je veux que ENTETE_A se trouve toujours à 3mm en dessous du texte de LIB_.

Pour réaliser ce traitement, j'utilise des clones que je positionne à des multiples de hauteur de page (calculée auparavant, calcul juste et vérifié ne posant pas de problème).

ENTETE_ et LIB_ sont invisibles.
Je clone ENTETE_ et LIB_ (que je nomme ENTETE_1 et LIB_1) à la même place que ENTETE_ et LIB_, que je rend visibles puis je remplis LIB_1. Juste avant que LIB_1 n'arrive au bas de page, je ne le remplis plus, je clone ENTETE_ (nommé ENTETE_2) que je positionne au début de la page suivante et je clone LIB_ (nommé LIB_2) juste sous ENTETE_2, je les rends visibles et je remplis LIB_2 avec la suite du texte ..... ainsi de suite. Une fois arrivé à la fin du texte, je positionne ENTETE_A à 3mm sous LIB_n (LIB_n..Y + LIB_n..hauteurfuture) puis je redimmensionne le corps à ENTETE_A..Y + ENTETE_A..hauteur + 10 mm par exemple.

Et c'est là que ça coince. Si je fais ça, ENTETE_A se retrouve bien sous LIB_n mais trop bas (écart de LIB_n..hauteurfuture - LIB_n..hauteurinitiale). De plus, LIB_2 va être positionné à LIB_1..hauteurfuture - LIB_1..hauteurinitiale plus bas que la position donnée à LIB_2,
LIB_3 va se retrouver à LIB_1..hauteurfuture - LIB_1..hauteurinitiale + LIB_2..hauteurfuture - LIB_2..hauteurinitiale plus bas que la position donnée à LIB_3 ....etc

nota : les écarts trouvés sur mon dernier essai sont ceux indiqués. Par contre, si il s'agit d'un tableau avec plusieurs champs autoextensibles, le comportement ne semble pas être le même (le calcul des écarts est différents, ne semble pas logique au premier abord mais il doit l'être car les écarts sont toujours identiques, pour un même état bien sûr).

Je ne comprends pas pourquoi cela fait ça. Si le champs LIB_ n'est pas auto extensible, certes je n'ai pas tout le texte mais je ne rencontre pas ce problème de décalage.

A cause de ces décalages, qui semblent ne pas toujours se comporter de la même façon (à moins que je me trompe) me font perdre un temps considérable pour gérer les mises en pages.

Quelqu'un aurait-il une idée de ce qui se passe?

Cordialement!