Página 1 de 3

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 03 Abr 2013 22:51
por Paulo Pereira
Ola
Estou no limite para passar do console para grafico
a questao é a seguinte..

1-Terei que mudar todos os fontes, para navegacao do menu, os gets, etc ??
teria como fazer essa transicao sem mudar fontes ? como ?

2-Coloquei essas diretivas

Código: Selecionar todos

 HB_GtInfo( HB_GTI_FONTNAME, "Lucida Console" ) 
HB_GtInfo( HB_GTI_ALTENTER, .t. )
HB_GtInfo( HB_GTI_CLOSABLE, .F. )
Set Eventmask to 1002  // *SET( _SET_EVENTMASK, INKEY_ALL ) 
e a tela ficou grafica, mas pequena(media)
se eu fizer um resize com o mouse, fica até legal, mas quando entrar de novo fica pequena..
Tem como gravar o tamanho que o usuario deixou ??Como sabem o TameDos era otimo, mas nao funciona se o sistema é compilado no harbour..

PS: Se fizer HB_GtInfo( HB_GTI_ISFULLSCREEN, .T. ) nao fica uma tela bonita...


3-Estando com o mouse ativo, nao tem como voltar para um menu anterior, apenas avançar...tem como .? Se eu pudesse disponibilizar
a navegacao no mouse e tela cheia, já seria otimo. uso muito o browse com funcoes
F2-Inclui F3-Altera, etc como clicar sobre esse texto e chamar a funcao ??

Essa questao da tela grande e mouse é o meu calcanhar de Aquiles(atual)
Obrigado

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 04 Abr 2013 09:41
por Duda 'Sgluber'
Paulo,

sou iniciante em Harbour, mas talvez possa ajudar um pouco com esta msg. Seguindo a numeração das suas perguntas:

1 - Apesar de ter me encantado recentemente com as possibilidades q o padrão gráfico oferece, tenho sistemas escritos há bastante tempo q não me permitem, agora, uma mudança de padrão. Digo isto pq até onde pesquisei, essa mudança não é nada simples ou direta, ou seja: se vc decide mudar antigos sistemas escritos em modo console para o modo gráfico, vai ter de arregaçar bastante as mangas. O q eu estou fazendo, por enquanto, é utilizar as libs q oferecem novos recursos para modo console (acho q é o mesmo q vc está fazendo, não), como se fosse uma "prévia" do q pretendo futuramente.

Se alguém q já passou por esta situação tiver sugestões de como encurtar a transição modo console > modo gráfico, eu tb agradeço por todas as informações valiosas q possa oferecer;

2 - Comecei a usar

Código: Selecionar todos

hb_gtinfo (HB_GTI_MAXIMIZED,  .t.)
... e fiquei satisfeito. Já testou esta opção?

3 - Ainda não "foquei" no uso do mouse... fico devendo aqui! :-)

Abs!

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 04 Abr 2013 11:26
por JoséQuintas
Vai passar para modo gráfico usando qual gt?
Sem saber a gt fica difícil.

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 04 Abr 2013 11:57
por Duda 'Sgluber'
JoséQuintas escreveu:Vai passar para modo gráfico usando qual gt?
Sem saber a gt fica difícil.
Se a pergunta foi pra mim, ainda não decidi.

E como são meus primeiros passos nesta direção, aceito sugestões.

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 04 Abr 2013 14:38
por Paulo Pereira
GT WVT , mas como estou começando, preciso uma que seja facil..
talvez vc sugira outra..

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 04 Abr 2013 15:18
por JoséQuintas
gtwvg é praticamente a gtwvt com algo a mais.
Estou começando a gostar dela.

