Clipper On Line • Ver Tópico - Mostrar informação no rodapé do form

Mostrar informação no rodapé do form

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

Moderador: Moderadores

 

Mostrar informação no rodapé do form

Mensagempor porter » 28 Mar 2018 09:44

Olá JoseQuintas, obrigado por responder,
Encontrei os comandos no DEMOWVG, mas não estou conseguindo entender, em qual momento usá-los,
tentei antes de abrir um cadastro com o pGT := SetGT( 1, hb_gtSelect() ) e SetGT( 1, pGT ) ao fechar e
também antes de criar uma tela e fechar, tentei também antes de criar o StatusBar e depois de criado o StatusBar, mas não está dando certo,
o StatusBar continua sumindo sempre que expando a tela.

Rotinas que encontrei no DEMOWVG
pGT := SetGT( 1, hb_gtSelect() )  <--- Em que momento usar
SetGT( 1, pGT )                           <--- Em que momento usar

FUNCTION SetGT( nIndex, pGT )
    LOCAL oldGT
    STATIC s_pGT_ := { NIL, NIL, NIL }
    oldGT := s_pGT_[ nIndex ]
    IF PCount() == 2
       s_pGT_[ nIndex ] := pGT
    ENDIF
    RETURN oldGT


Tentei fazer assim:
FUNCTION ExpandirTela(linhas,colunas)
        pGT := SetGT( 1, hb_gtSelect() )
        Hb_gtReload( "WVG" )   // CRIA UMA NOVA JANELA
     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      
   SetGT( 1, pGT )
     RETURN


e assim também
FUNCTION StatusBar
LOCAL oStatusBar, oPanel, pGT
pGT := SetGT( 1, hb_gtSelect() )
oStatusBar := wvgStatusBar():New( wvgSetAppWindow() ):Create( , , , , , .T. )
oPanel := oStatusBar:GetItem(1)
oPanel:Caption := "[F2] HP  [F3] NF  [F5] MP-4200"
oPanel1 := oStatusBar:addItem()
oPanel1:caption := wpa_cx + " " + NetName() + " 26D03"
oPanel2 := oStatusBar:addItem()
oPanel2:caption := "Data: "+DTOC(Date())
SetGT( 1, pGT )
RETURN NIL 
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Mostrar informação no rodapé do form

Mensagempor JoséQuintas » 28 Mar 2018 10:29

porter escreveu:o StatusBar continua sumindo sempre que expando a tela.


Novamente:
Não está expandindo, está criando nova janela.
A Status não está sumindo, está na outra janela.

Precisa decidir:
se quer criar nova janela, wvgCrt() é pra isso.
Se quer expandir a janela, não tem que usar hb_gtReload()

Qualquer outra coisa vai precisar criar rotinas especiais, usando hb_gtSelect() e outras coisas mais.
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: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mostrar informação no rodapé do form

Mensagempor JoséQuintas » 28 Mar 2018 11:41

Vixe....
Fiz testes aqui, alterar tamanho de janela da GTWVG parece ser impossível, a janela fica doidinha.

Parece que meu modo de uso é somente meu, e deu certo pra mim.
Qualquer outro modo é fazer testes, pra ver se funciona, e pra ver se vale a pena.

#include "hbgtinfo.ch"
#include "inkey.ch"

