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

Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem por Eolo »

Andrioli,

Estou trabalhando no projeto de um software novo e, na equipe, tem um cara dedicado exclusivamente a COMUNICAÇÂO, que é quem decide COMO mostrar as informações do sistema (em tela ou papel), incluindo cores, fontes, interação com o usuário etc.

E um dos pontos principais pontos da idéia é “não poluir visualmente”, não encher linguiça, mostrar o essencial, só o que interessa. Clean (“limpo”), pra citar o termo que ele usa.

Bão, não resisti à discussão deste tópico sobre as tais linhas separadoras e resolvi lançar a pergunta: É mesmo preciso usar as tais linhas?

Ao invés de fazer um relatório, mostro em anexo como seria a versão clean da tela do seu sistema, sem linhas separadoras e excluindo coisas sem necessidade (?), como os SEGUNDOS da hora, a palavra “existentes” no título Notas Fiscais, substituindo Remetente/Destinatário por Cliente, abolindo o ANO nas datas etc etc.

PS. Não, não hackeei o seu sistema. Peguei o JPG e alterei com o Photoshop. :-)
Anexos
Image1.jpg
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem por asimoes »

Bem lembrado Eolo,

Em aplicações windows mostrar data e hora é desnecessário.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
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 só de clientes vivem as notas.
Tem cliente, fornecedor, armazém, assistência técnica, etc.
E nem precisa considerar notas recebidas pra ter isso.

Sobre os traços, uma opção que uso em algumas telas é usar uma cor mais leve para os traços.
Tem horas que os traços ajudam muito.

Mas lógico, usando com equilíbrio.

Igual usar cores:
Se usar tudo muito colorido, nunca vai conseguir chamar a atenção para determinada informação da tela.
Se usar cores limitadas, vai conseguir destacar alguma coisa sempre que foi necessário.
Um alerta de data vencida , por exemplo.
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
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem por Eolo »

Começar pelo fim
Se fizer uma comparação visual do IE6 (WIn98) com o Edge (Win10), dá pra ver que alguma (ou muita) coisa mudou. A realidade hoje é outra, com a net “10mega”, os smartphones, 3D etc.

Visual ganhando de 7x1 de textos longos (“uma imagem vale mais do que mil palavras”). Informação rápida, visual, nada de muita perfumaria, nada de poluição visual desnecessária. To the point, fast. Este é o ponto fundamental.

Então, continuar usando as telas típicas do Dbedit do Clipper, com linhas verticais, é meio vintage, né não?, cópia fiel daqueles exemplos dos livros antigos do Clipper Summer. A salvação? Hoje, mesmo com o Clipper 52e, dá pra mostrar a coisa de uma maneira mais moderna. É só querer.
Nem só de clientes vivem as notas.
Tem cliente, fornecedor, armazém, assistência técnica, etc.
E nem precisa considerar notas recebidas pra ter isso.
O EXEMPLO que montei com o Photoshop, sobre a tela do Andrioli, foi só um exemplo.

Óbvio que a informação tem que informar. O core da questão é que, se estou na rotina Cadastro de Clientes e lá em cima da tela diz ”Cadastro de Clientes”, eu não preciso colocar, no topo da coluna respectiva, o texto “Nome do Cliente”. Basta “Nome”.

Menos poluição visual. Menos chover no molhado.


Sobre os traços, uma opção que uso em algumas telas é usar uma cor mais leve para os traços.
Tem horas que os traços ajudam muito.
Eu nunca tive nenhuma reclamação ou demanda de nenhum cliente quando aboli os traços verticais e/ou horizontais. A indentação dos campos, justificados à direita ou esquerda, junto com headers, resolveram a charada, pra mim, em 100%.

Fiz pesquisa a respeito? Sim, fiz. Cliente nenhum tava preocupado com as linhas separadoras. Do mesmo jeito que fiz pesquisa sobre o relógio na tela. O usuário sentado, usando o programa, eu perguntava "que horas são?". Todos (101%) consultaram o relógio grudado no braço. Nenhum, nunca, olhou as horas no meu programa (ou no Windows).

Aliás, nesse grupo de trabalho do novo software que citei, estamos debruçados sobre telas de dezenas de software e uma das premissas é que linhas separadoras, verticais ou horizontais, nem pensar. Como substituir? Cores. Em blocos, como no Win10.
Igual usar cores:
Se usar tudo muito colorido, nunca vai conseguir chamar a atenção para determinada informação da tela.
Se usar cores limitadas, vai conseguir destacar alguma coisa sempre que foi necessário.
Um alerta de data vencida , por exemplo.
Concordo. É igual o cara que, ao fazer o currículo no Word, usa BOLD em quase tudo, ressalta tudo e mais um pouco. No fim, o BOLD some, não ressalta nada.

