Página 1 de 1

Problema con wvt_DrawImage

Enviado: 17 Jun 2020 21:22
por Adalberto
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

Problema con wvt_DrawImage

Enviado: 18 Jun 2020 00:49
por JoséQuintas
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()

Problema con wvt_DrawImage

Enviado: 18 Jun 2020 09:25
por ANDRIL
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.

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

MAKEMIX - TELA PDV COM GTWVG-GTWVT.jpg
MAKEMIX - TELA PDV COM GTWVG-GTWVT-2.jpg
Ainda em desenvolvimento...

Problema con wvt_DrawImage

Enviado: 18 Jun 2020 10:32
por JoséQuintas
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.

Problema con wvt_DrawImage

Enviado: 18 Jun 2020 10:40
por JoséQuintas
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.

Problema con wvt_DrawImage

Enviado: 18 Jun 2020 10:46
por JoséQuintas
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.
Faça um teste:
Após completar a montagem de tudo, acionar a "repintagem" da tela.
Talvez seja wvgSetAppWindow():Refresh()

Problema con wvt_DrawImage

Enviado: 18 Jun 2020 11:34
por ANDRIL
JoséQuintas escreveu:Faça um teste:
Após completar a montagem de tudo, acionar a "repintagem" da tela.
Talvez seja wvgSetAppWindow():Refresh()
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.

Problema con wvt_DrawImage

Enviado: 18 Jun 2020 12:54
por Adalberto
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

Problema con wvt_DrawImage

Enviado: 18 Jun 2020 14:40
por JoséQuintas
Adalberto escreveu:noté que la ventana tiene una pequeña demora (a janela pisca) y la repintada es lenta.
Aqui no Brasil tivemos problema com programa de segurança de banco: warsaw.exe

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.

Problema con wvt_DrawImage

Enviado: 19 Jun 2020 11:41
por Adalberto
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
EninSoft.jpg
Balances.jpg