Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

alxsts
Colaborador
Colaborador
Mensagens: 3110
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem 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...
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador
Colaborador
Mensagens: 3110
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem 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:

Código: Selecionar todos

oTBrowse:SetKey( K_F3, NIL } )
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder