Página 1 de 1

ArrayBrowse y array

Publicado: Mié Jun 04, 2008 12:28 pm
por Xevi
Tengo un ArrayBrowse que le pongo los datos de un Array que tengo creado en
la Clase Form...
CLASS TForm1 FROM TForm
Data aData INIT {}
....
Luego Cargo los datos que me interesa en ::aData y los vuelco al aArrayData
del Browse...
::oArrayBrowse1:aArrayData := ::aData
::oArrayBrowse1:Refresh()
Todo funciona correctamente, PERO me está dando un problema y no consigo dar
en como poderlo solucionar.
Resulta que cuando quiero eliminar un registro de la parrilla del Browse,
quiero marcarlo en el array aData como "eliminado" y SI eliminarlo
físicamente del array del Browse...
::aData[nAscan,LINIA_RECNO] := LINIA_BORRADA
:DelRow(:aSelected[n])
PERO lo que me provoca :DelRow() es el eliminado TAMBIEN del elemento del
array aData....
¿Porqué elimina también el registro del array aData???
Gracias.
Un Saludo,
Xevi.

ArrayBrowse y array

Publicado: Mié Jun 04, 2008 8:22 pm
por jfgimenez
Xevi,
> Tengo un ArrayBrowse que le pongo los datos de un Array que tengo creado
> en la Clase Form...
>
> CLASS TForm1 FROM TForm
> Data aData INIT {}
> ...
>
> Luego Cargo los datos que me interesa en ::aData y los vuelco al
> aArrayData del Browse...
>
> ::oArrayBrowse1:aArrayData := ::aData
> ::oArrayBrowse1:Refresh()
>
> Todo funciona correctamente, PERO me está dando un problema y no consigo
> dar en como poderlo solucionar.
> Resulta que cuando quiero eliminar un registro de la parrilla del Browse,
> quiero marcarlo en el array aData como "eliminado" y SI eliminarlo
> fí­sicamente del array del Browse...
>
> ::aData[nAscan,LINIA_RECNO] := LINIA_BORRADA
> :DelRow(:aSelected[n])
>
> PERO lo que me provoca :DelRow() es el eliminado TAMBIEN del elemento del
> array aData....
>
> ¿Porqué elimina también el registro del array aData???
porque al asignar la data ::aData a la propiedad :aArrayData del browse, lo
que estás asignando es una referencia al array, y no una copia del mismo.
Por eso, al manipular :aArrayData estás también manipulando ::aData.
Si lo que quieres es usar una copia del array, tienes que usar la función
AClone(), p.ej.:
::oArrayBrowse1:aArrayData := AClone( ::aData )
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

ArrayBrowse y array

Publicado: Jue Jun 05, 2008 8:23 am
por Xevi
José,
Pues no utilizaba AClone() porque creía que si lo utilizaba era cuando SI
que manipularia los dos arrays a la vez...
Gracias.
Un Saludo,
Xevi.
"José F. Giménez" <jfgimenez-arroba@wanadoo.es> escribió en el
mensaje news:4846dd6f$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Xevi,
>
>> Tengo un ArrayBrowse que le pongo los datos de un Array que tengo creado
>> en la Clase Form...
>>
>> CLASS TForm1 FROM TForm
>> Data aData INIT {}
>> ...
>>
>> Luego Cargo los datos que me interesa en ::aData y los vuelco al
>> aArrayData del Browse...
>>
>> ::oArrayBrowse1:aArrayData := ::aData
>> ::oArrayBrowse1:Refresh()
>>
>> Todo funciona correctamente, PERO me está dando un problema y no consigo
>> dar en como poderlo solucionar.
>> Resulta que cuando quiero eliminar un registro de la parrilla del Browse,
>> quiero marcarlo en el array aData como "eliminado" y SI eliminarlo
>> físicamente del array del Browse...
>>
>> ::aData[nAscan,LINIA_RECNO] := LINIA_BORRADA
>> :DelRow(:aSelected[n])
>>
>> PERO lo que me provoca :DelRow() es el eliminado TAMBIEN del elemento del
>> array aData....
>>
>> ¿Porqué elimina también el registro del array aData???
>
> porque al asignar la data ::aData a la propiedad :aArrayData del browse,
> lo que estás asignando es una referencia al array, y no una copia del
> mismo. Por eso, al manipular :aArrayData estás también manipulando
> ::aData.
>
> Si lo que quieres es usar una copia del array, tienes que usar la función
> AClone(), p.ej.:
>
> ::oArrayBrowse1:aArrayData := AClone( ::aData )
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info