Dúvida, como criar botões

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

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida, como criar botões

Mensagem por porter »

Olá pessoal, achei essa rotina aqui no fórum, compilei e agora estou executando para
entender como se cria um botão, mas durante a execução, quando chega nessa linha:
oButton:Create( , , { -nRow, -nCol }, { -2, -7 } ), // se comentar essa linha, executa normalmente, mas não cria os botões.

da mensagem: test.exe parou de funcionar

Harbour 3.2.0dev (console)

Código: Selecionar todos

LOCAL cResp
  	 
SetMode( 28, 80 )
SetColor( "W/B" )
CLS
DO WHILE .T.
     cResp := Mens( 22, 3, { "GGrava", "DDesiste", "SSair" } )
     @ 10, 5 SAY "Opcao escolhida " + cResp
     IF cResp == "S"
        EXIT
     ENDIF
ENDDO
RETURN


Código: Selecionar todos

FUNCTION Mens( nRow, nCol, aLstOpcao )
  	 
LOCAL oButton, aLstButton := {}, cOpcao, nKey, lFound
  	 
FOR EACH cOpcao IN aLstOpcao // faz pra cada opção no array
      oButton := wvgPushButton():New()
      oButton:PointerFocus := .F.
      oButton:Border          := .T.
      oButton:Caption        := Substr( cOpcao, 2 )                    // sem a primeira letra
      oButton:TooltipText  := Substr( cOpcao, 2 )                    // sem a primeira letra
      oButton:Activate       := BuildBlock( Left( cOpcao, 1 ) )   // somente primeira letra
      oButton:Create( , , { -nRow, -nCol }, { -2, -7 } )  [b]<---  Erro nessa linha [/b]
      AAdd( aLstButton, oButton ) // adiciona o botão no array de botões
      nCol += 12
NEXT
nKey := 0
DO WHILE nKey == 0
  	      nKey := Inkey(0)
  	      lFound := .F.
  	      FOR EACH cOpcao IN aLstOpcao // pra verificar se a letra digitada está na lista
  	         IF Upper( Chr( nKey ) ) == Left( cOpcao, 1 )
  	            nKey := Asc( Left( cOpcao, 1 ) )
  	            lFound := .T.
  	            EXIT
  	         ENDIF
  	      NEXT
  	      IF .NOT. lFound // se não está na lista, continua no loop
  	         nKey := 0
  	      ENDIF
ENDDO
FOR EACH oButton IN aLstButton // se já respondeu a pergunta, não precisa mais dos botões, destrói cada botão do array
       oButton:Destroy()
NEXT
RETURN Chr( nKey )

Código: Selecionar todos

STATIC FUNCTION BuildBlock( cLetra )
  	   RETURN { || hb_KeyPut( cLetra ) }

teste.hbp

Código: Selecionar todos

-otest  
#-inc          
-compr=yes
-quiet
-lxhb
-lhbwin
-lhbct

#-gui
-prgflag=-b 

#-strip
#-compr

#-st
-gtwvg

test.prg

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

Dúvida, como criar botões

Mensagem por JoséQuintas »

Troque -gtwvg por GTWVG.HBC

Se ainda não resolver, acrescente

Código: Selecionar todos

PROCEDURE HB_GT_SYS

   REQUEST HB_GT_WVG_DEFAULT

   RETURN
À primeira vista, o fonte está correto.
Mas.... pra criar um botão GTWVG precisa uma janela 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/
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida, como criar botões

Mensagem por porter »

Olá José Quintas,
Está dando erro, porque compilei junto com o sistema, mas criei uma pasta separada
e funcionou perfeitamente, não precisa usar nem a rotina abaixo:

Código: Selecionar todos

PROCEDURE HB_GT_SYS
      REQUEST HB_GT_WVG_DEFAULT
      RETURN
Os comandos abaixo, tenho no sistema, e só deu certo ao comentá-los, mas eu preciso deles
para deixar a tela maximizada, então ficou esse problema se eu tira-los minha tela não fica
maximizada, mas se usa-los não consigo utilizar essa rotina de botões.


REQUEST HB_GT_WVT_DEFAULT // TELA MAXIMIZADA
hb_gtinfo(HB_GTI_MAXIMIZED, .T.) // TELA MAXIMIZADA


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

Dúvida, como criar botões

Mensagem por JoséQuintas »

Vai ter que decidir entre usar GTWVT ou GTWVG.

Deixei de usar tela maximizada nos tempos do Clipper, Windows 98 e Messenger, há 20 anos atrás.

O que chama de tela maximizada?
Sumir com Windows da tela ou expandir ao máximo?
A GTWVG também expande ao máximo que der, de acordo com tamanho de fonte e área útil da tela.
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/
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida, como criar botões

Mensagem por porter »

O que chama de tela maximizada?
Sumir com Windows da tela ou expandir ao máximo?
A GTWVG também expande ao máximo que der, de acordo com tamanho de fonte e área útil da tela.
Quero expandir ao máximo e não sumir com windows da tela, como ficaria o comando com o GTWVG ?

Obrigado.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida, como criar botões

Mensagem por porter »

Não estou conseguindo obter o mesmo efeito que o GTWVT, com o GTWVG, precisa
da intervenção do usuário para ficar em tela cheia tomando a área do DeskTop.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida, como criar botões

Mensagem por JoséQuintas »

Com certeza tem algo equivalente, lembro de já ter usado, e até já passou aqui no fórum.
Outra opção interessante é salvar/restaurar tamanho de fonte.
Volta do jeito que o usuário deixar.
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/
Responder