FUNCTION Main()

   LOCAL nOpc := 0, oStatusbar

   SetMode( 25, 80 )
   CLS
   oStatusbar := Statusbar()
   DO WHILE .T.
      wvgSetAppWindow():InvalidateRect()
      wvgSetAppWindow():Refresh()
      CLS
      @ 5, 0
      @ Row() + 1, 10 PROMPT "1 - Mostra Statusbar"
      @ Row() + 1, 10 PROMPT "2 - Esconde Statusbar"
      @ Row() + 1, 10 PROMPT "3 - Janela 40 x 100"
      @ Row() + 1, 10 PROMPT "4 - Janela 25 x 80"
      @ Row() + 1, 10 PROMPT "5 - Maximizar"
      @ Row() + 1, 10 PROMPT "6 - Sair"
      MENU TO nOpc

      DO CASE
      CASE nOpc == 6 .OR. LastKey() == K_ESC ; EXIT
      CASE nOpc == 1 ; oStatusbar:Show()
      CASE nOpc == 2 ; oStatusbar:Hide()
      CASE nOpc == 3 ; SetMode( 40, 100 ) //; oStatusbar:Show()
      CASE nOpc == 4 ; SetMode( 25, 80 ) // ; oStatusbar:Show()
      CASE nOpc == 5 ; Maximizar()
      ENDCASE
   ENDDO

   RETURN NIL

FUNCTION StatusBar

   LOCAL oStatusBar, oPanel, oPanel1, oPanel2

   oStatusBar := wvgStatusBar():New( wvgSetAppWindow() ):Create( , , , , , .T. )
   oPanel := oStatusBar:GetItem(1)
   oPanel:Caption := "[F2] HP [F3] NF [F5] MP-4200"
   oPanel1 := oStatusBar:addItem()
   oPanel1:caption := "Teste 26D03"
   oPanel2 := oStatusBar:addItem()
   oPanel2:caption := "Data: " + DTOC( Date() )

   RETURN oStatusbar

FUNCTION Maximizar()

   LOCAL nWidth, nHeight

   nWidth  := HB_GTINFO( HB_GTI_DESKTOPWIDTH )
   nHeight := HB_GTINFO( HB_GTI_DESKTOPHEIGHT )
   wvt_SetFont( "courier new" , Round( ( nHeight / MaxRow() ),0)-4, Round(( nWidth / MaxCol() ),0), 0 )
   WVT_MAXIMIZE()
   HB_GtInfo( HB_GTI_RESIZABLE, .F. )
   hb_gtInfo( HB_GTI_WINTITLE, "Teste" )

  RETURN NIL


Nota: Ao redimensionar janela, a barra de status continua na posição anterior, o que é ruim.

wvg.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: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mostrar informação no rodapé do form

Mensagempor JoséQuintas » 28 Mar 2018 12:22

Parece brincadeira mas... não sei usar GTWVG do jeito normal.
Só fazendo testes mesmo.

Note que parece que a statusbar sumiu, mas na verdade é outra janela.
Peça a opção 2 algumas vezes e depois mova as janelas.
Como é criada uma encima da outra, parece uma só.
E a Main() é diferente, acaba sumindo.

#include "hbgtinfo.ch"
#include "inkey.ch"

FUNCTION Main()

   LOCAL nOpc := 0

   SetMode( 25, 80 )
   CLS
   Statusbar()
   DO WHILE .T.
      CLS
      @ 5, 0
      @ Row() + 1, 10 PROMPT "Abre janela 2"
      @ Row() + 1, 10 PROMPT "Sair"
      MENU TO nOpc

      DO CASE
      CASE nOpc == 2 .OR. LastKey() == K_ESC ; EXIT
      CASE nOpc == 1 ; NovaJanela()
      ENDCASE
   ENDDO

   RETURN NIL

FUNCTION StatusBar

   LOCAL oStatusBar, oPanel, oPanel1, oPanel2

   oStatusBar := wvgStatusBar():New()
   oStatusbar:Create( , , , , , .T. )
   oPanel := oStatusBar:GetItem(1)
   oPanel:Caption := "[F2] HP [F3] NF [F5] MP-4200"
   oPanel1 := oStatusBar:addItem()
   oPanel1:caption := "Teste 26D03"
   oPanel2 := oStatusBar:addItem()
   oPanel2:caption := "Data: " + DTOC( Date() )

   RETURN oStatusbar

FUNCTION NovaJanela()

   LOCAL oCrt

   oCrt := wvgCrt():New()
   oCrt:Create( , , { 1, 1 }, { 25, 80 } )
   @ 2, 0 SAY "teste"
   Inkey(0)

   RETURN NIL


