TSBROWSE 8 - Para Manuel Mercado
Posted: Sat Apr 12, 2008 6:08 pm
Olá, Sr. Manuel Mercado !
Através do codigo que me passou da pesquisa incremental estou tentando mostrar o registro pesquisado através de um SAY, porém quando apresento este registro ele sempre mostra o anterior ao posicionado no Browse. Como eu poderia apresenta-lo corretamente?
Mais uma vez obrigado e desculpe pelas perguntas. Segue abaixo a rotina.
//----------------------------------------------------------------------------//
#include "TSBrowse.ch"
#include "FiveWin.ch"
#include "\TSBUTTON\INCLUDE\TSButton.ch"
#define CLR_PINK nRGB( 255, 128, 128)
REQUEST DBFCDX
//----------------------------------------------------------------------------//
Function Main()
Local oBrw , otecla
PRIVATE cChav:="",oChar,cChar:=SPACE(25),cres:="",nsk:=1
Field First, Last
USE Employee SHARED NEW
Index On Trim( First ) + Space( 1 ) + Last Tag Name
Index On State Tag estado // CDX
DEFINE DIALOG oDlg RESOURCE "DIALOG_1"
REDEFINE BROWSE oBrw GRID ALIAS "Employee" ;
COLORS CLR_BLACK,CLR_PINK ID 110 OF oDlg
ADD COLUMN TO oBrw ;
HEADER "Name" SIZE 230 ;
ORDER "NAME";
DATA Trim( EMPLOYEE->FIRST ) + Space( 1 ) + EMPLOYEE->LAST
//
oBrw:SetIndexCols( 1 )
oBrw:lNoResetPos := .F.
oBrw:bKeyDown:={|nkey|VerTecla(nkey,oBrw)}
//
REDEFINE BUTTON ID 210 OF oDlg ACTION oDlg:End()
//
REDEFINE STSAY oChar VAR cChar ID 100 OF oDlg //;
REDEFINE STSAY oRes VAR cRes ID 4001 OF oDlg //;
ACTIVATE DIALOG oDlg CENTERED ;
ON PAINT oMsg := TMsgBar():New( oDlg, "TSBrowse El poder de las columnas." )
Return Nil
//----------------------------------------------------------------------------//
Function VerTecla(nkey,oBrw)
//----------------------------------------------------------------------------//
IF nKey==VK_BACK
IF LEN(cChav) > 0
cChav:=LEFT(cChav,LEN(cChav)-1)
cChar:=cChav
ELSE
cChar:=SPACE(25)
RETURN(.F.)
END
END
IF (nKey>=32 .AND. nKey<=255) .OR. nKey=VK_BACK
IF nKey!=VK_BACK
cChav+=CHR(nKey)
END
cres:=""
(*)-> cres:=ALLTRIM(SUBS(employee->first,LEN(ALLTRIM(cChav))-1))+ Space( 1 ) + EMPLOYEE->LAST //SUBS(first,LEN(ALLTRIM(cChav)))
(*)-> pega registro anterior a pesquisa.
END
IF nKey#VK_BACK
cChar:=IF(LEN(cChav)#0,cChav,SPACE(25))
END
oChar:Refresh()
oRes:Refresh()
RETURN(.T.)
Abraços !
Sergio....
Através do codigo que me passou da pesquisa incremental estou tentando mostrar o registro pesquisado através de um SAY, porém quando apresento este registro ele sempre mostra o anterior ao posicionado no Browse. Como eu poderia apresenta-lo corretamente?
Mais uma vez obrigado e desculpe pelas perguntas. Segue abaixo a rotina.
//----------------------------------------------------------------------------//
#include "TSBrowse.ch"
#include "FiveWin.ch"
#include "\TSBUTTON\INCLUDE\TSButton.ch"
#define CLR_PINK nRGB( 255, 128, 128)
REQUEST DBFCDX
//----------------------------------------------------------------------------//
Function Main()
Local oBrw , otecla
PRIVATE cChav:="",oChar,cChar:=SPACE(25),cres:="",nsk:=1
Field First, Last
USE Employee SHARED NEW
Index On Trim( First ) + Space( 1 ) + Last Tag Name
Index On State Tag estado // CDX
DEFINE DIALOG oDlg RESOURCE "DIALOG_1"
REDEFINE BROWSE oBrw GRID ALIAS "Employee" ;
COLORS CLR_BLACK,CLR_PINK ID 110 OF oDlg
ADD COLUMN TO oBrw ;
HEADER "Name" SIZE 230 ;
ORDER "NAME";
DATA Trim( EMPLOYEE->FIRST ) + Space( 1 ) + EMPLOYEE->LAST
//
oBrw:SetIndexCols( 1 )
oBrw:lNoResetPos := .F.
oBrw:bKeyDown:={|nkey|VerTecla(nkey,oBrw)}
//
REDEFINE BUTTON ID 210 OF oDlg ACTION oDlg:End()
//
REDEFINE STSAY oChar VAR cChar ID 100 OF oDlg //;
REDEFINE STSAY oRes VAR cRes ID 4001 OF oDlg //;
ACTIVATE DIALOG oDlg CENTERED ;
ON PAINT oMsg := TMsgBar():New( oDlg, "TSBrowse El poder de las columnas." )
Return Nil
//----------------------------------------------------------------------------//
Function VerTecla(nkey,oBrw)
//----------------------------------------------------------------------------//
IF nKey==VK_BACK
IF LEN(cChav) > 0
cChav:=LEFT(cChav,LEN(cChav)-1)
cChar:=cChav
ELSE
cChar:=SPACE(25)
RETURN(.F.)
END
END
IF (nKey>=32 .AND. nKey<=255) .OR. nKey=VK_BACK
IF nKey!=VK_BACK
cChav+=CHR(nKey)
END
cres:=""
(*)-> cres:=ALLTRIM(SUBS(employee->first,LEN(ALLTRIM(cChav))-1))+ Space( 1 ) + EMPLOYEE->LAST //SUBS(first,LEN(ALLTRIM(cChav)))
(*)-> pega registro anterior a pesquisa.
END
IF nKey#VK_BACK
cChar:=IF(LEN(cChav)#0,cChav,SPACE(25))
END
oChar:Refresh()
oRes:Refresh()
RETURN(.T.)
Abraços !
Sergio....