FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Incremental Search y cSortOrder
Posts: 230
Joined: Sat Apr 19, 2008 10:28 PM

Incremental Search y cSortOrder

Posted: Thu Apr 15, 2010 01:53 PM

Hola a todos,

Estoy usando un "incremental search" con Xbrowse. Funciona muy bien. En una línea por encima del xbrowse voy escribiendo la cadena de búsqueda "cSeek" con:

@ 44 , 70 SAY ::oBrw:oSeek PROMPT ::oBrw:cSeek of ::oWnd2 pixel size 150,15 color CLR_BLUE,CLR_WHITE

La base de datos está indexada por varias columnas con:

Tf:oBrw:aCols[1]:cSortOrder := "EASY"
Tf:oBrw:aCols[2]:cSortOrder := "CATEG"
Tf:oBrw:aCols[3]:cSortOrder := "PAYTO"

Me gustaría que cuando el usuario cambie el índice pulsado en la cabecera de la columna, la cadena de búsqueda aparezca encima de esa columna.

El say se puede mover con:

::obrw:oseek:nleft:=

Pero me falta saber las coordenadas en pixeles de la columna del browse cuyo indice está activado. ¿Alguien me lo puede indicar?

Muchas gracias y un saludo,

Alvaro

Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM

Re: Incremental Search y cSortOrder

Posted: Thu Apr 15, 2010 03:09 PM
Alvaro

Tus indices debes crearlo con TAG
Use PERSONAL
INDEX ON NOMBRE TAG PERSONAL1
INDEX ON CARGO TAG PERSONAL2
Creará un solo indice

Asi lo hago
Code (fw): Select all Collapse
USE PERSONAL INDEX PERSONAL ALIAS DATOS  NEW SHARE

El browse
   oCol:= oBrw:AddCol()
   oCol:bStrData := { || DATOS->NOMBRE }
   oCol:cHeader  := "NOMBRE Y APELLIDOS"
   oCol:nHeadStrAlign := AL_CENTER
   oCol:nWidth:=210
   oCol:cSortOrder:="PERSONAL1"
   oCol:bLClickHeader:= {|| oBrw:Gotop() }  //por si queres enviar el puntero al inicio

    oCol:= oBrw:AddCol()
   oCol:bStrData := { || DATOS->CARGO }
   oCol:cHeader  := "CARGO"
   oCol:nHeadStrAlign := AL_CENTER
   oCol:nWidth:=150
   oCol:cSortOrder:="PERSONAL2"
   oCol:bLClickHeader:= {|| oBrw:Gotop() }  

PARA QUE MUESTRE LO QUE VAS ESCRIBIENDO

  @.2,33 SAY oSay VAR Cadena size 30,8 of oDlg  UPDATE PICTURE "@!"
  oBrw:bSeek := {|c| (DbSeek(UPPER(c)) ) }; oBrw:oSeek:=oSay

Espero te sirva

Saludos

Adhemar
Saludos,



Adhemar C.
Posts: 230
Joined: Sat Apr 19, 2008 10:28 PM

Re: Incremental Search y cSortOrder

Posted: Thu Apr 15, 2010 03:35 PM

Gracias, Adhemar,

La parte que tu explicas funciona. Lo que quiero es que el "osay" vaya cambiando de sitio, es decir:

@.2,33 SAY oSay VAR Cadena size 30,8 of oDlg UPDATE PICTURE "@!"

vaya cambiando de sitio, y se ponga encima de la columna cuyo indice está activado.

Para ello hay que modificar la clase Xbrowse para que cada vez que se cambie de índice o que se redimensionen las columnas se ejecute

::oseek:nleft:= n

Siendo "n" la posición de la columna activa, que es lo que no sé como hallar.

Muchas gracias,
Alvaro

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM

Re: Incremental Search y cSortOrder

Posted: Thu Apr 15, 2010 05:38 PM

oSeek:nLeft := oBrw:nLeft + oBrw:aCols[ <n> ]:nDisplayCol, where <n> is the sorted column number.

Regards



G. N. Rao.

Hyderabad, India
Posts: 230
Joined: Sat Apr 19, 2008 10:28 PM

Re: Incremental Search y cSortOrder

Posted: Fri Apr 16, 2010 09:32 AM

Thank you

Alvaro

Continue the discussion