Eu alterei meus fontes sem pensar no modo gráfico.
Agora altero apenas um fonte pra alterar todo visual.
Eu diria que estou ainda começando no uso da gtwvg, mas quando coloquei ícones neste único fonte, já alterei mais de 80 telas de uma vez.
É um começo que ao invés de gatinhar dá pulos... rs
E já permite ver melhor o resultado prático.

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 04 Abr 2013 17:15
por Paulo Pereira
Vc poderia disponibiliar um fonte ? e como vc compila ? o que vc acrescenta no programa principal ...
Uso o hbmk2 com arquivo .HBP

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 04 Abr 2013 17:45
por JoséQuintas
Vou ter que isolar do resto do sistema pra poder ser útil pra você.
Como está usando harbour 3.2, é só acrescentar gtwvg.hbc no arquivo hbp
Não sei se já melhoraram, mas pode ser necessário acrescentar a pasta contrib\gtwvg em SET INCLUDE=
A pasta contrib\gtwvg\tests tem exemplos, mostra bastante coisa mas achei complicados.

Por hora o que uso pra restaurar a configuração de tela do usuário, no registro do Windows: (necessita hbwin -lhbwin)

Código: Selecionar todos

#include "hbgtinfo.ch"
FUNCTION GtSetupFonte( lSalva )
   LOCAL cFontSize, cFontWidth, cFontWeight, cRootKey
   
   SetMode( 40, 120 )
   lSalva := iif( lSalva == NIL, .f., lSalva )
   IF HB_GtInfo( HB_GTI_FONTSIZE ) == NIL // Caso seja console
      RETURN NIL
   ENDIF
   // HKCU=HKEY_CURRENT_USER
   cRootKey := "HKCU\Software\JPA Tecnologia\"
   IF lSalva
      Win_RegWrite( cRootKey + "FontSize", LTrim( Str( HB_GtInfo( HB_GTI_FONTSIZE ) ) ) )
      Win_RegWrite( cRootKey + "FontWidth", LTrim( Str( HB_GtInfo( HB_GTI_FONTWIDTH ) ) ) )
      Win_RegWrite( cRootKey + "FontWeight", LTrim( Str( HB_GtInfo( HB_GTI_FONTWEIGHT ) ) ) )
   ELSE
      hb_GtInfo( HB_GTI_FONTNAME, "Lucida Console" )
      IF Win_RegRead( cRootKey + "FontSize" ) != NIL
         cFontSize   := Win_RegRead( cRootKey + "FontSize" )
         cFontWidth  := Win_RegRead( cRootKey + "FontWidth" )
         cFontWeight := Win_RegRead( cRootKey + "FontWeight" )
         IF Val( cFontSize ) > 0 .AND. Val( cFontWidth ) > 0 .AND. Val( cFontWeight ) > 0
            hb_gtInfo( HB_GTI_FONTSIZE, Val( cFontSize ) )
            hb_gtInfo( HB_GTI_FONTWIDTH, Val( cFontWidth ) )
            hb_gtInfo( HB_GTI_FONTWEIGHT, Val( cFontWeight ) )
         ENDIF
      ENDIF
   ENDIF
   RETURN NIL   

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 04 Abr 2013 18:57
por JoséQuintas
um exemplo simples de botões, só colocar o nome do seu ícone (ou ícones)
Importante: Uma das primeiras coisas do programa é CLS, senão a gtwvg não tem tela pra trabalhar.

Código: Selecionar todos

#include "wvgparts.ch"
PROCEDURE Main
   LOCAL nCont, oThisButton, nCol
   SetMode( 24, 80 )
   CLS
   nCol := 1
   FOR nCont = 1 TO 14
      oThisButton := WvgPushButton():New()                              // Prepara o botao
      oThisButton:PointerFocus := .f.                                         // nao testei se precisa (nao pensei em testar sem isso)
      oThisButton:border := .f.                                                  // nao testei se precisa (nao pensei em testar sem isso)
      oThisButton:Caption := "seuicone.ico"                                // arquivo ou texto
      oThisButton:Create( , , { -1, -nCol }, { -3, -5 } )                  // Row(), Col(), e tamanhos
     oThisButton:ToolTip := "texto"                                            // tooltip
      oThisButton;Activate := { || NIL }                                      // aqui o code block que vai executar ao clicar
      @ 5, nCol+1 SAY Str( nCont, 2 )
      nCol += 5
   NEXT
   Inkey(0)
   RETURN

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 05 Abr 2013 10:19
por Duda 'Sgluber'
José Quintas,

