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
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 »

Como alterar o tamanho da fonte num botão desenhado com a função wvt_DrawButton()? Tem como?

OBS: Não é o caso de substituir por wvgPushButton(). Me refiro mesmo a wvt_DrawButton().
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 »

Acho que só alterando o fonte em C

Código: Selecionar todos

/* wvt_DrawButton( nTop, nLeft, nBottom, nRight, cText, cnImage, ;
                  nFormat, nTextColor, nBkColor, nImageAt, aPxlOff ) */
HB_FUNC( WVT_DRAWBUTTON )
Como o desenho é direto na tela, talvez apagando o pedaço e escrevendo por cima
Teria que acrescentar as duas coisas na rotina que redesenha.
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 »

Não sei se fui claro...

Como alternativa, tem a rotina do button e a rotina de escrever texto.
Desenha o button como é hoje, e escreve o texto por cima pela DrawText (acho que é esse o nome)
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:e escreve o texto por cima pela DrawText (acho que é esse o nome)
É a wvt_DrawLabel(). Sim, isso é que faço hoje, mas realmente poderia ter um jeito de alterar o tamanho do fonte pela wvt_DrawButton(), ficaria bem mais "limpo".
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 »

Jairo Maia escreveu:E a wvt_DrawLabel(). Sim, isso é que faço hoje, mas realmente poderia ter um jeito de alterar o tamanho do fonte pela wvt_DrawButton(), ficaria bem mais "limpo".
Se usa muito, na falta de opção, crie sua função intermediária

Código: Selecionar todos

FUNCTION MyDrawButton()
   wvt_DrawButton()
   wvt_DrawLabel()
   RETURN Nil
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 »

Nem queira saber a idéia que me veio a cabeça neste post.
Vou fazer uns testes depois.
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 »

Aonde controla o click do DrawButton() ? é manualmente no Inkey() ?
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 »

Isso mesmo. Pela posição do click identifica em que botão foi, e aciona a respectiva função.

OBS: Apenas para quem vier a ler posteriormente: Não é o caso de substituir por wvgPushButton().
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 »

O que o post me chamou a atenção, é que com as funções básicas, você pode fazer tudo que GUI faz, sem os PROBLEMAS da API Windows.
Já vou começar a pensar em jogar todos os meus controles no lixo, e usar dessa forma. (meus controles não, do Windows mesmo)
E isso deve acabar com o meus problemas "inexplicáveis", que só podem ter a ver com API Windows.
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 »

wvg.png
Só um teste básico pra ver se funcionava em janela CRT
Pra ver se o desenho ia sair na janela atual ou na de baixo.
Ainda não vi sobre o WVT_PAINT, acho que ele não serve nesse caso.
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 »

Mas voltando ao button.... pode fazer do jeito que quiser, não precisa nem usar o DrawButton original.
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 »

Pro meu caso, à primeira vista, não vai dar certo o outro uso.
Mas você pode tentar automatizar isso.

Basicamente vai precisar de um array de coordenadas, e das rotinas de criação, que usam o array dos desenhos pra wvt_paint(), que como já usa, não vai mudar seu modo de trabalho.

Código: Selecionar todos

aMouseList := {}
aPaintList   := {}
aMouseList pra usar no Inkey(), e aPaintList pra usar no WVT_Paint()

Na sua rotina de button, adiciona a parte de mouse em aMouseList e a parte do desenho em aPaintLIst.

Tipo....

Código: Selecionar todos

