xBrowse - Ayuda para ordenar

xBrowse - Ayuda para ordenar

Postby rolando » Sat Jul 25, 2009 11:46 pm

Buenas noches,

Por más que le doy vueltas no consigo lograrlo.

Tengo un browse de oDbf en el cual, al pulsar sobre los heads ordeno por esa columna. Hasta ahí todo bién.

La cuestión es que necesito buscar por dos campos indexados y lo hago así:

Code: Select all  Expand view
oDbf:SetOrder(1,"SERVICE.CDX")     // ordeno por CODIGO
     oDbf:seek(cParte,.t.)
     if oDbf:found()
*       oBrw:nColSel:=3
        oBrw:refresh()
        Return .t.
     endif


     oDbf:SetOrder(7,"SERVICE.CDX")     // ordeno por NOMBRE
     oDbf:seek(cParte,.t.)
     if oDbf:found()
*       oBrw:nColSel:=3
        oBrw:refresh()
        Return .t.
     endif
 


La cuestión es que me interesaría que al volver al browse, luego de encontrar lo buscado con seek, me ordenara el browse por la columna correspondiente al índice en el que se busco, es decir como si al encontrar buscando por la clave "NOMBRE", al volver al browse yo pulsara con el ratón sobre el header de "NOMBRE".

Lo que necesito saber se resume a esto: ¿Como hago para, desde código" hacer que "SE pulse" el header que yo quiera y ordene el browse por la columna de este header.

Gracias.

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

Re: xBrowse - Ayuda para ordenar

Postby jrestojeda » Sun Jul 26, 2009 12:42 am

Hola amigo, prueba lo siguiente:

oBrow:aCols[ nCol ]:cSortOrder :="NomTAG"
Ejemplo:
Code: Select all  Expand view

oBrow:aCols[1]:cSortOrder   :="PROVEED1"
 


Espero te sirva.
Ojeda Esteban Eduardo.
Buenos Aires - Argentina.
FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport
Skype: jreduojeda
User avatar
jrestojeda
 
Posts: 583
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Re: xBrowse - Ayuda para ordenar

Postby rolando » Sun Jul 26, 2009 1:04 am

Gracias por responder,

Creo que no entendiste lo que necesito hacer.

La línea asignando el orden a cada columna las defino cuando hago el "add" de cada columna del browse y no es el problema.

La cuestión es, vamos a suponer que el operador presiona el izquierdo del mouse sobre el header de la coumna dos, así queda ordenado el browse por esa columna, si presiona sobre la tres, queda ordenado por la tres, etc.

Ahora bién, en mi sistema, tengo un botón "Buscar" el que luego de hacer un get para entrar el dato a buscar, realiza un seek en tres indices distintos (obviamente de a uno por vez). Por ej, busca primero por el indice que afecta a la columna 1 y si no encuentra el dato, busca por el indice que afecta a la columna 2 y, si no encuentra nada ahí, busca por el indice que afecta a la columna 3.

Dependiendo de en cual columna encontró el dato buscado, me interesaría que además de ordenar los datos por el índice correspondiente (cosa que se hacer), LA COLUMNA QUE SE CORRESPONDE CON EL INDICE EN EL QUE SE ENCONTRÓ EL DATO QUEDE CON SU HEADER TENIENDO LA FLECHITA QUE INDICA QUE ESTÁ ODENADO POR ESA COLUMNA, es decir, como si presionara el botón izquierdo del mouse sobre el header de esa columna.

Gracias.

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

Re: xBrowse - Ayuda para ordenar

Postby acuellar » Mon Jul 27, 2009 1:07 pm

Rolando, prueba con esto

En tu Xbrowse define tus columnas asi:

Code: Select all  Expand view

 oCol := oBrw:AddCol()
   oCol:bStrData  := { || LCV->FACTURA}
   oCol:nHeadStrAlign := AL_CENTER
   oCol:cHeader   := "FACTURA"
   oCol:nWidth:=59
   oCol:nDataStrAlign := AL_CENTER
   oCol:cSortOrder:= ORDTAG1     //El nombre del TAG de tu indice
   oCol:bLClickHeader:= {|| Inicio() }

   oCol := oBrw:AddCol()
   oCol:bStrData  := { || LCV->CLIENTE }
   oCol:nHeadStrAlign := AL_CENTER
   oCol:cHeader:= "N O M B R E"
   oCol:nWidth:=208
   oCol:cSortOrder:= ORDTAG2
   oCol:bLClickHeader:= {|| Inicio() }

*Activar el  pulsado de teclas dentro del xBrowse
      @1,80 GET oVar1 VAR xClave OF oDlg READONLY  //TE MOSTRARA LAS TECLAS QUE SE VAN PULSANDO

    oBrw:bKeyDown:={|nKey| iif( nKey >=96 .AND. nKey <=105, nKey-= 48, ), iif( nKey == VK_ESCAPE , (oDlg:End()),Nil ), ;
             iif( nKey == VK_BACK  , ( xClave:= SUBSTR( xClave,1,LEN( xClave )-1 ), iif(EMPTY(xClave),oBrw:GoTop(),dBSeek( xClave )),oBrw:Refresh(), oVar1:Refresh() ), ), ;
         iif( nKey>=32 .AND. nKey<=128, ( dBSeek( xClave+UPPER(CHR(nKey) ) ),iif( !EOF(), xClave+=UPPER(CHR(nKey)), ),dBSeek(xClave),oBrw:Refresh(),oVar1:Refresh() ),)}
 
*La función Inicio para poner en blanco las teclas pulsadas y mandar el puntero al inicio
  Static Function Inicio()
    (xClave:="",oVar1:Refresh(),oBrw:GoTop(),oBrw:SetFocus())
 Return Nil
 

Tus campos tienen que ser de caracter

Espero te sirva

Saludos

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1594
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: xBrowse - Ayuda para ordenar

Postby RodMG » Mon Jul 27, 2009 2:49 pm

Hola, Rolando.

===============
"LA COLUMNA QUE SE CORRESPONDE CON EL INDICE EN EL QUE SE ENCONTRÓ EL DATO QUEDE CON SU HEADER TENIENDO LA FLECHITA QUE INDICA QUE ESTÁ ODENADO POR ESA COLUMNA, es decir, como si presionara el botón izquierdo del mouse sobre el header de esa columna."
===============

Para lograrlo, una vez que determines la columna que deba tener la flechita, utiliza esto:

::oBrowse:aCols[ nNumeroDeColumna ]:HeaderLButtonUp( 0, 0, 0 )


Espero que te sea de utilidad.

Saludos

Rod MG
RodMG
 
Posts: 33
Joined: Thu Jan 26, 2006 5:53 pm

Re: xBrowse - Ayuda para ordenar

Postby rolando » Mon Jul 27, 2009 7:42 pm

Adhemar,

Gracias por responder, pero creo que no es lo que ando buscando.


Rod,

Gracias por responder. Lo tuyo se acerca a lo que busco. Ya lo había logrado usando

Code: Select all  Expand view
oBrw:aCols[3]:SetOrder()


Que hace lo mismo. El problema ahora es que si busco por otra columna y la ordeno por ella y pretendo marcar ese header, lo hace bién pero queda marcado también el anterior.

Si conoces alguna forma de "desmarcar" el header, sería la solución.

Gracias a todos.

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 45 guests