Página 6 de 8

LIB console imitando gráfico

Enviado: 01 Mai 2016 02:57
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.

LIB console imitando gráfico

Enviado: 03 Mai 2016 20:06
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.

LIB console imitando gráfico

Enviado: 04 Mai 2016 08:11
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

LIB console imitando gráfico

Enviado: 04 Mai 2016 08:19
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 

LIB console imitando gráfico

Enviado: 04 Mai 2016 09:41
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.

LIB console imitando gráfico

Enviado: 04 Mai 2016 10:51
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+

LIB console imitando gráfico

Enviado: 04 Mai 2016 11:37
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

LIB console imitando gráfico

Enviado: 04 Mai 2016 12:06
por asimoes
Quintas,

Como é que testa esse HB_GTI_BORDERSIZES ?

LIB console imitando gráfico

Enviado: 04 Mai 2016 12:45
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.

LIB console imitando gráfico

Enviado: 04 Mai 2016 12:53
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 )

LIB console imitando gráfico

Enviado: 04 Mai 2016 13:15
por JoséQuintas
Aqui o maximizar da GTVVG não está funcionando.
Em mais algum lugar acontece isso?

LIB console imitando gráfico

Enviado: 04 Mai 2016 13:17
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

LIB console imitando gráfico

Enviado: 04 Mai 2016 17:25
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

LIB console imitando gráfico

Enviado: 04 Mai 2016 23:16
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

LIB console imitando gráfico

Enviado: 05 Mai 2016 08:00
por asimoes
Listview com minigui
Screen Shot 05-05-16 at 07.59 AM.PNG