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

Re: Array di oggetti

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Re: Array di oggetti
From: Vincenzo Antedoro <antedoro at email dot it>
Date: Sun, 3 Jul 2005 13:50:44 +0200
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
References: <6f30316a2a9c1e772790cea62669bf39 at email dot it> <803BA201-47AC-4D57-A654-A8687D939C7D at elbrigante dot it>
Il giorno 03/lug/05, alle 12:29, Andrea Baron ha scritto:


Il giorno 03/lug/05, alle ore 11:08, Vincenzo Antedoro ha scritto:

Salve a tutti.
Per una mia necessità ho creato una classe (oggetto) che ha le seguenti proprietà:
Nome Classe = DataItems

Proprietà:
Items(0) as DataItems
Text as string
query as string
cripticquestion as string
isrootnode as boolean

siccome voglio creare un array della classe dataItems col seguente metodo appendo un Item

DataItems.AddItem:
Function AddItem(IsRootNode as Boolean, Text as String, Query as string,CripticQuestion as string) As DataItems
  Dim n as DataItems

  n = New DataItems

  n.isRootNode = isRootNode
  n.text = text
  n.query = query
  n.cripticQuestion = cripticQuestion

  Items.Append n

  return n
End Function

Ora sembra che ogni volta che chiamo il metodo additem questo inserisca un elemento nuovo all'array.

Mi pare lo scopo del metodo... Stai creando un albero praticamente, questo metodo inserisce il nuovo elemento e ritorna l'elemento creato e inserito.

forse quel New dataItems cancella l'oggetto precedente?

Ho paura che tu stia facendo una cosa del tipo:

n=n.addItem(...)

oppure n.addItem(...).addItem(...)

perchè questa sarebbe l'unica spiegazione al fatto che ti ritrovi solo l'ultimo elemento inserito. New DataItems non cancella gli elementi precedenti.


Ho scoperto che l'errore non stà quì.
Il problema purtroppo è un'altro.
Sto cercando di conservare quest'albero di oggetti dentro la proprietà celltag di una listbox che accetta valori di tipo variant quindi anche object.

Quando inserisco faccio cosi:

DItem as dataItems // proprietà pubblica di una sotto classe di listbox

 DItem = me.cellTag(row,column)  // leggo il valore precedente

  Me.addrow ""
me.cellTag(row,column) = DItem.AddItem(false, Text, query, CripticQuestion) // appendo il nuovo valore

e quando vado a leggere la proprietà celltag faccio così:

Dim S as string

dItem = listboxX.cellTag( row,column)

e ad esempio se voglio conoscere il valore di text dell'ultimo "record" aggiunto
scrivo;

S = dItem.Items(Ubound(dItems.Items)).text









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