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: Arnaud Nicolet <arnaud at tribu dot ch>
Date: Sun, 30 Jul 2006 02:56:58 +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>

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.

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