Sobre ressaltar data vencida, eu uso o seguinte: uma opção no menu principal, chamada HOJE. O cliente entra nela e o software varre tudo o que é contas a pagar, contas a receber, aniversário, furos no fluxo de caixa, o que for, e mostra o que e onde a coisa tá pegando (ou vai pegar). É algo com um “/scannow”.

Levei essa idéia pro grupo de trabalho do novo sofware, virou um dos núcleos.

Por que? Porque software gerencial não é pra colecionar informação. Quem faz isso é o contador e o software dele. Software gerencial ajuda a gerenciar, mostra onde a coisa tá pegando, no conjunto.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem por Eolo »

ATENÇÃO: não é crítica, nem nada. É apenas constatação de um fato.
O programa mostra, no topo dele, o nome e versão.
A janela do Windows, no topo, faz o mesmo.
#1. Pra que repetir? Só pra confimar?

Mais: o programa mostra Versão 1.0, mas o Windows diz que é Versão 2.0.
#2. Quem tá falando a verdade?

Falando com franqueza (ou indo direto ao ponto que interessa): alguém já viu algum cliente checando o nome e/ou versão do programa que ele tá usando?

Ele clica 2x no atalho do Sigara e aí ele vai conferir se a janela que abriu é do Sigara mesmo?

Aí, se entrou, ele vai conferir se a versão bate com a mostrada pelo Windows?

Tem algo de estranho, tem não?
Anexos
Image1.jpg
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 »

Voltando ao tbrowse:

Uma coisa chata, presente no Windows e em muitos softwares é justamente a parte do "browse".
Se está fazendo o browse, é porque está querendo ver o conteúdo do browse, e não interessa nada mais.
Mesmo assim, o Windows e alguns softwares limitam isso a uma janelinha.


Sobre o título: o Windows 7 deixa o título mais claro, o que esconde um pouco isso.
titulo.png
Já visual, tem horas que esbarramos nas limitações da biblioteca, ou no conhecimento de como fazer.
Mas com certeza em visual fica mais interessante.
Mantenho a opção destes três estilos de menu, mas só uso o gráfico, apesar de no Windows XP não aparecer o texto. do botão
menu1.png
menu3.png
menu3.png (10.99 KiB) Exibido 1595 vezes
menu2.png
Nota: Não uso a barra de ferramentas, porque usando botão ele amplia/reduz junto com a tela. (recurso da lib)

Eu queria abolir o uso de janelas, usar apenas abas, mas depende de recurso que não existe pronto, e não sei implementar isso.
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 »

Pro browse de exemplo ficar mais limpo.
Não precisa dos codeblocks pra top/bottom/skip, se usar o padrão normal.

Código: Selecionar todos

#include "inkey.ch"

PROCEDURE Main

 LOCAL oTBrowse

 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 } } }
 FazBrowse( oTBrowse )
 CLOSE DATABASES
 RETURN

STATIC FUNCTION FazBrowse( oTBrowse, bFuncaoUsuario )

 LOCAL oBrowse, nCont, nKey

 oBrowse := tbrowsedb( 1, 1, MaxRow(), MaxCol() )
 oBrowse:HeadSep := Chr(196)
 oBrowse:FootSep := Chr(196)
 oBrowse:ColSep  := ""
 FOR nCont = 1 TO Len( oTBrowse )
   oBrowse:AddColumn( tbColumnNew( "|", { || "|" } ) )
   oBrowse:AddColumn( tbColumnNew( oTBrowse[ nCont, 1 ], oTBrowse[ nCont, 2 ] ) )
 NEXT
 oBrowse:RefreshAll()
 DO WHILE .T.
   DO WHILE .NOT. oBrowse:Stable()
    oBrowse:Stabilize()
   ENDDO
   nKey := Inkey(0)
   IF nKey == K_ESC
    EXIT
   ENDIF
   DO CASE
   CASE nKey == K_DOWN      ; oBrowse:Down()     ; LOOP
   CASE nKey == K_UP        ; oBrowse:Up()       ; LOOP
   CASE nKey == K_PGDN      ; oBrowse:PageDown() ; LOOP
   CASE nKey == K_PGUP      ; oBrowse:PageUp()   ; LOOP
   CASE nKey == K_CTRL_PGDN ; oBrowse:GoBottom() ; LOOP
   CASE nKey == K_CTRL_PGUP ; oBrowse:GoTop()    ; LOOP
   CASE nKey == K_HOME      ; oBrowse:GoTop()    ; LOOP
   CASE nKey == K_END       ; oBrowse:GoBottom() ; LOOP
   CASE nKey == K_RIGHT     ; oBrowse:Right()    ; LOOP
   CASE nKey == K_LEFT      ; oBrowse:Left()     ; LOOP
   CASE bFuncaoUsuario != NIL
    Eval( bFuncaoUsuario ) // codeblock
   ENDCASE
 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 »

Ao Eolo:

Achei interessante retirar os separadores, já adotei isso.
Também tinha imitação de scroll do windows, pra navegar com o mouse.
Faz tempo que uso o mouse wheel, e nem percebi que isso acima se tornou inútil, só poluindo a tela.

