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: 3092
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: 3092
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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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