GTWVG - Tamanho da fonte na função wvt_DrawButton()
Moderador: Moderadores
- JoséQuintas
- 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()
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
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/
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/
- JoséQuintas
- 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()
De repente sentiu falta do que alterei nele.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.
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/
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/
- JoséQuintas
- 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()
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.
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/
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/
- JoséQuintas
- 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()
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/
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/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
GTWVG - Tamanho da fonte na função wvt_DrawButton()
Ok, mas não vou dar prazo, ok? Assim que puder monto e posto aqui.JoséQuintas escreveu:Consegue montar um exemplo, simples ou não simples, com 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)
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)
- JoséQuintas
- 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()
Só pra adiantar, pelo que entendi do wvt_DrawButton:
wvt_DrawButton
wvgpushbutton (usando rotina intermediária)
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.
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( {} )
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()
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/
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/
- JoséQuintas
- 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()
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.
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/
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/
- JoséQuintas
- 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()
como fica tudo no mesmo lugar, e eu uso uma classe pra facilitar, eu só digo que buttons eu quero.
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.
O fonte nem sabe se é teclado, mouse, button. o fonte apenas usa a resposta.
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()
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
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/
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/
- JoséQuintas
- 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()
Um exemplo
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.
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
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/
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/