je ne suis pas tout à fait d'accord, car si on crée une même array
mais cette fois en text, et que l'on assigne le texte de l'editfield,
on a bien le premier texte en 1 et le second texte tapé dans le même
editfield en 2. Et le 1 reste bien le 1, il ne prend pas la valeur du 2.
Ce que je veux dire, c'est que je ne stocke pas l'editfield, ce qui
serait effectivement la même chose que ton exemple, mais le
styledtext de l'editfield, pour moi il devrait avoir le même
comportement que le texte de l'editfield et non pas celui de
l'editfield lui-même...
Mais bon c'est un point de vue qui peut se débattre longtemps, le
résultat c'est qu'un styledtext d'un editfield n'est en fait que
l'editfield lui-même, et je dois donc créer autant d'editfield que de
bloc texte.... mais cela ne pose pas de problème particulier, il n'y
aura jamais 36000 blocs texte dans une page (enfin j'espère!)
Hubert
Le 30 juil. 06 à 02:56, Arnaud Nicolet a écrit :
Dans un tableau ("array" en anglais), "stocker un objet" reste une
égalité (dans votre exemple " Window1.CanvasStyledT
(Window1.StringClique)=EditFieldTT.StyledText", on le voit, ce
fameux signe égal). Imaginez qu'un tableau est comme une multitude
de variables, en une seule. C'est comme si vous aviez
CanvasStyledT1, CanvasStyledT2 As StyledText, etc. mais dans une
seule variable.
Ce que je veux dire, c'est que, dans votre tableau, chaque élément
est assigné à la même chose (en la personne de
EditFieldTT.StyledText).
Vous n'avez pas affiché beaucoup de code, mais, tel qu'on voit les
choses, si vous modifiez CanvasStyledT(0).QuelqueChose, cela
changera également CanvasStyledT(x).QuelqueChose (où x vaut de 0 à
UBound-1, c'est-à-dire tous) et EditFieldTT.StyledText.StyledText
car ces objets sont la même référence. Même chose si vous modifiez
CanvasStyledT(y) à la place de CanvasStyledT(0).
Essayez donc ce bout de code, pour voir:
dim d As Date 'Une date, analogue à votre EditFieldTT.StyledText
(ce sont les deux un objet).
dim e(-1) As Date 'Un tableau de dates
d=new Date 'Simplement
d.Day=4 'On met le jour à 4...
e.Append d '...et on ajoute d à e
d.Day=5 'Puis on met le jour à 5...
e.Append d '...même chose, on append d à e
d.Day=6 'Encore une fois, avec 6...
e.Append d '...et on le rajoute
'On a donc 3 fois "d" dans "e"
MsgBox str(e(1).Day) 'On accède à ce qu'on a ajouté en deuxième
(au milieu des 3). Résultat: 6
MsgBox str(e(0).Day) 'Aussi 6
MsgBox str(e(2).Day) 'Bon, là c'est normal
Vous faites là même chose que l'exemple, en assignant toujours la
même valeur (EditFieldTT.StyledText) à tout votre tableau.
Cependant, pour essayer de résoudre le problème, copier
l'intégralité d'un objet de type StyledText doit être bien
compliqué (il n'a pas été fait pour servir de "mémoire tampon", ça
se voit). Si mon but était absolument de résoudre le problème,
j'essayerais de faire une boucle pour copier les informations
manuellement (caractère par caractère), de EditFieldTT.StyledText à
une autre variable de type StyledText.
|