Página 1 de 1

Reordenar TArrayBrowse

Publicado: Dom May 13, 2007 10:19 pm
por jasm
Hola,
Partiendo de un arraybrowse con una columna ordenada, ¿que método tengo
que usar para que despues de refrescar se reordene? ¿Que método se usa
para reordenar cuando se hace click en la cabecera?
Gracias y un saludo
Jose A. Suarez

Reordenar TArrayBrowse

Publicado: Lun May 14, 2007 9:38 am
por ignacio
Jose Alfonso,
ASort()
Saludos
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
news:464772c8$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Partiendo de un arraybrowse con una columna ordenada, ¿que método tengo
> que usar para que despues de refrescar se reordene? ¿Que método se usa
> para reordenar cuando se hace click en la cabecera?
>
> Gracias y un saludo
>
> Jose A. Suarez

Reordenar TArrayBrowse

Publicado: Lun May 14, 2007 10:09 pm
por jasm
Gracias Ignacio.
Por mas que miro y remiro la ayuda no lo encuentro. Igual está ahí­, no
lo se, pero me he vuelto mico buscándolo sin éxito :-(.
Saludos
Jose A. Suarez
Ignacio Ortiz de Zúñiga escribió:
> Jose Alfonso,
>
> ASort()
>
> Saludos
>

Reordenar TArrayBrowse

Publicado: Lun May 14, 2007 10:16 pm
por jasm
¿Que prámetros lleva aSort?

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 11:12 am
por Pablo Herranz
No se donde lo vi, pero los paramtros son las columas que quieras ordenar
::oArrayBrowse:aSort{1,4,3}
Pablo
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
news:[email=4648c38e@ozsrv2.ozlan.local...]4648c38e@ozsrv2.ozlan.local...[/email]
> ¿Que prámetros lleva aSort?

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 12:33 pm
por ignacio
Jose Alfonso,
Me refería a la función de xharbour 'aSort()'.
Si lo que quieres es que lo haga el propio Browse, lo más sencillo es
disparar el evento OnHeaderClick de la columna que desees. También podrias
utilizar el metodo TBrwColumn:Sort( oCol ), pero dicho metodo es reservado y
no documentado y no te aseguro que no vaya a cambiar en el futuro.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
news:4648c1e8$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Gracias Ignacio.
>
> Por mas que miro y remiro la ayuda no lo encuentro. Igual está ahí, no lo
> se, pero me he vuelto mico buscándolo sin éxito :-(.
>
> Saludos
>
> Jose A. Suarez
>
> Ignacio Ortiz de Zúñiga escribió:
>> Jose Alfonso,
>>
>> ASort()
>>
>> Saludos
>>

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 2:28 pm
por Rolando
ASORT()
Sort an array
Syntax
ASORT( <aArray>, [<nStart>], [<nCount>], [<bSort>] ) --> aArray
Arguments
<aArray> Array to be sorted.
<nStart> The first element to start the sort from, default is 1.
<nCount> Number of elements starting from <nStart> to sort, default is all
elements.
<bSort> Code block for sorting order, default is ascending order {| x, y |
x < y }. The code block should accept two parameters and must return .T. if
the sort is in order, .F. if not.
Returns
<aArray> reference to the now sorted or NIL if the passed <aArray> is not
an array.
Description
ASORT() sort all or part of a given array. If <bSort> is omitted, the
function expect <aArray> to be one dimensional array containing single data
type (one of: Character, Date, Logical, Numeric) and sort this array in
ascending order: Character are sorted by their ASCII value, Dates are sorted
chronologically, Logical put .F. values before .T., Numeric are sorted by
their value.
If <bSort> is specified, it is used to handle the sorting order. With each
time the block is evaluate, two array elements are passed to the code block,
and <bSort> must return a logical value that state if those elements are in
order (.T.) or not (.F.). Using this block you can sort multidimensional
array, descending orders or even (but why would you want to do that) sort
array that contain different data type.
Examples
// sort numeric values in ascending order
ASORT( { 3, 1, 4, 42, 5, 9 } ) // result: { 1, 3, 4, 5, 9, 42 }
// sort character strings in descending lexical order
aKeys := { "Ctrl", "Alt", "Delete" }
bSort := {| x, y | UPPER( x ) > UPPER( y ) }
ASORT( aKeys,,, bSort ) // result: { "Delete", "Ctrl", "Alt" }
// sort two-dimensional array according to 2nd element of each pair
aPair := { {"Sun",8}, {"Mon",1}, {"Tue",57}, {"Wed",-6} }
ASORT( aPair,,, {| x, y | x[2] < y[2] } )
// result: { {"Wed",-6}, {"Mon",1}, {"Sun",8}, {"Tue",57} }
Status
Ready
Compliance
Codeblock calling frequency and order differs from Clipper, since Harbour
uses a different (faster) sorting algorithm (quicksort).
"Pablo Herranz" <pabloi@ibertabaco.com> escribió en el mensaje
news:[email=4649796a@ozsrv2.ozlan.local...]4649796a@ozsrv2.ozlan.local...[/email]
> No se donde lo vi, pero los paramtros son las columas que quieras ordenar
> ::oArrayBrowse:aSort{1,4,3}
>
> Pablo
>
> "José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
> news:[email=4648c38e@ozsrv2.ozlan.local...]4648c38e@ozsrv2.ozlan.local...[/email]
>> ¿Que prámetros lleva aSort?
>
>

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 4:54 pm
por jasm
Ignacio,
TArrayBrowse dispone de un mecanismo para ordernar el array al pulsar en
las cabeceras en caso de que este activa la propiedad lAutoOrder.
Pues bien, yo tengo activa dicha propiedad y lo que quiero es saber que
tengo que hacer para que cada vez que añada o modifique una fila del
TArrayBrowse se vuelva a ordenar.
La edición la hago desde fuera del browse.
Saludos y gracias,
Jose A. Suarez

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 5:27 pm
por ignacio
José Alfonso,
ya está contestado justitamente ;-) en mi anterior mensaje.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
news:4649c9aa$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Ignacio,
>
> TArrayBrowse dispone de un mecanismo para ordernar el array al pulsar en
> las cabeceras en caso de que este activa la propiedad lAutoOrder.
>
> Pues bien, yo tengo activa dicha propiedad y lo que quiero es saber que
> tengo que hacer para que cada vez que añada o modifique una fila del
> TArrayBrowse se vuelva a ordenar.
>
> La edición la hago desde fuera del browse.
>
> Saludos y gracias,
>
> Jose A. Suarez
>

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 6:06 pm
por jasm
Ignacio,
> También podrias
> utilizar el metodo TBrwColumn:Sort( oCol ), pero dicho metodo es reservado y
> no documentado y no te aseguro que no vaya a cambiar en el futuro.
>
Pues es lo que estoy buscando. ¿No podrí­a dejar de ser reservado y
documentarse? Es de lo más normal que después de operar en un
TArrayBrowse se quiera dejar ordenado.
¿Que parámetros lleva el método Sort?
Gracias.
Un saludo,
Jose A. Suarez

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 6:17 pm
por ignacio
José Alfonso,
¿No podría dejar de ser reservado y documentarse?
La clase ya tiene bastantes miembros y preferimos documentar sólo los
realmente importantes (Los árboles no dejan ver el bosque ;-)). Además si
disparas el evento OnHeaderClick de la columna ni siquiera hace falta
llamarlo.
> ¿Que parámetros lleva el método Sort?
Como he indicado con anterioridad: OCOL. Es decir, un objeto TBrwColumn.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
news:[email=4649da71@ozsrv2.ozlan.local...]4649da71@ozsrv2.ozlan.local...[/email]
> Ignacio,
>
> > También podrias
>> utilizar el metodo TBrwColumn:Sort( oCol ), pero dicho metodo es
>> reservado y no documentado y no te aseguro que no vaya a cambiar en el
>> futuro.
>>
>
> Pues es lo que estoy buscando. ¿No podría dejar de ser reservado y
> documentarse? Es de lo más normal que después de operar en un TArrayBrowse
> se quiera dejar ordenado.
>
> ¿Que parámetros lleva el método Sort?
>
> Gracias.
>
> Un saludo,
>
>
> Jose A. Suarez

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 6:23 pm
por jasm
Ignacio,
>
> Como he indicado con anterioridad: OCOL. Es decir, un objeto TBrwColumn.
Ok. No existe forma de decirle que ordene de forma ascendente o
descendente. Lo hace de forma alternativa.
Un saludo,

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 6:26 pm
por ignacio
José Alfonso,
Lo más sencillo es que utilices la función Asort y ordenes el array como tu
mejor desees.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
news:4649de95$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Ignacio,
>>
>> Como he indicado con anterioridad: OCOL. Es decir, un objeto TBrwColumn.
>
> Ok. No existe forma de decirle que ordene de forma ascendente o
> descendente. Lo hace de forma alternativa.
>
>
> Un saludo,
>

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 6:33 pm
por jasm
Ignacio Ortiz de Zúñiga escribió:
> José Alfonso,
>
> Lo más sencillo es que utilices la función Asort y ordenes el array como tu
> mejor desees.
>
Ya veo que va a ser eso lo que tenga que hacer.
Me quedo muy desilusionado con el tema del sort en los browses :-(. Sin
ánimo de ofender, pero tal como están valen para mas bien poco, la verdad.
Un saludo y gracias,
Jose A. Suarez

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 6:39 pm
por ignacio
José Alfonso,
Sólo ofende ...
Siento igualmente que no entiendas que no podemos hacer un Xailer a cada
medida de vosotros.
Un saludo,
ASORT()
Sort an array
------------------------------------------------------------ ------------------
Syntax
ASORT(<aTarget>, [<nStart>],
[<nCount>], [<bOrder>]) --> aTarget
Arguments
<aTarget> is the array to be sorted.
<nStart> is the first element of the sort. If not specified, the
default starting position is one.
<nCount> is the number of elements to be sorted. If not specified,
all elements in the array beginning with the starting element are
sorted.
<bOrder> is an optional code block used to determine sorting order.
If not specified, the default order is ascending.
Returns
ASORT() returns a reference to the <aTarget> array.
Description
ASORT() is an array function that sorts all or part of an array
containing elements of a single data type. Data types that can be
sorted include character, date, logical, and numeric.
If the <bOrder> argument is not specified, the default order is
ascending. Elements with low values are sorted toward the top of the
array (first element), while elements with high values are sorted
toward
the bottom of the array (last element).
If the <bOrder> block argument is specified, it is used to determine
the
sorting order. Each time the block is evaluated, two elements from the
target array are passed as block parameters. The block must return
true
(.T.) if the elements are in sorted order. This facility can be used
to
create a descending or dictionary order sort. See the examples below.
When sorted, character strings are ordered in ASCII sequence; logical
values are sorted with false (.F.) as the low value; date values are
sorted chronologically; and numeric values are sorted by magnitude.
Notes
. ASORT() is only guaranteed to produce sorted output (as
defined by the block), not to preserve any existing natural order in
the process.
. Because CA-Clipper implements multidimensional arrays by
nesting subarrays within other arrays, ASORT() will not directly
sort
a multidimensional array. To sort a nested array, you must supply a
code block which properly handles the subarrays.
Examples
. This example creates an array of five unsorted elements, sorts
the array in ascending order, then sorts the array in descending
order using a code block:
aArray := { 3, 5, 1, 2, 4 }
ASORT(aArray)
// Result: { 1, 2, 3, 4, 5 }
ASORT(aArray,,, { |x, y| x > y })
// Result: { 5, 4, 3, 2, 1 }
. This example sorts an array of character strings in ascending
order, independent of case. It does this by using a code block that
converts the elements to uppercase before they are compared:
aArray := { "Fred", Kate", "ALVIN", "friend" }
ASORT(aArray,,, { |x, y| UPPER(x) < UPPER(y) })
. This example sorts a nested array using the second element of
each subarray:
aKids := { {"Mary", 14}, {"Joe", 23}, {"Art", 16} }
aSortKids := ASORT(aKids,,, { |x, y| x[2] < y[2] })
Result:
{ {"Mary", 14}, {"Art", 16}, {"Joe", 23} }
Files Library is EXTEND.LIB.
------------------------------------------------------------ --------------------
See Also: ASCAN() EVAL() SORT
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
news:4649e0d7$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Ignacio Ortiz de Zúñiga escribió:
>> José Alfonso,
>>
>> Lo más sencillo es que utilices la función Asort y ordenes el array como
>> tu mejor desees.
>>
>
> Ya veo que va a ser eso lo que tenga que hacer.
>
> Me quedo muy desilusionado con el tema del sort en los browses :-(. Sin
> ánimo de ofender, pero tal como están valen para mas bien poco, la verdad.
>
> Un saludo y gracias,
>
> Jose A. Suarez

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 6:56 pm
por miguel
Hola Jose Alfonso
Yo utilizo TMemdataSet con TDBBrowse, este ultimo tiene un metodo :Sort
bastante agil y acomodable a muchas necesidades, pruebalo.
Saludos. Miguel A. Torrellas
José Alfonso Suárez Moreno escribió:
> Ignacio Ortiz de Zúñiga escribió:
>> José Alfonso,
>>
>> Lo más sencillo es que utilices la función Asort y ordenes el array
>> como tu mejor desees.
>>
>
> Ya veo que va a ser eso lo que tenga que hacer.
>
> Me quedo muy desilusionado con el tema del sort en los browses :-(. Sin
> ánimo de ofender, pero tal como están valen para mas bien poco, la verdad.
>
> Un saludo y gracias,
>
> Jose A. Suarez

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 7:01 pm
por miguel
Perdon.
Miguel A. Torrellas escribió:
> Hola Jose Alfonso
> Yo utilizo TMemdataSet con TDBBrowse, este ultimo tiene un metodo :Sort
> bastante agil y acomodable a muchas necesidades, pruebalo.
Donde pongo último quise decir primero
Saludos de nuevo

Reordenar TArrayBrowse

Publicado: Mar May 15, 2007 7:02 pm
por jasm
Ignacio,
Lo siento, no quiero ofender.
Comprendo que no se pueda hacer un Xailer a la medida de cada cual, pero
también comprendo que hay cosas que pueden mejorarse. No se si habrá más
gente en mi caso, pero es de toda lógica y razón que si se están
haciendo cambios sobre un browse que permite ordenación por columnas, al
terminar exista un método que permita presentarle el resultado ordenado
al usuario por el criterio de ordenación establecido. Y eso no es
hacerlo "a mi medida".
Lo he solucionado por otra ví­a.
Muchas gracias y un saludo,
Jose A. Suarez