Clipper On Line • Ver Tópico - Problema con wvt_DrawImage

Problema con wvt_DrawImage

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Problema con wvt_DrawImage

Mensagempor Adalberto » 17 Jun 2020 21:22

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
Adalberto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 01 Set 2007 01:09
Cidade/Estado: Santa Cruz de la Sierra - Bolivia
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Problema con wvt_DrawImage

Mensagempor JoséQuintas » 18 Jun 2020 00:49

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()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema con wvt_DrawImage

Mensagempor ANDRIL » 18 Jun 2020 09:25

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.

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...
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Problema con wvt_DrawImage

Mensagempor JoséQuintas » 18 Jun 2020 10:32

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema con wvt_DrawImage

Mensagempor JoséQuintas » 18 Jun 2020 10:40

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema con wvt_DrawImage

Mensagempor JoséQuintas » 18 Jun 2020 10:46

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()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema con wvt_DrawImage

Mensagempor ANDRIL » 18 Jun 2020 11:34

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.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Problema con wvt_DrawImage

Mensagempor Adalberto » 18 Jun 2020 12:54

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
Adalberto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 01 Set 2007 01:09
Cidade/Estado: Santa Cruz de la Sierra - Bolivia
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Problema con wvt_DrawImage

Mensagempor JoséQuintas » 18 Jun 2020 14:40

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Problema con wvt_DrawImage

Mensagempor Adalberto » 19 Jun 2020 11:41

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
Adalberto
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 01 Set 2007 01:09
Cidade/Estado: Santa Cruz de la Sierra - Bolivia
Curtiu: 0 vez
Mens.Curtidas: 12 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro