Olá sygecom!
Eu utilizo arquivos *.ntx, ai está uma parte da minha rotina.
Código: Selecionar todos
Antes de iniciar a rotina que cria oTBrowse eu crio o indice:
*************
index on IDT_PAI to TEMP for IDT_PAI = DEBITO->IDTDEB
*************
***********************************************************
STATIC FUNCTION CriarBrowser( nLi, nCi, nLf, nCf )
***********************************************************
/* * * * *
* Funçao: CriarGerallBrowser
* Objetivo: Criar o TBrowser Gen‚rico
* Parametros: nLi, nCi, nLf, nCf = Coordenadas
* Variaveis: nColLen = Numero de elementos da matriz mNomeCampo
* i = Controle For Next
* cBloco = Bloco para formatar os campos no TBrowser
*/
LOCAL oMyBrowser,;
nColLen := 0,;
i := 0,;
cBloco
//..Calcula o numero de colunas igual ao numero de campos
nColLen := LEN( mCampBrowse )
//...Criando o objeto TBrowser
oMyBrowser := TBrowseDB( nLi+2, nCi+1, nLf-1, nCf-1 )
//...Prepara cores padrao para o TBrowse
//........................1....2....3....4....5...6
oMyBrowser:colorSpec := "W+/B,N/W,GR+/B,R+/B,R/W,G/B"
//...Prepara separadores de cabecalho e colunas
//oMyBrowser:headSep := CHR(205)+CHR(209)+CHR(205)
oMyBrowser:headSep := CHR(205)+CHR(205)+CHR(205)
oMyBrowser:colSep := " "+CHR(179)+" "
//...Definicao de colunas com TBColummnNew()
for i := 1 TO nColLen
cBloco := fieldblock(mCampBrowse[i,1]) //..Nome do Campo
oColuna := TBColumnNew(mCampBrowse[i,3], cBloco) //..Titulo e campo
oColuna:headSep := CHR(205)
oColuna:colSep := " "+ CHR(179)+" "
oColuna:defColor:= {1,2}
oColuna:picture := mCampBrowse[i,2] //..Mascara
oColuna:colorblock:={|| iif(deleted(), {4,5},{1,2})}
//...Adiciona colunas ao TBrowser
oMyBrowser:addColumn(oColuna)
next
return oMyBrowser
***********************************************************
static function TestarTecla( nKey, oMyBrowser )
***********************************************************
local mVar
do case
case nKey == K_UP
oMyBrowser:up() // move o cursor para cima
case nKey == K_DOWN
oMyBrowser:down() // move o cursor para baixo
case nKey == K_LEFT
oMyBrowser:left() // move o cursor para esquerda
case nKey == K_RIGHT
oMyBrowser:right() // move o cursor para a direita
case nKey == K_HOME
oMyBrowser:goTop() //home() // move cursor para a primeira coluna
case nKey == K_END
oMyBrowser:goBottom() //end() // move o cursor para a ultima coluna
case nKey == K_PGUP
oMyBrowser:pageUp() // move fonte de dados uma tela acima
case nKey == K_PGDN
oMyBrowser:pageDown() // move fonte de dados uma tela abaixo
case nKey == K_CTRL_PGUP
oMyBrowser:goTop() // vai para a primeira linha da fonte
case nKey == K_CTRL_PGDN
oMyBrowser:goBottom() // vai para a ultima linha da fonte
case nKey == K_CTRL_HOME
oMyBrowser:panHome() // vai para a primeira coluna real
case nKey == K_CTRL_END
oMyBrowser:panEnd() // vai para a ultima coluna real
case nKey == K_CTRL_LEFT
oMyBrowser:panLeft() // desloca janela para a esquerda
case nKey == K_CTRL_RIGHT
oMyBrowser:panRight() // desloca a janela para a direita
case nKey == K_ENTER //..Acessa rotina de altera‡ao
Alterar()
oMyBrowser:refreshAll()
case nKey == K_F5 //.. Acessa rotina Filho
Sistema06() //andamento()
case nKey == K_F3 //.. Acessa rotina de Visualiza‡ao
Visualizar()
case nKey == K_INS //.. Acessa rotina de inclusao
Incluir()
oMyBrowser:refreshAll()
case nKey == K_DEL
DelRegistro()
case nKey == K_ESC // abandona o programa
SETCURSOR(SC_NORMAL) // retorna ao cursor normal
RETURN .F.
ENDCASE
RETURN .T.
Se precisar de mais detalhes postarei o resto das rotina...
Atenciosamente.
Carlos Gomes