obrigado pela sugestão e pelos exemplos. Por enquanto só olhei por cima, depois vou dar uma boa olhada.

Agora... lembro q 1 mês atrás, depois de ler algumas msgs aqui da nossa comunidade falando da gtwvg, resolvi compilar aquele "demowvg.prg" da pasta "contrib" do Harbour e realmente fiquei impressionado com as possibilidades!

Juntando a excelente impressão q eu tive com aquele "demo" com sua sugestão de agora, acho q vou mesmo investir na gtwvg. :-)

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 05 Abr 2013 10:44
por Pablo César
Desculpem amigos, sei que eu posso ofender com a minha sinceridade e que muitas vezes devemos silenciar (não estou totalmente certo de que sempre tenha que ser assim), mas o meu intuito é ajudar. E acho que ficar nas telas modo console é ficar sofrendo... nada melhor que programar em modo gráfico mesmo é outra forma de programar. Abram suas mentes e estejam preparados para o futuro próximo. Com isto, não estou chamando de retrógrados nem nada disso, apenas para que mantenham a suas mentes abertas. Claro que é extremamente positivo sempre avaliar todas as situações, mas foquem em programação GUI que estarão a um passo de outras ferramentas de programação muito mais poderosas. Você são colegas com grandes conhecimentos, devo respeitar isso, apenas me desculpem por influenciá-los mas espero que seja da melhor maneira. :)Pos

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 05 Abr 2013 11:50
por Duda 'Sgluber'
Pablo,

tenho respeito e admiração por suas opiniões e msgs. Muito antes de me cadastrar e começar a participar ativamente desta rica comunidade, li muita coisa postada por vc, e muito do q vc escreveu foi muito útil... obrigado! :-)

Meu objetivo futuro realmente é o ambiente gráfico, mas da noite para o dia não dá pra fazer a migração de sistemas escritos há tempos em modo console, funcionando a "pleno vapor", com 9 ou 10 mil linhas, concorda? :-)

Esta é a minha realidade atual. Com ela, preciso pensar um pouco diferente... ao menos por enquanto! ;-)

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 05 Abr 2013 12:31
por Paulo Pereira
Faço minhas, as palavras do Duda e do Pablo. Sei que tem que ser Grafico, estou perdendo clientes por nao ser..e provalmente a produtividade será maior.. perdesse muito tempo fazendo telas,que nao cabem mais nos 80x25 e inventando a roda..
*
Mas essas 10.000 linhas que ele falou, sao apenas um PRG de um dos sistemas que tenho.. que rodam 100%
Ai a gente, tenta colocar um mouse, uma tela cheia, usa um Dosprint para imprimir e assim vai..
Agradeco ao Jose Quintas vou testar..

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 05 Abr 2013 15:09
por JoséQuintas
Pode ser interessante fazer como eu fiz, vamos por partes:

1) Mouse - Uso desde o tempo do Clipper. Isolei a rotina da Superlib pra mouse na época. No Harbour mais fácil
2) Tela 24x80 - O console limita, mas deixa usar 24x80, 28x80, 43x80, 50x80 (estas duas últimas já não me recordo mais) basta ajustar nas propriedades do atalho
3) Impressão - Se a impressora é USB mas tem o conjunto de caracteres, ainda dá pra usar pelo Clipper. Num primeiro momento eu usava uma rotina em VB6 pra preview, e permitia transformar o relatório em PDF. Num belo dia converti a rotina do VB para Clipper, e passei a gerar direto em PDF do próprio Clipper.

No Harbour:
1) Mouse mais fácil
2) Pode-se usar qualquer configuração de tela: 24x80, 25x81, 30x100. Atualmente uso 40 x 120, já pensando nos widescreen
3) Impressão - Até hoje continuo usando a mesma rotina que fiz em Clipper. Qualquer dia altero pra harupdf só pra compactar o pdf
Tenho clientes do sistema de contabilidade que ainda usam matricial e não trocam. Tinha tirado isso, mas tive que retornar

