Page 1 of 1
xBrowse - Ayuda para ordenar
Posted: Sat Jul 25, 2009 11:46 pm
by rolando
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 _ indexados y lo hago así:
Code: Select all
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
Re: xBrowse - Ayuda para ordenar
Posted: Sun Jul 26, 2009 12:42 am
by jrestojeda
Hola amigo, prueba lo siguiente:
oBrow:aCols[ nCol ]:cSortOrder :="NomTAG"
Ejemplo:
Code: Select all
oBrow:aCols[1]:cSortOrder :="PROVEED1"
Espero te sirva.
Re: xBrowse - Ayuda para ordenar
Posted: Sun Jul 26, 2009 1:04 am
by rolando
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
Re: xBrowse - Ayuda para ordenar
Posted: Mon Jul 27, 2009 1:07 pm
by acuellar
Rolando, prueba con esto
En tu Xbrowse define tus columnas asi:
Code: Select all
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
Re: xBrowse - Ayuda para ordenar
Posted: Mon Jul 27, 2009 2:49 pm
by RodMG
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
Re: xBrowse - Ayuda para ordenar
Posted: Mon Jul 27, 2009 7:42 pm
by rolando
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
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