GTWVG - Tamanho da fonte na função wvt_DrawButton()

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

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por JoséQuintas »

Voltando um pouco atrás:

Do jeito que usa, wvt_paint faz todo trabalho, e pode ficar lenta pra atualizar, porque vai sempre desenhar tudo.
Não se trata nem exatamente do desenho, mas do que envolve fazer cada desenho, um por vez.
Se isso acontecer, vai ter que pensar em alternativas.

Mesmo os outros controles, também tem macetes.
Por exemplo, criar não visíveis, e só mostrar tudo no final, mas não é seu caso este.

É por isso que o windows divide em janelas, pra poder atualizar cada pedaço separado, e não ficar lento. Poder atualizar até mais de um pedaço ao mesmo tempo.

Essa rotina em C ajuda, não porque está em C, mas porque faz tudo de uma vez, é algo do tipo:
Em prg vai ser preparar,fazer,terminar, preparar,fazer,terminar,preparar,fazer,terminar
Em C é preparar, fazer, fazer, fazer, terminar
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por JoséQuintas »

Jairo Maia escreveu:Quanto a trabalhar com wvgPushButton(), não vou não. Não gostei nada dele e ele não se enquadra na minha forma de trabalho, aliás, achei "um saco" esse recurso. PS: Opinião pessoal, nada contra quem se adaptou bem com ele.
De repente sentiu falta do que alterei nele.
Ou se baseou nos exemplos da gtwvg, se é que tem.
Mas também fica relacionado com o modo de uso, um aplicativo raramente é igual ao outro na forma de funcionamento.
Dá pra deixar muito mais fácil de usar do que wvt_DrawButton.
Nem precisa saber que o mouse existe, ou que o button existe.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por JoséQuintas »

Consegue montar um exemplo, simples ou não simples, com wvt_DrawButton, pra mostrar um equivalente com pushbutton ?
Pode ser que eu mostre uma forma que não tinha usado antes.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por JoséQuintas »

Fui olhar o exemplo da gtwvg, até tem draw_button(), mas só desenha e mais nada.
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/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por Jairo Maia »

JoséQuintas escreveu:Consegue montar um exemplo, simples ou não simples, com wvt_DrawButton
Ok, mas não vou dar prazo, ok? Assim que puder monto e posto aqui.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por JoséQuintas »

Só pra adiantar, pelo que entendi do wvt_DrawButton:

wvt_DrawButton

Código: Selecionar todos

AAdd( aBlocks, wvt_DrawButton( ... ) )
AAdd( aBlocks, wvt_DrawButton( ... ) )
AAdd( aBlocks, wvt_DrawButton( ... ) )
SetBlocks( aBlocks )
DO WHILE .T.
   IF nKey == K_MOUSEDOWN
       IF MRow() >= 1 .AND. MROW() <= 3 .AND. MCol() >= 1 .AND. mCol() >= 2
          nKey := K_F2
          EXIT
      ENDIF
       IF MRow() >= 1 .AND. MROW() <= 3 .AND. MCol() >= 1 .AND. mCol() >= 2
          nKey := K_F3
          EXIT
      ENDIF
       IF MRow() >= 1 .AND. MROW() <= 3 .AND. MCol() >= 1 .AND. mCol() >= 2
          nKey := K_F4
          EXIT
      ENDIF
   ENDIF
ENDDO
DO CASE
CASE nKey == K_F2; // rotina
CASE nKey == K_F3; // rotina
CASE nKey == K_F4; // rotina
ENDCASE
SetBlocks( {} )
wvgpushbutton (usando rotina intermediária)

Código: Selecionar todos

aButton[1] := DrawWvgButton( ..... { || hb_Keyput( K_F2 ) } )
aButton[2] := DrawWvgButton( ..... { || hb_Keyput( K_F3 ) } )
aButton[3] := DrawWvgButton( ..... { || hb_Keyput( K_F4 ) } )
DO WHILE .T.
   nKey := Inkey(0)
   IF nKey == K_F2 .OR. nKey == K_F3 .OR. nKey == K_F4
      EXIT
   ENDIF