Modo gráfico:
Ainda não existe um ambiente decente em Harbour pra desenvolvimento visual.
Querendo ou não, por melhor que sejam as LIBs gráficas do Harbour, TODAS sem exceção, TODAS acabam com bug.
Cada vez que eu testei modo gráfico em Harbour, me sentia arrependido de ter parado com VB6.
Alterar tudo pra minigui ou outra, com essa sensação, de jeito nenhum.
Minha base é um pessoal que usa minigui a fundo, mexem com linguagem C e Delphi, tem um sistema com funções de deixar qualquer um de boca aberta, e mostram bugs básicos de minigui que nunca foram resolvidos. A esperança deles, pra não abandonar Harbour, é que a hbqt funcione.

Passei pra GTWVG apenas por passar. Já tinha desistido de gráficos em Harbour.
Achei muito legal usar classes, e achei ótima a checagem /es2 /w3 de tolerância zero que já existia no Clipper, mas só percebi a vantagem no Harbour.
Comecei a modificar meus fontes, pra tolerância zero, pra simplificar, e até pra facilitar abandonar o Harbour.
Nos relatórios, acabei deixando auto-ajustáveis, porque a configuração de linhas e colunas é diferente se usar PDF retrato, PDF paisagem ou matricial. Preferi deixá-los no padrão 132 colunas, mas se centralizam ou alteram o fonte conforme o tipo de saída.
E comecei a trabalhar nas telas pra permitir trocar o layout a qualquer momento que queira.
Acabei fazendo uma nova tentativa de gráficos com gtwvg e deu certo.
No momento meu sistema está com a opção de usar ícones ou usar o modo texto normal, e as telas se configuram automaticamente.
Ainda estou escolhendo ícones pra algumas opções.

Tem que se levar em conta que sistemas não são iguais, códigos fontes não são iguais, programadores não são iguais, o resultado pretendido por cada um não é igual, e o tempo/capacidade de aprendizado de cada um não é igual, e tem coisas que dependem da base de dados utilizada.

Uso gtwvg e posso escolher em que parte trabalhar.
Não tenho versão teste, só versão de uso.
Usar ícones no sistema, por enquanto só aparece na minha senha.
Na semana passada apresentei a alguns clientes, e usava arquivos de ícones em disco.
Nesta semana já uso ícones em resource.
Durante o uso pra valer, senti falta de comandos que usava sem ícones... e fui acrescentando.

Se fosse minigui ou outra... ainda estaria quebrando a cabeça pra funcionar.
Com gtwvg, fiz sem querer.

O resultado é bom e maravilhoso?
Depende do ponto de vista, mas sinceramente não sei dizer.
Para o gerente que gosta de ícones, ele vai ver os ícones, vai poder clicar a vontade.
Para o usuário, pode usar ícones, ou pgup, pgdn, home, end, insert, delete, com numérico ligado ou desligado, etc.

Muito trabalho na programação?
Sou totalmente contra isso. Tem que ser fácil para o usuário sem complicar pro programador.

Como o sistema está hoje:
- Gera PDF
- Faz uso de DBF e MySQL
- Conversa com Sefaz pra cadastros, NFE, CTE, CCE
- Usa meu webservice de CEP
- Tem ícones
- E ainda tenho algumas coisinhas em VB6, que algum dia talvez passe pro Harbour.

Ainda não descartei a opção de abandonar o Harbour e usar o péssimo VB.NET, que dá muito trabalho para o programador mas tem uma parte gráfica que funciona muito bem.

Tela Cheia/Modo Console/Grafico/Mouse

Enviado: 05 Abr 2013 15:24
por JoséQuintas
Curiosidade:
Pra separar o programa em várias janelas:
O jeito normal é quebrando a cabeça pra modificar os fontes
O jeito antigo que sempre funciona, é criar um EXE pra cada opção.
E um jeito intermediário é colocar no EXE a opção /módulo, pelo menos usa um só EXE.

De quebra, as duas últimas opções ainda podem usar núcleo separado.

É só um comentário, mas mostra que um jeito antigo pode se tornar mais moderno. (o uso de vários núcleos e janelas totalmente independentes).