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.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
ArrayBrowse y array
ArrayBrowse y array
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
> 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
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
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