LIB console imitando gráfico

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

LIB console imitando gráfico

Mensagem por JoséQuintas »

gtwvg.png
Linhas horizontais e verticais, e FRAME (este último não é citado nos controles do Windows).

E outro detalhe: aonde está "Frame Test", o contorno é frame, mas o texto é SAY. Tá parecendo o controle Edit.

Agora dá pra usar decimais, além de poder misturar coordenadas row/col com x/y.

Segundo o autor da GTWVG, não seria possível sem reescrever muita coisa.

https://groups.google.com/forum/#!topic ... c-XQEcRbW4

Parece que comecei a ultrapassar barreiras.
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

LIB console imitando gráfico

Mensagem por JoséQuintas »

O listbox "recheado": API Windows pura, mas em código fonte Harbour

Código: Selecionar todos

CREATE CLASS TstListbox INHERIT TstAny
   VAR ClassName           INIT   "LISTBOX"
   VAR objType             INIT   objTypeListBox
   VAR Style               INIT   WIN_WS_CHILD + WIN_WS_VISIBLE + WIN_WS_TABSTOP + WIN_WS_GROUP
   METHOD AddItem( cText ) INLINE ::SendMessage( LB_ADDSTRING, 0, cText )
   METHOD Clear()          INLINE ::SendMessage( LB_RESETCONTENT, 0, 0 )
   METHOD ListCount()      INLINE ::SendMessage( LB_GETCOUNT, 0, 0 )
   METHOD ListItem()       INLINE ::SendMessage( LB_GETCURSEL, 0, 0 ) + 1
   ENDCLASS
Pra quem não está acostumado com isso: INLINE é quando a função é tão pequena, que já indica "inline" na própria linha da declaração.
Tudo na base de "whatsapp".... rs

A parte de defiir cores, fontes, tamanho de janela, criação, redimensionamento, etc. já tem na janela principal.


Gostaria de ver comentários sobre tudo isso.
Não sobre o que eu fiz, mas sobre isso da LIB liberar recursos pra uso via PRG.
Talvez isso tenha dado uma nova visão sobre a GTWVG também, que em último caso, é um jeito de centralizar funções no Harbour oficial.
Lembrando que, uma vez que isso tudo é API do Windows, todas as LIBs devem usar desse jeito.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

LIB console imitando gráfico

Mensagem por asimoes »

Quintas,

Muito bom,

Eu trocaria a gtwvt pela gtwvg quando eu consegui dimensionar a tela do jeito que os meus sistema funcionam, ou seja, ocupar toda a área do desktop exceto a barra de tarefas, exemplificando:
Esse assunto já foi tratado aqui no fórum, mas teria que modificar o fonte c que trata o dimensionamento de tela.
Screen Shot 05-04-16 at 08.10 AM.PNG
►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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

LIB console imitando gráfico

Mensagem por asimoes »

Para exemplificar o meu post anterior:
HB_GtInfo( HB_GTI_MAXIMIZED, .T. )

Código: Selecionar todos

FUNCTION IniciaJanela()

