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.

ArrayBrowse y array

Foro público de Xailer en español
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

ArrayBrowse y array

Mensaje 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.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

ArrayBrowse y array

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

ArrayBrowse y array

Mensaje 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
Responder