Durante o processo acabei até achando um bug no tbrowse, no alinhamento de colunas, mas acontece o mesmo em Clipper, então o bug vai continuar.

Uma coisa que ainda não mexi, é do tipo mensagem "Tecle <ENTER>, <ESC> sai".
Ao usar o recurso de falar a mensagem, a voz diz: tecle menor ENTER maior, menor ESC maior sai"
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/
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á!

Realmente a poluição visual atrapalha muito. Tem que ser equilibrado. Nas telas tipo DOS é mais difícil ainda, devido à falta de espaço. Usar cores é um bom recurso mas também requer equilíbrio.

Quanto ao TBrowse, no Harbour e xHarbour, aquele bloco de código usado para tratamento das teclas é dispensável. A classe já faz isto por si só através do método applyKey(), como mostra o exemplo abaixo, extraído do manual do xHarbour:

Código: Selecionar todos

// The example builds a simple TBrowse object for a database

   #include "TBrowse.ch"

   PROCEDURE Main
      LOCAL oTBrowse, aFields, cField, nKey

      USE Customer

      aFields := Array( FCount() )
      AEval( aFields, {|x,i| aFields[i] := FieldName(i) } )

      oTBrowse := TBrowseDB()

      WITH OBJECT oTBrowse
         FOR EACH cField IN aFields
            :addColumn( TBColumnNew( cField, FieldBlock( cField ) ) )
         NEXT
      END

      DO WHILE .T.
         oTBrowse:forceStable()
         nKey := Inkey(0)

         IF oTBrowse:applyKey( nKey ) == TBR_EXIT
            EXIT
         ENDIF
      ENDDO

      CLOSE Customer
   RETURN
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
EANDRIOLI
Usuário Nível 3
Usuário Nível 3
Mensagens: 109
Registrado em: 22 Jun 2007 18:31
Localização: Sorriso-MT

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem por EANDRIOLI »

É fácil adaptar o fonte acima, digamos, para mostrar somente alguns registros/campos do .DBF ?

Por exemplo, CODIGO, NOME, CPF, DATA.

Como ficaria ele?

Como ficaria com separadores de coluna, de cabeçalho de coluna e cor diferente na linha separadora de colunas?

ERASMO
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 »

Sobre o applykey:
Não vejo nada pronto sobre o que cada tecla faz.
(harbour\src\rtl\tbrowse.prg)

Código: Selecionar todos

METHOD applyKey( nKey ) CLASS TBrowse

   LOCAL nKeyStd := hb_keyStd( nKey )
   LOCAL bBlock

   IF ( bBlock := ::SetKey( nKey ) ) == NIL .AND. ;
      ( bBlock := ::SetKey( nKeyStd ) ) == NIL

      bBlock := ::SetKey( 0 )

      IF bBlock == NIL
         RETURN TBR_EXCEPTION
      ENDIF
   ENDIF

   RETURN Eval( bBlock, Self, nKeyStd )
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/
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á!

Note que, na entrada do método, é executado o código

Código: Selecionar todos

hb_keyStd( nKey )
Creio que seja nesta função, que pertence à lib padrão do Harbour. O fato é que funciona...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem por ANDRIL »

JoséQuintas escreveu:Não vejo nada pronto sobre o que cada tecla faz
Nunca usei isso, mais creio que tenha que setar a rotina de cada tecla acionada com SET KEY -1 TO sua_rotina1(); SET KEY -2 TO sua_rotina2() etc.
Depois dentro do Tbrowse usando oTBrowse:applyKey( -1 ), oTBrowse:applyKey( -2 )

Isso é apenas um "chute".
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
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 »

Olhei novamente.
Em ::ApplyKey() usa ::SetKey().

É até muito interessante.
Além de ::SetKey() conter a ação de teclas padrão, ainda permite configurar teclas adicionais.

Código: Selecionar todos

oTBrowse:SetKey( nKey, bCode )
Isso retira toda configuração de dentro do "do while".
Ao contrário de SetKey(), o método ::SetKey() é apenas interno ao tbrowse.
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
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Coluna separado para os CAMPOS de Cabeçalho em TBROWSE

Mensagem por janio »

Algumas vezes, fazemos sistemas NÃO para o nosso próprio gosto pessoal, mas para agradar e do jeito que o cliente quer ou necessita.

Outras tantas vezes, colocamos informações na tela para facilitar nossa própria vida! Dar suporte por telefone eh muito complicado.

Que versão vc ta usando?

Essa maquina ta usando ACBR ou a DLL?

O tef ta online?

Qual o nr de serie desse ECF?

Se não ta na tela, amigo, nenhum usuario sabe dar essas informações!

jogar tudo isso na tela, em algum lugar, facilita nossa vida!

Eu estou usando a BARRA DE STATUS para mostrar o maximo de configurações possíveis.
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder