Le 29 juil. 06 à 10:51 Matin, Hubert JACQUOT-DION a écrit:
La variable qui stocke ces blocs de texte est une Properties de la
fenêtre de montage :
CanvasStyledT() as StyledText
Le code du bouton de validation de la fenêtre de saisie :
Window1.CanvasStyledT(Window1.StringClique)=EditFieldTT.StyledText
Window1.Canvas1.Refresh
self.Close
Avec StringClique l'emplacement du bloc texte en cours de saisie
dans CanvasStyledT
On se retrouve bien avec un stockage d'objet.....
Mais à mon avis CanvasStyledT n'est qu'un simple array, et par
conséquent il n'y a pas d'égalité d'objet mais un simple "stockage
d'objet", le styledtext de l'editfield ne devrait pas rester lié à
l'éditfield .... je me trompe ?
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.
|