PUBLIC nWIDTH, nHEIGHT

   cTituloJanela:="Teste com Arquivos"

   HB_gtInfo(HB_GTI_FONTNAME, "Lucida Console")
   HB_gtInfo(HB_GTI_ICONRES, "ICON_APP" ) //CLIENTE.RC
   HB_gtInfo(HB_GTI_WINTITLE, cTituloJanela)
   HB_gtInfo(HB_GTI_CLOSABLE, .F. )
   HB_gtInfo(HB_GTI_CLIPBOARDDATA )
   HB_gtInfo(HB_GTI_SELECTCOPY, .T. )
   HB_gtInfo(HB_GTI_MOUSESTATUS, 1 )
   HB_gtInfo(HB_GTI_ISGRAPHIC, .T. )
   HB_gtInfo(HB_GTI_STDERRCON, .T. )
   HB_gtInfo(HB_GTI_COMPATBUFFER, .T. ) 
   HB_gtInfo(HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
   HB_gtInfo( HB_GTI_SPEC, HB_GTS_SHOWWINDOW, SW_NORMAL )
   HB_GtInfo( HB_GTI_MAXIMIZED, .T. )
   nWIDTH :=hb_gtInfo( HB_GTI_SCREENWIDTH )
   nHEIGHT:=hb_gtInfo( HB_GTI_SCREENHEIGHT )
   nJanelaAsaPrev:=hwg_FindWindow(,cTituloJanela)
RETURN Nil

FUNCTION HB_GTSYS()
   REQUEST HB_GT_WVT_DEFAULT
   REQUEST HB_GT_WVT
   REQUEST HB_GT_WGU
   REQUEST HB_GT_WVG
RETURN Nil 
►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

LIB console imitando gráfico

Mensagem por JoséQuintas »

É a WVT que tem opção de espacejamento entre linhas?
Se for, melhor até se der pra juntar os dois mundos de uma vez.
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
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

LIB console imitando gráfico

Mensagem por ANDRIL »

asimoes escreveu:Eu trocaria a gtwvt pela gtwvg quando eu consegui dimensionar a tela do jeito que os meus sistema funcionam, ou seja, ocupar toda a área do desktop exceto a barra de tarefas
Tenta usar esse código.

Código: Selecionar todos

	HB_GtInfo( HB_GTI_RESIZABLE, .F. )

		screenWidth := HB_GTINFO( HB_GTI_DESKTOPWIDTH )
		screenHeight:= HB_GTINFO( HB_GTI_DESKTOPHEIGHT )   
		wvt_SetFont( "Lucida Console", Round(( screenHeight / MaxRow() ),0)-0.5, Round(( screenWidth / MaxCol() ),0), 0 )
		WVT_MAXIMIZE()

FUNCTION HB_GTSYS() 
 REQUEST HB_GT_WVG_DEFAULT
 REQUEST HB_GT_WVG
 REQUEST HB_GT_WGU
 REQUEST HB_GT_WVG
RETURN Nil 
Pode funcionar de pronto, ou se a janela ficar menor do que já era, tente alterar o tamanho da tela pelo Windows nas propriedades de vídeo, aumentando ou diminuindo o tamanho.

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

LIB console imitando gráfico

Mensagem por JoséQuintas »

Acho que encontrei algo.

Lembro que a GTWVG cobria todo desktop mas sobravam margens laterais, e fui eu quem pediu pra alterar.
Acho que foi esta alteração.
adjust.png
Prefiro do jeito que ficou.
Mas pelo que vejo, foi acrescentada opção de borda.
Teria que testar se a escolha de borda é pra deixar área livre, ou se é pra cobrir uma área a mais.

Acho que seria algo como: cada_margem = ( largura desktop - largura janela ) / 2
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

LIB console imitando gráfico

Mensagem por asimoes »

Quintas,

Como é que testa esse HB_GTI_BORDERSIZES ?
►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

LIB console imitando gráfico

Mensagem por JoséQuintas »

Deveria ser assim, mas não faz diferença.

Código: Selecionar todos

   SetMode( 25, 80 )
   CLS
   oMargin := hb_gtInfo( HB_GTI_BORDERSIZES )
   ? "atual"
   FOR EACH oElement IN oMargin
      ? oElement
      oElement *= 10
   NEXT
   ? "calculado"
   FOR EACH oElement in oMargin
      ? oElement
   NEXT
   hb_gtInfo( HB_GTI_BORDERSIZES, oMargin )
   oMargin := hb_gtInfo( HB_GTI_BORDERSIZES )
   ? "resultado"
   FOR EACH oElement IN oMargin
      ? oElement
   NEXT
Aliás, aqui nem o maximizar funciona na gtwvg.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

LIB console imitando gráfico

Mensagem por asimoes »

Eu consegui um resultado aproximado com esse código no meu notebook com resolução 1366 por 768:
Não sei se com resolução diferentes o resultado seja igual.
Isso só funciona com SetMode(25,80)

Código: Selecionar todos

hb_gtInfo(HB_GTI_ICONRES, "ICON_APP" )
hb_gtInfo(HB_GTI_WINTITLE, cTituloJanela)
hb_GtInfo( HB_GTI_RESIZABLE, .F. )
hb_gtInfo(HB_GTI_COMPATBUFFER, .F. ) 
hb_gtInfo(HB_GTI_CLOSABLE, .T. )
screenWidth := hb_GtInfo( HB_GTI_DESKTOPWIDTH )
screenHeight:= hb_GtInfo( HB_GTI_DESKTOPHEIGHT ) 
WVT_SetFont( "Lucida Console", Round(( screenHeight / MaxRow() ),0)-4, ( screenWidth / MaxCol() ), 0 )
hb_GtInfo( HB_GTI_MAXIMIZABLE )
►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

LIB console imitando gráfico

Mensagem por JoséQuintas »

Aqui o maximizar da GTVVG não está funcionando.
Em mais algum lugar acontece 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

LIB console imitando gráfico

Mensagem por JoséQuintas »

A propósito: ajuste o fonte pra ver se continua funcionando.
Row/Col começa em ZERO, então MaxRow() e MaxCol() retornam largura - 1
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

LIB console imitando gráfico

Mensagem por JoséQuintas »

Como eu já disse, não conheço linguagem C.

Mas me chamou a atenção isto no commctl.h, do msvc2010

Código: Selecionar todos

#define ListView_InsertItem(hwnd, pitem)   \
    (int)SNDMSG((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM *)(pitem))
Ou seja, mesmo no fonte C usando função, trata-se do sendmessage.

Cheguei nele pesquisando o listview.
Trata-se de uma grid, parecido com o tbrowse, mas pra qualquer coisa: texto, ícone, etc. com várias colunas.
Aqui não tem jeito, só com ajuda de quem conhece linguagem C, porque precisa uns tipos especiais de variáveis, talvez seja array.

Porque complicado?
Exemplos do listview:
listview1.png
listview2.jpg
E a estrutura pra quem conhece C e souber o equivalente em Harbour.

http://www.codeproject.com/Articles/289 ... er-Win-API
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

LIB console imitando gráfico

Mensagem por JoséQuintas »

Como o listview não funcionou, usei o espaço pra mostrar o tstText() com outros fontes.

Só lembrando:
Escolher cor e fonte vale pra qualquer controle.
Eu é que não estou usando no teste.
gtwvg.png
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

LIB console imitando gráfico

Mensagem por asimoes »

Listview com minigui
Screen Shot 05-05-16 at 07.59 AM.PNG
►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)
Responder