realbasic-nug.fr
[Top] [All Lists]

Re: Couper les ponts

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: Couper les ponts
From: Hubert JACQUOT-DION <jacquotdion at mac dot com>
Date: Sun, 30 Jul 2006 11:56:14 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <20060728144522 dot 831B01C003FA at mwinf0804 dot orange dot fr> <B486E88C-A9A5-4D92-A2EA-D15602B5A3D5 at mac dot com> <712B7027-B93C-45F8-9AF2-3EFC605A9C2F at tribu dot ch>
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.



<Prev in Thread] Current Thread [Next in Thread>