FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse - Ayuda para ordenar
Posts: 593
Joined: Sat May 12, 2007 11:47 AM
xBrowse - Ayuda para ordenar
Posted: 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 (fw): Select all Collapse
 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 :-)
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: xBrowse - Ayuda para ordenar
Posted: Sun Jul 26, 2009 12:42 AM
Hola amigo, prueba lo siguiente:

oBrow:aCols[ nCol ]:cSortOrder :="NomTAG"
Ejemplo:
Code (fw): Select all Collapse
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
Posts: 593
Joined: Sat May 12, 2007 11:47 AM
Re: xBrowse - Ayuda para ordenar
Posted: Sun Jul 26, 2009 01: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

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: xBrowse - Ayuda para ordenar
Posted: Mon Jul 27, 2009 01:07 PM
Rolando, prueba con esto

En tu Xbrowse define tus columnas asi:

Code (fw): Select all Collapse
 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.
Posts: 33
Joined: Thu Jan 26, 2006 05:53 PM
Re: xBrowse - Ayuda para ordenar
Posted: Mon Jul 27, 2009 02: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:

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


Espero que te sea de utilidad.

Saludos

Rod MG
Posts: 593
Joined: Sat May 12, 2007 11:47 AM
Re: xBrowse - Ayuda para ordenar
Posted: Mon Jul 27, 2009 07: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 (fw): Select all Collapse
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 :-)

Continue the discussion