Usando pushbutton

GTWVG com API Windows somente no Harbour.
No Harbouir 3.4 está sendo usado pointer, aonde no 3.2 é numérico.

Moderador: Moderadores

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

Usando pushbutton

Mensagem por JoséQuintas »

Código: Selecionar todos

#include "inkey.ch"

PROCEDURE Main

   LOCAL nOpc := 1, aItem
   LOCAL aBtnList := { ;
      { "Inclui", "I", Nil }, ;
      { "Altera", "A", Nil }, ;
      { "Exclui", "E", Nil }, ;
      { "Lista",  "L", Nil }, ;
      { "Hide", "H", Nil }, ;
      { "Show", "S", Nil } }

   SetMode(33,100)
   SetColor( "W/B" )
   CLS
   CriarButtons( @aBtnList )

   DO WHILE .T.
      CLS
      @ 7, 0 SAY ""
      FOR EACH aItem IN aBtnList
         @ Row() + 1,  10 PROMPT aItem[ 1 ]
      NEXT
      MENU TO nOpc
      IF LastKey() == K_ESC .OR. nOpc == 0
         EXIT
      ENDIF
      Alert( "Opção escolhida " + aBtnList[ nOpc, 1 ] )
      DO CASE
      CASE nOpc == 5; AEval( aBtnList, { | e | e[3]:Hide() } )
      CASE nOpc == 6; AEval( aBtnList, { | e | e[3]:Show() } )
      ENDCASE
   ENDDO

   RETURN

FUNCTION CriarButtons( aBtnList )

   LOCAL nCol := 1, aItem

   FOR EACH aItem IN aBtnList
      WITH OBJECT aItem[ 3 ] := wvgPushbutton():New()
         :PointerFocus := .F.
         :Create( ,, { -1, -nCol }, { -3, -5 },,,.F. )
         :Activate := { || hb_Keyput( Asc( aItem[ 2 ] ) ) }
         :SetCaption( aItem[ 1 ] )
         :Show()
      ENDWITH
      nCol += 5
   NEXT
   RETURN Nil

PROCEDURE HB_GTSYS
   REQUEST HB_GT_WVG_DEFAULT
   RETURN
Como é controle GUI, é muita informação.
Pra cada pushbutton precisa disto

Código: Selecionar todos

      oBtn1 := wvgPushbutton():New()
      oBtn1:PointerFocus := .F.
      oBtn1:Create( ,, { -1, -nCol }, { -3, -5 },,,.F. )
      oBtn1:Activate := { || hb_Keyput( Asc( aItem[ 2 ] ) ) }
      oBtn1:SetCaption( aItem[ 1 ] )
      oBtn1:Show()
o WITH OBJECT deixa o fonte mais limpo, e criar o array reduz muito mais fonte do que se criasse um a um.
Nesse caso o pushbutton vai fazer KEYBOARD, e se o fonte já trata o teclado, não precisa nenhum fonte adicional.

Estou usando o array pra mostrar as opções do PROMPT e também pra preencher os buttons, por isso o array está no fonte principal.
Pra outras situações, nem esse array precisaria estar no fonte.

Olhando o fonte principal, ele nem sabe que GTWVG existe.

E meus fontes são nesse estilo: os fontes nem sabem que GTWVG existe.

O mesmo estilo é válido pra HWGUI ou minigui, mas no caso delas, o fonte sempre sabe que HWGUI ou minigui existem.
wvg (1).png
E se quiser imagem, texto + imagem, é só colocar.

Eu uso uma rotina nesse estilo, e pego o ícone de acordo com o texto.
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/
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Usando pushbutton

Mensagem por microvolution »

muito bom.
JoséQuintas escreveu:05    LOCAL nOpc := 1, aItem
06    LOCAL aBtnList := { ;
07       { "Inclui", "I", Nil }, ;
08       { "Altera", "A", Nil }, ;
09       { "Exclui", "E", Nil }, ;
10       { "Lista",  "L", Nil }, ;
11       { "Hide", "H", Nil }, ;
12       { "Show", "S", Nil } }
13  
14    SetMode(33,100)
15    SetColor( "W/B" )
16    CLS
17    CriarButtons( @aBtnList )
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Responder