Clipper On Line • Ver Tópico - LIB console imitando gráfico

LIB console imitando gráfico

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

Moderador: Moderadores

 

LIB console imitando gráfico

Mensagempor JoséQuintas » 01 Mai 2016 02:57

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/harbour-users/xc-XQEcRbW4

Parece que comecei a ultrapassar barreiras.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 03 Mai 2016 20:06

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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor asimoes » 04 Mai 2016 08:11

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LIB console imitando gráfico

Mensagempor asimoes » 04 Mai 2016 08:19

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

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 04 Mai 2016 09:41

É 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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor ANDRIL » 04 Mai 2016 10:51

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.

   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 de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 04 Mai 2016 11:37

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor asimoes » 04 Mai 2016 12:06

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 04 Mai 2016 12:45

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

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor asimoes » 04 Mai 2016 12:53

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)
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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 04 Mai 2016 13:15

Aqui o maximizar da GTVVG não está funcionando.
Em mais algum lugar acontece isso?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 04 Mai 2016 13:17

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 04 Mai 2016 17:25

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

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

#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/2890/Using-ListView-control-under-Win-API
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 04 Mai 2016 23:16

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor asimoes » 05 Mai 2016 08:00

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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro