Página 1 de 1

Dúvida, como criar botões

Enviado: 04 Jul 2017 18:16
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


Dúvida, como criar botões

Enviado: 04 Jul 2017 19:05
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.

Dúvida, como criar botões

Enviado: 05 Jul 2017 11:36
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)

Dúvida, como criar botões

Enviado: 05 Jul 2017 12:04
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.

Dúvida, como criar botões

Enviado: 05 Jul 2017 13:34
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.

Dúvida, como criar botões

Enviado: 05 Jul 2017 14:47
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.

Dúvida, como criar botões

Enviado: 05 Jul 2017 15:47
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.