FUNCTION MyButton( top, left, bottom, right, cImage, cText, nKeyboard )
   AAdd( aMouseList, { top,left, bottom, right, nKeyboard } )
   AAdd( aPaintList, { || wvt_DrawImage( top, left, bottom, right, cImage } )
   AAdd( aPaintList, { || wvt_DrawLabel( top, left, bottom, right, cText } )
   RETURN Nil
E no Inkey, o tratamento que já deve fazer hoje, ou usando INKEYFILTER, ou SET KEY K_MOUSEDOWN, ou outro:

Código: Selecionar todos

DO WHILE nKey != K_ESC
   nKey := Inkey(0)
   IF nKey == K_MOUSEDOWN
      FOR EACH aList IN aMouseList
        IF MRow() >= aList[1] .AND. MCOL() >= aList[2] .AND. MROW() <= aList[3] .AND NROW() <= aList[4]
           nKey := aList[5]
          // conforme a situação Inkey(0);KEYBOARD Chr(aList[4]) ou hb_KeyPut() porque Chr() não vai atender F9 por exemplo
         // e em algumas situações testar nkey não é suficiente, precisa do KEYBOARD/hb_KeyPut().
         ENDIF
      NEXT
   ENDIF
ENDDO
Com isso, vai reduzindo seu fonte normal, e vai melhorando as rotinas conforme o que for acontecendo.

Sei que já disse várias vezes que não se trata do wvgpushbutton(), mas pode pensar nele.
Com ele, não vai precisar nem da conversão do inkey, e nem de ficar tratando wvt_Paint.
Nele é o contrário: vai ter que desabilitar, esconder ou destruir conforme o caso.
Mas.... vai ter que se conformar com o tamanho do texto dele

Com o wvt_DrawButton():
- tem que colocar na lista de wvt_Paint() e tem a rotina no inkey()
- no final do uso, limpa a lista de wvt_Paint()
- acho que não deixa usar resource, precisa do arquivo em disco

Com o wvgPushbutton():
- Apenas cria indicando o clique
- Destrói no final, ou esconde se for abrir janela/texto por cima (aqui é onde criar janelas facilita mais ainda)
- pode deixar o ícone em resource, embutido no EXE

Pode acabar gostando da troca.

Independente de usar wvt_DrawButton() ou wvgpushbutton(), uma rotina intermediária pode reduzir fonte.
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 »

Por exemplo, ao invés de colocar isto em tudo que é fonte:

Código: Selecionar todos

DO WHILE nKey != K_ESC
   nKey := Inkey(0)
   IF nKey == K_MOUSEDOWN
      FOR EACH aList IN aMouseList
        IF MRow() >= aList[1] .AND. MCOL() >= aList[2] .AND. MROW() <= aList[3] .AND NROW() <= aList[4]
           nKey := aList[5]
          // conforme a situação Inkey(0);KEYBOARD Chr(aList[4]) ou hb_KeyPut() porque Chr() não vai atender F9 por exemplo
         // e em algumas situações testar nkey não é suficiente, precisa do KEYBOARD/hb_KeyPut().
         ENDIF
      NEXT
   ENDIF
ENDDO
Poderia criar a genérica, apenas colocar essa parte na genérica.

Código: Selecionar todos

DO WHILE nKey != K_ESC
   nKey := Inkey(0)
   RotinaGenerica( @nKey, aMouseList )
ENDDO
A função substituiria tudo dos outros fontes

Código: Selecionar todos

FUNCTION RotinaGenerica( nKey, aMouseList )
   IF nKey == K_MOUSEDOWN
      FOR EACH aList IN aMouseList
        IF MRow() >= aList[1] .AND. MCOL() >= aList[2] .AND. MROW() <= aList[3] .AND NROW() <= aList[4]
           nKey := aList[5]
          // conforme a situação Inkey(0);KEYBOARD Chr(aList[4]) ou hb_KeyPut() porque Chr() não vai atender F9 por exemplo
         // e em algumas situações testar nkey não é suficiente, precisa do KEYBOARD/hb_KeyPut().
         ENDIF
      NEXT
   ENDIF
Na sua MyButton, já acrescentaria os cliques nessa aMouseList

Código: Selecionar todos

FUNCTION MyButton( top, left, bottom, right, ..., @aMouseList )
   AAdd( aMouseList, { top, left, botton, right, newkey } )
   RETURN Nil
É assim que vai conseguir reduzir seu fonte, independente de colocar o texto maior.
Mas assim já vai trocar todos os textos de todos os buttons pra maior, numa única rotina.
E já vai testar se a solução funcionou pra todas as situações de uma vez.

Atenção à variável por referência:
diz que array não precisa, mas não é bem assim.
Se não passar array por referência, isto não vai funcionar variavel := {}
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:Mas assim já vai trocar todos os textos de todos os buttons pra maior, numa única rotina.
Sim. É como está hoje. Concentro todas ações iguais em Funções iguais, e reduzo bastante códigos repetidos no sistema.
JoséQuintas escreveu:É assim que vai conseguir reduzir seu fonte,
Isso mesmo. Sempre procurei "otimizar" os fontes, e durante o período da pandemia, revisei os 3 sistemas que tenho comercialmente, e consegui otimizar e melhorar o visual com muitos menos linhas escritas.

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.

O objetivo do tópico era relamente saber se tinha alguma forma de customizar o tamanho dos fontes nos botões. Se verificarmos os fontes em "C", parece que é possível, mas "C" não é minha praia.

Valeu pela sua costumeira atenção. Obrigado.
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 »

Jairo Maia escreveu:O objetivo do tópico era relamente saber se tinha alguma forma de customizar o tamanho dos fontes nos botões. Se verificarmos os fontes em "C", parece que é possível, mas "C" não é minha praia.
Aquilo que está em C, dá pra fazer por PRG.
As mesmas funções tem em PRG.
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