Problema con wvt_DrawImage
Moderador: Moderadores
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Problema con wvt_DrawImage
Maestro JoséQuintas, buenas noches.
Estuve haciendo pruebas con la función wvt_DrawImage y me di cuenta que al minimizar la ventana o al mover la ventana con el mouse hasta que las imágenes desaparezcan, al retornar las imágenes ya no están en la ventana hasta mover las setas o dar clic, ahí recién se vuelven a ver.
Por favor me enseña como solucionarlo, hasta ahora todas la imagenes que manejo son botones.
Los botones no desaparecen al minimizar o al ocultar la ventana.
Muchas gracias anticipadas, espero sus noticias.
Atte. Adalberto
Estuve haciendo pruebas con la función wvt_DrawImage y me di cuenta que al minimizar la ventana o al mover la ventana con el mouse hasta que las imágenes desaparezcan, al retornar las imágenes ya no están en la ventana hasta mover las setas o dar clic, ahí recién se vuelven a ver.
Por favor me enseña como solucionarlo, hasta ahora todas la imagenes que manejo son botones.
Los botones no desaparecen al minimizar o al ocultar la ventana.
Muchas gracias anticipadas, espero sus noticias.
Atte. Adalberto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Problema con wvt_DrawImage
Mesmo assunto já falado antes.
Os controles WVT NÃO SÃO FIXOS.
Se quiser usá-los, vai ter que criar rotina dentro de WVT_Paint()
Nos exemplos da GTWVG ela usa um array com codeblocks.
Algo como:
AAdd( aDrawImage, { || wvt_DrawImage( ..... ) } )
e em wvt_Paint()
FOR EACH oElement IN aDrawImage
Eval( oElement )
NEXT
A GTWVG usa o "papel de parede" para o texto, e também pra desenho.
Ao atualizar o texto da tela, o desenho desaparece.
A alternativa é ficar repintando em WVT_Paint()
Os controles WVT NÃO SÃO FIXOS.
Se quiser usá-los, vai ter que criar rotina dentro de WVT_Paint()
Nos exemplos da GTWVG ela usa um array com codeblocks.
Algo como:
AAdd( aDrawImage, { || wvt_DrawImage( ..... ) } )
e em wvt_Paint()
FOR EACH oElement IN aDrawImage
Eval( oElement )
NEXT
A GTWVG usa o "papel de parede" para o texto, e também pra desenho.
Ao atualizar o texto da tela, o desenho desaparece.
A alternativa é ficar repintando em WVT_Paint()
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/
Problema con wvt_DrawImage
Aproveitando o assunto já que estou criando a tela do PDV com Gt-Wvg/Wvt tenho tido resultados com Wvt_Paint() que hora atualizam a tela e hora não.
O jeito que achei para contornar a não atualização da tela foi adicionar o label no aPaint e também usar direto na tela o Wvt_DrawLabel conforme na função acima AddLabel. Assim funcionou.
É muito tedioso quando uma função ou até nosso código que achamos que vamos obter um resultado e não conseguimos o que desejamos, tentar achar o por que se torna um processo chato de tentativa erro/acerto.
Ainda em desenvolvimento...
Código: Selecionar todos
DO WHILE .T.
atualizatela()
WvtSetPaint(aPaint)
Wvt_Paint()
@10,10 SAY "Código do produto: " GET cod PICT"999999"
READ
if lastkey()=27
EXIT
endif
seek cod
*** achou o codigo pega valor do produto e joga na tela
ENDDO
RETURN NIL
FUNCTION atualizatela()
***CARREGA O ARRAY COM OS ELEMENTOS DA TELA
aPaint:={}
***IMAGEM DE FUNDO DA TELA
AAdd( aPaint, { "Image", {|| Wvt_DrawImage( 0, 0, 25, 80, IMAGE_VOUCH ) }, { WVT_BLOCK_IMAGE, 1, 0, 1, 0 } } )
***FUNÇAO PARA ADD LABEL AO aPaint
AddLabel( aPaint, 6, 66, 0,trans(PRODUTO->SUBTOTAL,"999999.99"),.f.,"Arial",35,20)
RETURN NIL
FUNCTION AddLabel( aPaint, nRow, nCol, nCont, cTexto,lZebra,cFont,nHeight,nWidth,aColor,aBackground )
cFont=if(empty(cFont),"Courier New",cFont)
nHeight=if(empty(nHeight),14,nHeight)
nWidth=if(empty(nWidth),9,nWidth)
aColor=if(empty(aColor),{0,0,0},aColor)
aBackground=if(empty(aBackground),{255,255,255},aBackground)
if lZebra=.f.
AAdd( aPaint, { "label", { || wvt_DrawLabel( nRow + nCont, nCol, cTexto , 0, , ;
RGB( aColor[1],aColor[2],aColor[3] ), RGB(aBackground[1],aBackground[2], aBackground[3] ), cFont, nHeight,nWidth , , , , .F., .F. ) }, ;
{ WVT_BLOCK_LABEL, 0, 0, 0, 0 } } )
*--170620 TIVE QUE COLOCAR PARA PRINTAR DIRETO NA TELA OS LABELS NAO APARECIAM SO PELO WVG_SETPAINT
Wvt_DrawLabel( nRow + nCont, nCol, cTexto, 0, , RGB( aColor[1],aColor[2],aColor[3] ),RGB(aBackground[1],aBackground[2],aBackground[3]) , cFont, nHeight,nWidth, , , ,.F.,.F. )
else
AAdd( aPaint, { "label", { || wvt_DrawLabel( nRow + nCont, nCol, cTexto , 0, , ;
RGB( aBackground[1],aBackground[2],aBackground[3] ),RGB(aColor[1],aColor[2],aColor[3] ), cFont,nHeight,nWidth , , , , .F., .F. ) }, ;
{ WVT_BLOCK_LABEL, 0, 0, 0, 0 } } )
*--170620 TIVE QUE COLOCAR PARA PRINTAR DIRETO NA TELA OS LABELS NAO APARECIAM SO PELO WVG_SETPAINT
Wvt_DrawLabel( nRow + nCont, nCol, cTexto, 0, ,RGB(aBackground[1],aBackground[2],aBackground[3]) , RGB( aColor[1],aColor[2],aColor[3] ), cFont, nHeight,nWidth, , , ,.F.,.F. )
endif
RETURN NIL É muito tedioso quando uma função ou até nosso código que achamos que vamos obter um resultado e não conseguimos o que desejamos, tentar achar o por que se torna um processo chato de tentativa erro/acerto.
Ainda em desenvolvimento...
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Problema con wvt_DrawImage
Simplificando:
A tela do Harbour não foi feita pra usar desenho, apenas texto.
Pra ser considerada uma GT, a GTWVG é obrigada a obedecer ao Harbour.
Alternativa 1:
Usar a WVT_Paint() que é uma rotina de refazer desenhos após atualizar tela com texto
CLS por exemplo, apaga tudo, mas WVT_paint() repintaria os desenhos.
Alternativa 2:
Usar controles GTWVG, que são uma janela sobre a janela original da GT, igual a qualquer GUI.
Dessa forma, o Harbour cuida da parte de texto na janela texto, sem mexer com o desenho que está em janela separada (apesar de parecer que se trata da mesma janela)
Aqui é o contrário do anterior, CLS limpa a janela de texto, e os desenhos continuam, porque não fazem parte da janela de texto.
Os desenhos só vão sumir se for enviado comando de propósito.
Mas é comportamento normal em qualquer ambiente GUI, que use controles Windows.
Aí vão dizer:
em janela GUI de LIB GUI não acontece isso...
Aconteceria, se ficasse reaproveitando a mesma janela pro aplicativo inteiro.
No seu caso, se usar Harbour 3.4, talvez expanda muito o uso dos controles que eu fiz, e até peça mais.
A tela do Harbour não foi feita pra usar desenho, apenas texto.
Pra ser considerada uma GT, a GTWVG é obrigada a obedecer ao Harbour.
Alternativa 1:
Usar a WVT_Paint() que é uma rotina de refazer desenhos após atualizar tela com texto
CLS por exemplo, apaga tudo, mas WVT_paint() repintaria os desenhos.
Alternativa 2:
Usar controles GTWVG, que são uma janela sobre a janela original da GT, igual a qualquer GUI.
Dessa forma, o Harbour cuida da parte de texto na janela texto, sem mexer com o desenho que está em janela separada (apesar de parecer que se trata da mesma janela)
Aqui é o contrário do anterior, CLS limpa a janela de texto, e os desenhos continuam, porque não fazem parte da janela de texto.
Os desenhos só vão sumir se for enviado comando de propósito.
Mas é comportamento normal em qualquer ambiente GUI, que use controles Windows.
Aí vão dizer:
em janela GUI de LIB GUI não acontece isso...
Aconteceria, se ficasse reaproveitando a mesma janela pro aplicativo inteiro.
No seu caso, se usar Harbour 3.4, talvez expanda muito o uso dos controles que eu fiz, e até peça mais.
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
Problema con wvt_DrawImage
Faltou dizer:
wvt_SetGui() afeta atualização de tela.
Pra mim, achei que usando com .T. atrapalha mais a atualização de tela.
Por isso nem uso.
wvt_SetGui() afeta atualização de tela.
Pra mim, achei que usando com .T. atrapalha mais a atualização de tela.
Por isso nem uso.
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
Problema con wvt_DrawImage
Faça um teste:ANDRIL escreveu:É muito tedioso quando uma função ou até nosso código que achamos que vamos obter um resultado e não conseguimos o que desejamos, tentar achar o por que se torna um processo chato de tentativa erro/acerto.
Após completar a montagem de tudo, acionar a "repintagem" da tela.
Talvez seja wvgSetAppWindow():Refresh()
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/
Problema con wvt_DrawImage
José vou tentar esta dica, embora já tenha mudado o código para uma forma que funcionasse. Tenho o fonte separado no qual não funciona, vou testar.JoséQuintas escreveu:Faça um teste:
Após completar a montagem de tudo, acionar a "repintagem" da tela.
Talvez seja wvgSetAppWindow():Refresh()
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Problema con wvt_DrawImage
Maestros y amigos del foro, buenas tardes.
Hice muchas pruebas con eso de repintar las imágenes, noté que la ventana tiene una pequeña demora (a janela pisca) y la repintada es lenta.
Pero lo peor es que al mover la ventana hasta que el borde de la ventana quede muy cerca de la barra de tareas del escritorio, luego al subir la ventana las imágenes han desaparecido y ahí no hay como saber que la ventana volvió para repintar.
Voy a hacer pruebas con Wvt_DrawLabel como ejemplificó Andril.
Hago esta pruebas sólo por curiosidad porque estoy trabajando todo con botones con imágenes, ahí puedo mover la ventana o minimizarla y las imágenes no desaparecen ni necesito repintar.
Claro que no obtengo una presentación tan elegante como la de ustedes.
Muchas gracias por su atención y por su ayuda; Dios los bendiga.
Atte. Adalberto
Hice muchas pruebas con eso de repintar las imágenes, noté que la ventana tiene una pequeña demora (a janela pisca) y la repintada es lenta.
Pero lo peor es que al mover la ventana hasta que el borde de la ventana quede muy cerca de la barra de tareas del escritorio, luego al subir la ventana las imágenes han desaparecido y ahí no hay como saber que la ventana volvió para repintar.
Voy a hacer pruebas con Wvt_DrawLabel como ejemplificó Andril.
Hago esta pruebas sólo por curiosidad porque estoy trabajando todo con botones con imágenes, ahí puedo mover la ventana o minimizarla y las imágenes no desaparecen ni necesito repintar.
Claro que no obtengo una presentación tan elegante como la de ustedes.
Muchas gracias por su atención y por su ayuda; Dios los bendiga.
Atte. Adalberto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Problema con wvt_DrawImage
Aqui no Brasil tivemos problema com programa de segurança de banco: warsaw.exeAdalberto escreveu:noté que la ventana tiene una pequeña demora (a janela pisca) y la repintada es lenta.
Talvez criar manifest para o EXE, caso não exista, ou talvez somente assinando, se não remover a segurança do banco.
Sobre os botões: Provavelmente os botões são wvgPushButton(), eles próprios se repintam.
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/
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Problema con wvt_DrawImage
Maestro JoséQuintas, buenos días.
Comentarle que en Bolivia NO hemos tenido ningún problema con la seguridad de la Banca, todo ha sido coordinado y funciona muy bien.
Sí, estoy utilizando el archivo manifest para que todas las imágenes.BMP que utilizo en los botones queden embutidos dentro del .exe como recursos (.RC)
Los botones son wvgPushButton() y como usted lo indica, ellos se repintan solos no tengo necesidad de ocuparme de eso, mis sistemas no son elegantes (não são bem aprimorados) es por falta de creatividad estética de mi parte.
Estoy contento con la parte gráfica que he podido agregarle a mis antiguos sistemas Clipper, ahora Harbour 3.2.; a usted le agradezco mucho haber compartido con la comunidad sus conocimientos y su tiempo. También agradezco a todos los amigos del foro que colaboran con el único interes de ayudar.
Los actuales sistemas que estoy desarrollando lo hago con Harbour-MiniGuiExt, y agradezco a todos quienes han desarrollado esas magnificas herramientas.
Dios los bendiga siempre y los libre de este corona virus.
Atte. Adalberto
Comentarle que en Bolivia NO hemos tenido ningún problema con la seguridad de la Banca, todo ha sido coordinado y funciona muy bien.
Sí, estoy utilizando el archivo manifest para que todas las imágenes.BMP que utilizo en los botones queden embutidos dentro del .exe como recursos (.RC)
Los botones son wvgPushButton() y como usted lo indica, ellos se repintan solos no tengo necesidad de ocuparme de eso, mis sistemas no son elegantes (não são bem aprimorados) es por falta de creatividad estética de mi parte.
Estoy contento con la parte gráfica que he podido agregarle a mis antiguos sistemas Clipper, ahora Harbour 3.2.; a usted le agradezco mucho haber compartido con la comunidad sus conocimientos y su tiempo. También agradezco a todos los amigos del foro que colaboran con el único interes de ayudar.
Los actuales sistemas que estoy desarrollando lo hago con Harbour-MiniGuiExt, y agradezco a todos quienes han desarrollado esas magnificas herramientas.
Dios los bendiga siempre y los libre de este corona virus.
Atte. Adalberto
