Página 1 de 2

Mostrar informação no rodapé do form

Enviado: 24 Mar 2018 11:43
por porter
Olá pessoal,
Com esse comando, consigo mostrar informações no topo da tela,
qual comando devo usar para mostrar no rodapé, tem como ?
HARBOUR 3.2.0(dev), GTWVG

Código: Selecionar todos

HB_GtInfo( HB_GTI_WINTITLE, "Usu rio: " + nomeusuario)

Mostrar informação no rodapé do form

Enviado: 24 Mar 2018 14:54
por JoséQuintas
Correção: com esse comando consegue alterar o título da janela.

Para o rodapé, eu uso a opção 1, por enquanto, mas depende do que exatamente está pensando em fazer.

Opção 1: A Tradicional de console: @ MawRow(), 0 SAY ""

Opção 2: a barra de status

Opção 3: usar um controle GUI, que vai sempre acompanhar a janela

Opção 4: algum wvt* que fique sendo repintado em wvt_Paint()

Mostrar informação no rodapé do form

Enviado: 24 Mar 2018 18:03
por asimoes
Quintas,

Tem algum exemplo de statusbar usando a gtwvg ?

Mostrar informação no rodapé do form

Enviado: 24 Mar 2018 18:48
por JoséQuintas
asimoes escreveu:Tem algum exemplo de statusbar usando a gtwvg ?
Não entendi direito o uso. Se eu fosse usar, pegaria um de meus controles pra facilitar.

Por exemplo:
criando um "textbox" na linha MaxRow(), ele permaneceria sempre nessa posição, igual um rodapé, ou igual a barra de status.
para barra com divisões, seriam 2 ou mais textbox, por exemplo um na MaxRow() até a metade, e outro em MaxRow() até o final.
Mais fácil do que se aprofundar na barra de status.

Tem coisas que não sei se compensa: por exemplo a barra de status.
Vai usar pra que? pra colocar texto? Então coloca igual console que é mais prático... E o tamanho do texto já vai acompanhar o redimensionamento de janela.
Talvez compense fazer apenas o traço separador como GUI, já que a cor de fundo pode ser obtida por SetColor().

Mostrar informação no rodapé do form

Enviado: 24 Mar 2018 20:00
por Toledo
Amigos, segue um exemplo de StatusBar:

Código: Selecionar todos

FUNCTION StatusBar()
LOCAL oStatusBar, oPanel
   oStatusBar := wvgStatusBar():New( wvgSetAppWindow() ):Create( , , , , , .T. )
   oPanel := oStatusBar:GetItem(1)
   oPanel:Caption := "Forum PCToledo - https://pctoledo.org/forum"
   oPanel1 := oStatusBar:addItem()
   oPanel1:caption := "Demo StatusBar"
   oPanel2 := oStatusBar:addItem()
   oPanel2:caption := "Data: "+DTOC(Date())
RETURN NIL
Abraços

Mostrar informação no rodapé do form

Enviado: 24 Mar 2018 22:27
por JoséQuintas
Legal, funcionou.
status.png
Mas conforme eu falei:
Será que compensa isso tudo só pra ter um texto?

Mostrar informação no rodapé do form

Enviado: 24 Mar 2018 22:37
por JoséQuintas
Um exemplo, usando os controles que "inventei" está aqui.
Usei o que chamei de wvgTstText(). Tst é pra indicar que apesar de funcionar, considero em fase de teste ainda.

https://pctoledo.org/forum/viewto ... 66#p122467

Mostrar informação no rodapé do form

Enviado: 26 Mar 2018 08:57
por porter
Obrigado a todos, deu certo o exemplo do Toledo.

Mostrar informação no rodapé do form

Enviado: 26 Mar 2018 11:39
por porter
Depois de StatusBar criado, tem como em algum momento desabilitar,
dessa forma não da certo.
oStatusBar := wvgStatusBar():New( wvgSetAppWindow() ):Create( , , , , , .F. )

Código: Selecionar todos

FUNCTION StatusBar()
 	LOCAL oStatusBar, oPanel
	oStatusBar := wvgStatusBar():New( wvgSetAppWindow() ):Create( , , , , , .T. )
	oPanel := oStatusBar:GetItem(1)
 	oPanel:Caption := "Forum PCToledo - https://pctoledo.org/forum"
 	oPanel1 := oStatusBar:addItem()
 	oPanel1:caption := "Demo StatusBar"
 	oPanel2 := oStatusBar:addItem()
  	oPanel2:caption := "Data: "+DTOC(Date())
	RETURN NIL 

