FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Busqueda incremental en Dialogo
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Busqueda incremental en Dialogo
Posted: Tue May 05, 2020 04:42 PM

Hola amigos:

Me interesa implementar la busqaueda incremental en un XBROWSE pero en un dialogo, el codigo que adjunto es autoexplicativo
si quereis probarlo sustituir el DATASOURCE por uno propio , se adapta el XBROWSE a vuestros campos y listo.
Yo todo este codigo lo tengo utilizando recursos , pero para no añadir el .rc lo he traspasado a comandos.
vereis que me funciona bien desde el dialogo principal tecleo en el GET y el cursor buscar el registro.
Pero en cuanto abro el dialogo con el boton "Busqueda" por mucho que teclee no aparece nada en el GET y no se mueve el XBROWSE y el
codigo es el mismo. ¿Por que ?, ¿Que hago mal?.

// Prueba de busqueda incremental
#include "fivewin.ch"

Static oBrw

function Main()

   REQUEST DBFCDX
   local oDlgBrw, oFont, oBtn

   USE OBRAS NEW VIA "DBFCDX"
   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   
   DEFINE DIALOG oDlgBrw SIZE 1000, 700 PIXEL FONT oFont
   
     @ 20, 0 XBROWSE oBrw DATASOURCE "OBRAS" SIZE 800, 500 PIXEL ;
         COLUMNS "Codigo","Cif","Nombre","Poblacion" ;
         HEADERS "CODIGO", "CIF", "NOMBRE", "POBLACION" CELL LINES AUTOSORT ;      
         OF oDlgBrw UPDATE STYLE 2007       

      WITH OBJECT oBrw
         :nColDividerStyle := LINESTYLE_LIGHTGRAY
         :nRowDividerStyle := LINESTYLE_LIGHTGRAY
         :nMarqueeStyle    := MARQSTYLE_HIGHLROW
         :lIncrFilter      := .T.
         :lSeekWild        := .T.
         :cFilterFld       := "Nombre"
         
         :Createfromcode()
      END 
      
      @ 0,120 BUTTON oBtn PROMPT "Busqueda" SIZE 35, 18 PIXEL OF oDlgBrw ACTION Busqueda()
      @ 0,10 GET oBrw:oSeek VAR oBrw:cSeek SIZE 90,14 PIXEL OF oDlgBrw COLOR CLR_HRED,CLR_YELLOW


   ACTIVATE DIALOG oDlgBrw CENTERED
   
   RELEASE FONT oFont

return nil
 

 FUNCTION Busqueda()

   LOCAL oDlgSearch
   
   DEFINE DIALOG oDlgSearch SIZE 400,200 PIXEL TITLE "Busqueda de registro"

      @ 4,6 BITMAP SIZE 43,28 PIXEL OF oDlgSearch FILENAME  "./Resource/res62.bmp" ADJUST   
      @ 54,53  GET oBrw:oSeek VAR oBrw:cSeek SIZE 90,14 PIXEL OF oDlgSearch 
      
   ACTIVATE DIALOG oDlgSearch CENTERED 


RETURN NIL  

//-------------------------------------------------------------------------- //

Muchas gracias por vuestra ayuda.

Saludos.

Jose.

Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Busqueda incremental en Dialogo
Posted: Wed May 06, 2020 04:41 PM

Hola, en ves de llamar otro Dialog, coloca un Say en el Dialog Principal, a mi me funciona muy bien

  
  REDEFINE  SAY oBrw:oSeek ID -11 PROMPT oBrw:cSeek  PICTURE "@!" OF oDlg FONT xFont COLOR CLR_HRED

                                   oBrw:bChange   := {|| oBrw:oSeek:Refresh() }

solo un tip

saludos

SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Re: Busqueda incremental en Dialogo
Posted: Wed May 06, 2020 07:35 PM

Hola Armando.

Gracias por tu interes, si miras el codigo lo tengo en un GET en el mismo dialogo y me funciona bien, pero en cuanto lo
quiero pasar a que se habra un dialogo se teclee alli y se actualice el XBROWSE, nada de nada, incluso teniendo la variable del
XBROWSE como static externa. No comprendo como no funciona la verdad, es el mismo codigo.

Bueno espero solucionarlo algun dia.

Saludos

Jose.

Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Busqueda incremental en Dialogo
Posted: Wed May 06, 2020 08:07 PM

Jose, no crees que si haces dos GETs con el mismo objeto, puede desactivarte el primero?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Busqueda incremental en Dialogo
Posted: Wed May 06, 2020 08:12 PM

lo que pasa es que al ingresar en el get en forma directa (sin pasar por el browse), lo que escribes debes "Validarlo" con ::bChange y hacer la búsqueda en el xbrowse, me paso lo mismo hace mucho tiempo, lo cual lo sustituí con un "say" y solucione mi problema de la forma mas sencilla posible.

algo así se me ocurre,

           REDEFINE GET oBrw:oSeek VAR oBrw:cSeek ... 

                        oBrw:oSeek:bChange := {||  oBrw:oSeek:Refresh(), .T. }

mi humilde sugerencia

saludos

SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Re: Busqueda incremental en Dialogo
Posted: Thu May 07, 2020 03:20 PM

Hola:

Gracias a ambos Cristobal y Armando.

El caso es que en buena logica Cristobal argumentas lo de los dos gets, pero si desabilito el del dialogo principal solo dejo el boton
que llama al segundo dialogo tampoco funciona.

Armando la unica forma que funciona es la que tu dices desde el mismo dialogo con un SAY pero tambien funciona con un GET comprobado.

Si llamas a otro dialogo definitivamente no funciona, el caso que no se porque. No os preocupeis ya que no es nada insalvable.

Muchas gracias por la ayuda prestada.

Saludos

Jose

Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64

Continue the discussion