ENDDO
DO CASE
CASE nKey == K_F2; // rotina
CASE nKey == K_F3; // rotina
CASE nKey == K_F4; // rotina
ENDCASE
aButton[1]:Destroy()
aButton[2];Destroy()
aButton[3]:Destroy()
Comparando os dois fontes, o fonte do wvgpushbutton nem sabe que o button existe.

Lógico, na troca de telas pode ser que precise oButton:Hide() e oButton:Show()
Mas isso não é trabalho extra, comparado que também tem que ficar mexendo no array de wvt_Paint()
Hide() e Show() deixa invisível ou visível, Destroy() joga fora.
Também pode usar EVal( aButtonList, { | e | e:Destroy() } ) ao invés de fazer um por um, tanto faz.
Aqui criei uma classe oFrm, essa classe tem um array com os buttons, e centralizo as tranqueiras nela, assim comando tudo de uma vez, e acaba sendo só uma variável pra cada tela ou sub-tela.

O que vai pecisar avaliar é a questão do visual, porque o wvgpushbutton é do windows, no padrão do windows, e não tem o que mexer, nem mesmo mudar a cor.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por JoséQuintas »

pushbutton.png
Padrão do windows, ou assim ou nada feito.
Pode trocar imagem, pode usar ou não texto, mas a cor é essa.
Só alterei pra redimensionar o ícone automático.
Com BMP não transparente, cobre tudo com outra cor, seria a opção de mudar a cor.
Isso NÃO É barra de ferramentas, são buttons mesmo, coloquei um do lado do outro, e criei um button vazio pra usar o espaço que sobrava e parecer uma barra.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por JoséQuintas »

como fica tudo no mesmo lugar, e eu uso uma classe pra facilitar, eu só digo que buttons eu quero.

Código: Selecionar todos

   oFrm:cOpc := iif( mProgAnt == "PFINANEDRECEBER", "I", "A" ) // Default do menu
   oFrm:acMenuOptions := { "<B>Baixa" }
   IF mProgAnt == "PFINANEDRECEBER"
      AAdd( oFrm:acMenuOptions, "<T>Troca" )
      AAdd( oFrm:acMenuOptions, "<F3>Duplicata" )
      AAdd( oFrm:acMenuOptions, "<O>Ocorr." )
      AAdd( oFrm:acMenuOptions, "<F4>Boleto" )
   ENDIF
   AAdd( oFrm:acMenuOptions, "<Q>PesqDoc" )
   IF pw_TemAcesso( "PEDVERPDF" )
      AAdd( oFrm:acMenuOptions, "<W>VerPDF" )
   ENDIF
   IF mProgAnt == "PFINANEDRECEBER"
      oFrm:cOptions := "AEI"
   ELSE
      oFrm:cOptions := "CA"
   ENDIF
   oFrm:Execute()
Lá na rotina, ela já escolhe qual é a imagem, conforme o conteúdo, assim o aplicativo fica padronizado.
E tenho uma função que retorna a opção escolhida, em caractere.

Código: Selecionar todos

   DO CASE
   CASE ::cOpc == "F3"
   CASE ::cOpc == "F4"
   CASE ::cOpc == "O"
   CASE ::cOpc == "W"
   CASE ::cOpc == "Q"
   CASE ::cOpc == "T"
   CASE ::cOpc == "B"
   OTHERWISE
      lProcessou := .F.
   ENDCASE
O fonte nem sabe se é teclado, mouse, button. o fonte apenas usa a resposta.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

GTWVG - Tamanho da fonte na função wvt_DrawButton()

Mensagem por JoséQuintas »

Um exemplo
wvg.png

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 vai criar a rotina pra reduzir fonte é com você, aí é só um exemplo.
Note que o fonte normal não sabe que os buttons existem.
Os buttons vão agir como teclado, fazendo o KEYBOARD.
É apenas um PROMPT comum.

No activate() acho que aciona multithread, o que pode complicar, então melhor usar só keyboard mesmo, e ficar sob o controle do fluxo normal do aplicativo.

Por muitos anos só usei esse button e mais nada.
Dá pra dizer que você usa mais gtwvg do que eu, eu uso pouca coisa, por enquanto.
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