Mostrar informação no rodapé do form

Enviado: 26 Mar 2018 12:00
por asimoes
Tenta:

oStatusBar:Destroy()

Mostrar informação no rodapé do form

Enviado: 26 Mar 2018 12:20
por JoséQuintas
porter escreveu:Depois de StatusBar criado, tem como em algum momento desabilitar,dessa forma não da certo.oStatusBar := wvgStatusBar():New( wvgSetAppWindow() ):Create( , , , , , .F. )
De que forma? Isso que descreveu é pra criar.

Acho esquisito querer desabilitar, em todo caso, provavelmente o Hide()

Código: Selecionar todos

oWvgStatus:Hide()
oWvgStatus:Show()
oWvgStatus:Destroy()

Mostrar informação no rodapé do form

Enviado: 26 Mar 2018 12:29
por JoséQuintas
Aproveitando.....

Como geralmente em GUI todos os controles são janelas.... é comum em qualquer LIB GUI que exista um fonte de janela base pra tudo.

O fonte da statusbar fica em statbar.prg

Código: Selecionar todos

CREATE CLASS WvgStatusBar INHERIT WvgWindow /* WvgActiveXControl */
Ele recebe por herança (INHERIT)... a classe WvgWindow, que é pra janela.

A classe wvgWindow está em wnd.prg
Lá vai encontrar os métodos Hide(), Show(), Enable(), Disable(), Destroy(), etc.

Como não tem manual disso, então só resta olhar os fontes pra ver o que há de disponível.
Esse INHERIT, herança, significa que tudo que está na janela já fica disponível pra todos os controles (que são... janelas).
Ao esconder a janela, esconde o controle que está na janela, no caso a wvgStatusbar()

É bom lembrar disso: janela sobre janela
Se statusbar é uma janela... precisa existir uma função em statusbar, ou na janela da statusbar.
E por usar herança, tudo disponível pra janela está disponível pra statusbar.

Mostrar informação no rodapé do form

Enviado: 27 Mar 2018 15:18
por porter
Depois de StatusBar criado, quando entro em um cadastro por exemplo e expando a Tela,
o StatusBar desaparece, se tentar criar novamente, da o seguinte erro:

Error Base/1132 Erro de limite: acesso de array Arguments: ( [ 1] = Type: A Val: {Array of 0 Items} [2] = Type: N Val: 1)


Como posso solucionar esse problema de não apagar o StatusBar quando expando a Tela, e
se tentar criar novamente o StatusBar, não dar erro ?

Código: Selecionar todos

StatusBar() // Cria o StatusBar
CADFOR()   // Entro no cadastro
StatusBar() // aqui da o erro.    


//cadfor.prg
FUNCTION CADFOR
ExpandirTela(25,80)
RETURN

FUNCTION ExpandirTela(linhas,colunas)
Hb_gtReload( "WVG" )
SETMODE(linhas, colunas)
SETCOLOR("W/B, N/W,,,W+/G+B")
screenWidth := HB_GTINFO( HB_GTI_DESKTOPWIDTH  )
screenHeight:= HB_GTINFO( HB_GTI_DESKTOPHEIGHT )
wvt_SetFont( "courier new"   , Round(( screenHeight / MaxRow() ),0)-4, Round(( screenWidth / MaxCol() ),0), 0 )
WVT_MAXIMIZE()
HB_GtInfo( HB_GTI_RESIZABLE, .F. )
HB_GtInfo( HB_GTI_WINTITLE, "Usu rio: " + nomeusuario)  // APARECE Nome do usuario no topo da tela		
RETURN

Mostrar informação no rodapé do form

Enviado: 27 Mar 2018 16:11
por JoséQuintas

Código: Selecionar todos

FUNCTION ExpandirTela(linhas,colunas)
Hb_gtReload( "WVG" )
Isso não expande janela. Isso cria uma NOVA janela.

Mostrar informação no rodapé do form

Enviado: 27 Mar 2018 16:21
por JoséQuintas
Usando hb_gtReload() está criando uma nova janela.
Pra usar mais de uma janela desse jeito, vai precisar ficar transferindo o controle entre elas com hb_gtSelect().
No DEMOWVG isso é feito, se não me engano, com uma função SetGt() que está no demo.

O que aconteceu é que criou uma janela nova.
A janela nova não tem statusbar.
Apesar de criar nova janela, o foco do aplicativo continua na anterior.
Por isso, a criação de statusbar está tentando criar na anterior, que já tem, e por isso deu erro.