Ordenar en xBrowse - Solucionado

Ordenar en xBrowse - Solucionado

Postby rolando » Sat May 11, 2013 1:20 pm

Buen día,

Cuando se ordena un xBrowse presionado sobre la cabecera de una columna, si se está visualizando por ejemplo la línea 50 de browse, luego de ordenar se va a la línea 1 de ese browse. Esto es un comportamiento normal en la xBrowse que soluciono mediante programación.

Lo que me interesa saber es si hay alguna DATA para evitar ese comportamiento y que siempre quede en la línea que estaba antes de ordenar.

Gracias.

Rolando :D
Last edited by rolando on Sat May 18, 2013 11:11 pm, edited 1 time in total.
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Ordenar en xBrowse

Postby FranciscoA » Sat May 11, 2013 2:47 pm

Rolando, con este codigo, el xBrowse lo hace por si solo. Uso FWXH 12.04.
Por supuesto, los indices ya existen antes de activar el xBrowse. Como dices, siempre que se crea un indice, el puntero siempre va al primer registro.

Code: Select all  Expand view
  REDEFINE XBROWSE oBrw ID 118 OF oDlg ;
            COLUMNS "Codigo","Nombre" ;
            ALIAS "CLIENTES"  FOOTERS LINES CELL

   WITH OBJECT oBrw
      :nMarqueeStyle    := MARQSTYLE_HIGHLROW
      :nColDividerStyle:=LINESTYLE_LIGHTGRAY
      :nRowDividerStyle:=LINESTYLE_LIGHTGRAY

      :Codigo:cSortOrder   := "CLIENTES"
      :nombre:cSortOrder   := "NOMBCLTE"
   END

   REDEFINE SAY oTextBusc PROMPT cTextBusc ID 4003 OF oDlg UPDATE
   oTextBusc:cTooltip:= {"Click sobre cabecera de columna para busqueda respectiva","BUSQUEDA INCREMENTAL          "}

   oBrw:bSeek := {|c| Clientes->( DbSeek(UPPER(c),.t.) ) }
   oBrw:oSeek := oTextBusc
 

Espero te sirva de guia.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2114
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ordenar en xBrowse

Postby rolando » Sat May 11, 2013 7:52 pm

Francisco,

Gracias por responder.

Lo que estoy buscando es alguna data que sirva para DBF's y también para array's que "le diga" al xBrowse que debe posicionarse siempre (o no) en el mismo renglón que estaba antes de ordenar por cualquiera de sus columnas. Lo que haces es interesante según puede verse, es mas o menos lo que hago con DBF's pero lo hago usando el nro de RECNO() para ir a la línea indicada ya que pudiera darse el caso en haya varias líneas que tengan un campo con igual contenido y al hacerle un seek, podría no posicionarse en la línea que corresponda.

Pero con array que son autoordenables hay que hacerlo distinto.

Mi idea es que existiera (si no existe ya) una data como por ej. "lInicial" y que directamente se haga "oBrw:lInicial:=.t." para que ya siendo array o DBF, cada vez que se ordena quede en la misma línea.

Saludos.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Ordenar en xBrowse

Postby nageswaragunupudi » Sat May 11, 2013 10:55 pm

When index order is changed by clicking on the Header, the current row is shown at the same position and does not change normally. The behaviour is the same for arrays, dbf, ado, etc.

But in the following cases the record pointer moves up.
For example the current record is displayed in the 20th row.
By clicking on header, the index order is changed. If the serial position of the record in the new index order is less than 20, then the record pointer is moved up.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10308
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Ordenar en xBrowse

Postby rolando » Sat May 11, 2013 11:52 pm

G. N. Rao.,

Gracias por responder.

Lamentablemente en mi FWH 4.10 la xBrowse no se comporta como Usted explica.

¿Podría colocar un ejemplo del funcionamiento que Usted explica?

Saludos.

Rolando :D


G. N. Rao.,

Thanks for responding.

Unfortunately in my FWH 4.10 the xBrowse does not behave as you explained.

Could you post an example of how do you that?

Regards.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Ordenar en xBrowse

Postby rolando » Sun May 12, 2013 1:11 am

Solucionado (a medias).

Por ahora le agregué una data a la clase xBrowse que cuando se hace, (oBrw:lGoLine:=.t.), el ordenamiento no cambia la línea actual, queda en la misma luego de
ordenar.

Por ahora funciona con array's (que es lo que necesitaba).

Saludos.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Ordenar en xBrowse

Postby rolando » Sat May 18, 2013 11:10 pm

Buenas noches,

Estuve buscando la causa y encontré una pequeña falla en la clase TxBrowse de mi FWH10.4

La causa por la que no iba a la misma línea en la que estaba luego de ordenar (usando array), era un error en la llamada a la función aScan desde el Method SortArrayData.

Con el fin de informar a quienes como yo usamos una versión "viejita" del FWH, copio abajo la pequeña reforma efectuada a la clase mencionada, luego de la cual hace lo esperado:

Code: Select all  Expand view
//      ::oBrw:nArrayAt   := AScan( ::oBrw:aArrayData, uSave )  // línea original con error
      ::oBrw:nArrayAt := AScan(::oBrw:aArrayData,{|array|array==uSave})   // modificado by rCerella


Saludos.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 26 guests