Página 3 de 3
Coluna separado para os CAMPOS de Cabeçalho em TBROWSE
Enviado: 09 Dez 2015 01:06
por alxsts
Olá!
JoséQuintas escreveu:Em ::ApplyKey() usa ::SetKey().
É até muito interessante.
Além de ::SetKey() conter a ação de teclas padrão, ainda permite configurar teclas adicionais.
Legal Quintas! Este seria o meu caminho seguinte na investigação. Já que você o fez, economizei tempo.
alxsts escreveu:hb_keyStd( nKey )
Creio que seja nesta função, que pertence à lib padrão do Harbour. O fato é que funciona...
Corrigindo esta informação: esta função converte a tecla digitada em uma tecla padrão Clipper (talvez DOS). Ou seja, pega a tecla digitada no conjunto de caracteres que estiver sendo usado e a transforma em um padrão pré definido (extraído de
Understanding harbour codepage & unicode, aliás, um artigo interessantíssimo, para ser bem guardado, em minha opinião). Ainda não consegui fazer funcionar os Set Key da forma mencionada Pelo Andril...
Coluna separado para os CAMPOS de Cabeçalho em TBROWSE
Enviado: 09 Dez 2015 02:26
por alxsts
Olá!
Desvendado:
Código: Selecionar todos
oTBrowse := TBrowseDB(2,2,20,78)
WITH OBJECT oTBrowse
:headsep := DEF_HSEP // Header
:colsep := DEF_CSEP // Barra separadora colunas...
:footsep := DEF_FSEP // Footer (Rodapé). Ultima linha...
:colorspec := "N/W,N/W*,GR+/B,R+/B,GB+/B,RB+/B,W+/G,R*/B"
:SetKey( K_F2, { || Alert( " Set Key F2 ativado!" ) } )
:SetKey( K_F3, { || Alert( " Set Key F3 ativado!" ) } )
FOR EACH cField IN aFields
:addColumn( TBColumnNew( cField, FieldBlock( cField ) ) )
NEXT
END
Para desativar uma tecla:
Coluna separado para os CAMPOS de Cabeçalho em TBROWSE
Enviado: 09 Dez 2015 10:41
por JoséQuintas
Nem percebi que não postei a rotina alterada pra essa outra forma.
Não lembro se em alguma situação preciso da coluna atual do tbrowse, porque numa situação dessas já invalida a rotina.
No meu caso prefiro rotinas genéricas, assim é como se fossem uma LIB, sem ficar duplicando fonte.
Código: Selecionar todos
#include "inkey.ch"
PROCEDURE Main
LOCAL oTBrowse, oKeys
SetMode( 25, 80 )
SET COLOR TO W/B,N/W,,,W/B
CLS
USE \jpa\cordeiro\jpcadas
oTBrowse := { ;
{ "CODIGO", { || jpcadas->cdCodigo } }, ;
{ "NOME", { || Left( jpcadas->cdNome, 10 ) } }, ;
{ "ENDERECO", { || Left( jpcadas->cdEndereco, 10 ) } }, ;
{ "CIDADE", { || Left( jpcadas->cdCidade, 10 ) } }, ;
{ "UF", { || jpcadas->cdUF } } }
oKeys := { ;
{ K_ENTER, { || AlgumaCoisa() } }, ;
{ K_F2, { || AlgumaCoisa() } } }
FazBrowse( oTBrowse, oKeys )
CLOSE DATABASES
RETURN
STATIC FUNCTION AlgumaCoisa()
RETURN NIL
FUNCTION FazBrowse( oTBrowse, oKeys )
LOCAL oBrowse, nCont, nKey
oBrowse := tbrowsedb( 1, 1, MaxRow(), MaxCol() )
oBrowse:HeadSep := Chr(196)
oBrowse:FootSep := Chr(196)
oBrowse:ColSep := ""
IF oTBrowse == NIL
// tbrowse pra estrutura do dbf, caso não seja indicado o array
ELSE
FOR nCont = 1 TO Len( oTBrowse )
oBrowse:AddColumn( tbColumnNew( "|", { || "|" } ) ) // pra colocar separador de colunas
oBrowse:AddColumn( tbColumnNew( oTBrowse[ nCont, 1 ], oTBrowse[ nCont, 2 ] ) )
NEXT
ENDIF
IF .NOT. oKeys == NIL
FOR nCont = 1 TO Len( oKeys )
oBrowse:SetKey( oKeys[ nCont, 1 ], oKeys[ nCont, 2 ] )
NEXT
ENDIF
oBrowse:RefreshAll()
DO WHILE .T.
DO WHILE .NOT. oBrowse:Stable()
oBrowse:Stabilize()
ENDDO
nKey := Inkey(0)
IF nKey == K_ESC
EXIT
ENDIF
oBrowse:ApplyKey( nKey )
ENDDO
RETURN NIL
Coluna separado para os CAMPOS de Cabeçalho em TBROWSE
Enviado: 09 Dez 2015 10:51
por JoséQuintas
Só pra esclarecer, no tbrowse:
- Define como vai ser a janela de navegação do tbrowse
- Define quais vão ser as colunas (título e conteúdo)
- Define teclas adicionais
- E também tem a possiblidade de definir o comportamento de cores (não a rotina acima)
É só lembrar disso na hora de montar o tbrowse, ou se quiser algum comportamento diferente.
Uma mensagem acima do Erasmo ficou sem resposta:
Podem-se escolher as colunas do tbrowse, mas às vezes é interessante ter uma rotina genérica que já pegue todos os campos do arquivo, sem precisar ficar indicando cada um dos campos.
Foi isso que te deixou com dúvida: a rotina postada já criava colunas automaticamente pra toda estrutura do arquivo, seria só trocar essa parte por suas colunas.
E como complemento:
Repare que a minha rotina continua a mesma.
Fiz um tbrowse inicial, e depois fui alterando ou acrescentando algo mais.
É assim que deve fazer: primeiro um inicial funcionando, e depois vai revisando/acrescentando recursos à medida em que vai precisando/aprendendo.