Hola
estoy intentando hacerme una busqueda incremental con TMySql y xBrowse, capturo la tecla con bKeydown, pero no encuentro como refrescar el browse que origino la busqueda, despues de hacerle un filtro a la tabla con los datos que estaba buscando.
- Code: Select all Expand view
#include "fiveWin.ch"
#include "xbrowse.ch"
static oBrw, cBuscador
/*******************************************************************/
function Departamentos()
local oCol, cQuery, oDatos, oDlg
LOCAL aBtn := array( 8 )
local oBoton1, oBoton2
local oDeptos, oFont1
local oEsperar := Esperar("Cargando departamentos ..... espere por favor ...")
cBuscador := ''
IF oMysql:netErr()
MSGINFO( cMensajeSql, cProgram )
RETURN NIL
ENDIF
DEFINE FONT oFont1 NAME 'MS Sans Serif' SIZE 0,-10 BOLD
oDeptos := oMysql:Query( "SELECT * FROM departamentos ORDER BY nombre ")
IF oDeptos:netErr()
MSGINFO( cMensajeSql + ' [departamentos]', cProgram )
RETURN NIL
ENDIF
oEsperar:end()
DEFINE DIALOG oDlg RESOURCE "DEPTO0" TITLE "Catalogo de Departamentos"
oDlg:lHelpIcon := (.f.)
oBrw := TxBrowse():New(oDlg)
SetMyBrwSql( oBrw, oDeptos )
oCol := oBrw:AddCol()
oCol:bStrData := { || strzero(MyCampo(oDeptos,"codigo"),3) }
oCol:cHeader := "Código"
oCol := oBrw:AddCol()
oCol:bStrData := { || MyCampo(oDeptos,"nombre") }
oCol:cHeader := "Descripción"
oCol := oBrw:AddCol()
oCol:bStrData := { || transform(MyCampo(oDeptos,"descuento"),'999%') }
oCol:cHeader := "% descuento"
oCol:nDataStrAlign := AL_RIGHT
oCol:oDataFont := oFont1
oBrw:CreateFromResource(101)
oBrw:bKeyDown := { | nKey | MisTeclas( nKey, oBrw, oDeptos ) }
oBrw:aCols[ 03 ]:bClrStd := {|| { iif( oDeptos:fieldGet('descuento') > 0, CLR_RED, CLR_WHITE), CLR_WHITE } } // nombre
oBrw:bClrHeader := { || {CLR_MAGENTA,CLR_WHITE }}
oBrw:bClrFooter := { || {CLR_GREEN,CLR_WHITE } }
oBrw:bClrSel := { || {CLR_CYAN,CLR_WHITE } }
ACTIVATE DIALOG oDlg CENTER ON INIT CreaBarra(oDlg, oDeptos)
oDeptos:end()
oDeptos := NIL
oFont1:end()
RETURN NIL
static function CreaBarra(oDlg, oDeptos)
return nil
/*******************************************************************/
static function MisTeclas( cSeek, oBrw, oDeptos )
local cTecla := chr(cSeek)
local cChar := upper(cTecla)
local oDlg, oFont, oGet1
cBuscador := cBuscador + cChar
local oBuscar := oMysql:Query( "SELECT * FROM departamentos ORDER BY nombre WHERE nombre LIKE '" + cBuscador + "'%'")
oBrw:Refresh()
oDeptos:refresh()
// en esta parte de aqui, es donde deberia asignarle la nueva data al browse, pero no doy con bola
return nil
Saludos,
Mauricio