wvg.png


Infelizmente é ir fazendo testes e tentando descobrir.
Aqui sempre usei com multithread e janela Main() escondida.
Definitivamente, inventei meu jeito de usar GTWVG, e não percebi que é diferente da GTWVG normal.
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: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mostrar informação no rodapé do form

Mensagempor JoséQuintas » 28 Mar 2018 15:58

Uma forma resumida do jeito que eu uso, mas precisa compilar usando multithread -mt
Lembrando que multithread tem necessidades especiais, aqui é só um exemplo básico.
Execute e brinque com cada janela aberta.

#include "hbgtinfo.ch"
#include "inkey.ch"

FUNCTION Main()

   hb_ThreadStart( { || tela1() } )
   hb_ThreadStart( { || tela2() } )
   hb_ThreadStart( { || tela3() } )
   hb_ThreadWaitForAll()

   RETURN NIL

FUNCTION Tela1()

   LOCAL mTela1 := Space(10), GetList := {}

   hb_gtReload( "WVG" )
   SetMode( 35, 85 )
   CLS
   @ 1, 0 SAY "Tela1" GET mTela1
   READ

   RETURN NIL

FUNCTION Tela2()

   LOCAL mTela2 := Space(10), GetList := {}

   hb_gtReload( "WVG" )
   SetMode( 30, 80 )
   CLS
   @ 1, 0 SAY "Tela2" GET mTela2
   READ

   RETURN NIL


wvg.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: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mostrar informação no rodapé do form

Mensagempor JoséQuintas » 29 Mar 2018 17:48

Veja se ajuda:

A Statusbar() dependeria de uma janela DIALOG pra ser atualizada, não serve a janela comum da GTWVG, teria que usar como GUI.
Mas temos o pushbutton, não é quase a mesma coisa?

button.png


#include "hbgtinfo.ch"
#include "inkey.ch"

FUNCTION Main()

   hb_ThreadStart( { || tela1() } )
   hb_ThreadStart( { || tela2() } )
   hb_ThreadStart( { || tela3() } )
   hb_ThreadWaitForAll()

   RETURN NIL

FUNCTION Tela1()

   LOCAL mTela1 := Space(10), GetList := {}

   hb_gtReload( "WVG" )
   SetMode( 35, 85 )
   CLS
   Statusbar2()
   @ 1, 0 SAY "Tela1" GET mTela1
   READ

   RETURN NIL

FUNCTION Tela2()

   LOCAL mTela2 := Space(10), GetList := {}

   hb_gtReload( "WVG" )
   SetMode( 30, 80 )
   CLS
   Statusbar2()
   @ 1, 0 SAY "Tela2" GET mTela2
   READ

   RETURN NIL

FUNCTION Tela3()

   LOCAL mTela3 := Space(10), GetList := {}

   hb_gtReload( "WVG" )
   SetMode( 25, 75 )
   CLS
   Statusbar2()
   @ 1, 0 SAY "Tela3" GET mTela3
   READ

   RETURN NIL

STATIC FUNCTION Statusbar2()

   LOCAL oThisButton

   oThisButton := wvgPushbutton():New()
   oThisButton:Caption := "Teste usando button"
   oThisButton:Create( ,, { -MaxRow(), 0 }, { -1, -MaxCol() } )

   RETURN NIL


Importante:
Teria que usar o oThisButton:PointerFocus := .F.
Isso é pra não tirar o foco da janela normal.
E eu usei MaxCol(), deveria ser MaxCol() + 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: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Mostrar informação no rodapé do form

Mensagempor porter » 30 Mar 2018 10:20

Olá JoséQuintas,
Dessa forma está dando certo, agora ficou fácil de entender com o exemplo que você fez,
mas irei fazer alguns testes dessa última forma também, obrigado.

oStatusbar:Show()
oStatusbar:Hide()
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Anterior



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 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