Clipper On Line • Ver Tópico - Imagem Desaparece com gtwvw

Imagem Desaparece com gtwvw

Outras bibliotecas visuais e IDEs para Harbour/xHarbour (xHGTK/HbWxW/GtWvT/GtWvW/WvWtools.etc)

Moderador: Moderadores

 

Imagem Desaparece com gtwvw

Mensagempor infosys2 » 16 Out 2008 13:52

Sempre que a tela é minimizada a imagem desaparece, Verifiquei que existe a necessidade de redesenhar a tela e, que as funções da GTWVW que precisam do suporte para redesenho são :

WVW_DrawBoxGet()
WVW_DrawBoxRaised()
WVW_DrawBoxRecessed()
WVW_DrawBoxGroup()
WVW_DrawImage()
WVW_DrawLabel()

Porem não sei como fazer isto, se alguem pouder passar estas informacoes ficarei grato.
Clipper, xHarbour, gtwvw, wvwtools, fivewin
infosys2
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 23
Data de registro: 10 Out 2008 06:36
Cidade/Estado: Sao Pulo
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Imagem Desaparece com gtwvw

Mensagempor sygecom » 20 Out 2008 13:13

Se não me engano a WVWTOOLS faz isso automaticamente, tente fazer um teste com ela, é uma extenção da WVW
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: Imagem Desaparece com gtwvw

Mensagempor TerraSoftware » 22 Out 2008 07:31

Eu faço da seguinte forma:
   rstobj(wvw_nnumwindows()-1)
   addobj(wvw_nnumwindows()-1,{|j|wvw_drawimage(j,00,00,04,99,"SuaImagem.jpg",.t.)})


Isso depois que a janela ja esta desenhada.
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
Avatar de usuário

TerraSoftware
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 353
Data de registro: 28 Jul 2004 13:14
Cidade/Estado: Cianorte-PR
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Imagem Desaparece com gtwvw

Mensagempor infosys2 » 22 Out 2008 09:21

WVW_DrawBoxGet()
WVW_DrawBoxRaised()
WVW_DrawBoxRecessed()
WVW_DrawBoxGroup()
WVW_DrawImage()
WVW_DrawLabel()

As imagens destas funcoes desaparecem quando a janela é redesenhada. Para resolver este problema, existe a função wvw_paint. Ela é chamada sempre que uma janela é redesenhada, bastando chamar as funções de desenho das imagens de dentro da função wvw_paint, para que elas voltem à aparecer.

Exemplo:
//////////////////////////////////////////////////////////////////
FUNCTION main()
//////////////////////////////////////////////////////////////////
setcolor("N/W")
wvw_Paint( 0 )
wvw_nOpenWindow("Win2",10,10,19,69)
wvw_Paint( 1 )
wvw_nOpenWindow("Win3",15,15,19,69)
wvw_Paint( 2 )
do while inkey(0)<>27
enddo
wvw_lCloseWindow()
do while inkey(0)<>27
enddo
wvw_lCloseWindow()
do while inkey(0)<>27
enddo
return
///////////////////////////////
function wvw_Paint( nWinNum )
///////////////////////////////
do case
case nWinNum == 0
wvw_DrawLabel( nWinNum, 0, 0, "Win1", , , , , "Arial", 20, 18, , , , .f., .f., .f. )
case nWinNum == 1
wvw_DrawLabel( nWinNum, 0, 0, "Win2", , , , , "Arial", 20, 18, , , , .f., .f., .f. )
case nWinNum == 2
wvw_DrawLabel( nWinNum, 0, 0, "Win3", , , , , "Arial", 20, 18, , , , .f., .f., .f. )
endcase
return 0


Autor destas Dicas : Marcos Antonio Gambeta

-------------------------------
Nota de Moderação (Toledo): mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: faq.php?mode=bbcode#f21
Clipper, xHarbour, gtwvw, wvwtools, fivewin
infosys2
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 23
Data de registro: 10 Out 2008 06:36
Cidade/Estado: Sao Pulo
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Imagem Desaparece com gtwvw

Mensagempor Mário Isa » 10 Jun 2010 21:45

eu tentei o exemplo do colega Terra Software

rstobj(wvw_nnumwindows()-1)
   addobj(wvw_nnumwindows()-1,{|j|wvw_drawimage(j,00,00,04,99,"SuaImagem.jpg",.t.)})


mas não deu certo /
disse q a função rstobj não existe no xharbour /

Mário
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Re: Imagem Desaparece com gtwvw

Mensagempor anacatacombs » 11 Jun 2010 08:16

Meu caro:
É um conjunto de funções:


******************************
FUNCTION WVW_Paint( nWinNum )
******************************
if len(p_aListObjects) >= nWinNum+1
   aeval( p_aListObjects[nWinNum+1], {|e| eval( e, nWinNum )} )
endif
RETURN 0

***********************************
function ResetObjects( nWinNum )
***********************************
default nWinNum to WVW_nNumWindows()-1
do while len(p_aListObjects) < nWinNum+1
   aadd( p_aListobjects, {} )
enddo
p_aListObjects[ nWinNum+1 ] := {}
return .t.

*********************************************
function AddObjects( nWinNum, bAction )
*********************************************
aadd( p_aListObjects[ nWinNum+1 ], bAction )
return .t


Cada vez que for utilizar uma função que necessite de resedesenho:

AddObjects(p_alistobjects,{|nWind|wvw_drawimage(nWind,...)})
anacatacombs
Membro Master

Membro Master
 
Mensagens: 472
Data de registro: 12 Jul 2005 16:53
Cidade/Estado: Cianorte-Paraná
Curtiu: 2 vezes
Mens.Curtidas: 2 vezes

Imagem Desaparece com gtwvw

Mensagempor leandrolinauer » 17 Mar 2014 11:17

Bom dia caros colegas.
Estou com problemas com as funções de ADD e RESET objects, tive com problemas das imagens não serem redesenhadas mas ai fui apresentado a este modo de redesenho com add.
O problema é que fiquei com a tela piscando e não consegui eliminar o problema até hoje, alguém sabe como eliminar o redesenho de valores que não são mais uteis, por exemplo:
Tenho uma tela em que atualiza o valor de uma variável x, mas esta variável já estava com um valor antes por exemplo VALOR TOTAL 300,00, quando atualizo o valor para 320,00, o anterior tbem é redesenhado devido a lista de objetos da tela ser adcionado um novo valor com add, não posso dar um reset nela porque senão apaga os demais objetos que não foram alterados mas devem permanecer na tela, como o nome do produto.

Já tentei seguir a matriz de objetos para colocar algo como um nome fixo ao objeto da tela, assim ele ao invés de incluir um novo, seria atualizado, mas não obtive exito na proeza.

Caso alguém já tenha resolvido o problema e puder me auxiliar, fico grato.

-:]
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Imagem Desaparece com gtwvw

Mensagempor Mário Isa » 17 Mar 2014 13:43

coloque a sua função aki prá gente ver....
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Imagem Desaparece com gtwvw

Mensagempor leandrolinauer » 17 Mar 2014 16:05

Boa tarde Mario.
A função que uso atualmente é exatamente igual a baixado do site, segue abaixo

*****************************
FUNCTION WVW_Paint( nWinNum )
*****************************
Local i_P:=0

If Len( p_aListObjects ) >= nWinNum+1 .And. nWinNum > 0
   aeval( p_aListObjects[nWinNum+1], {|e| eval( e, nWinNum )} )
EndIf
Return 0

********************************
FUNCTION ResetObjects( nWinNum ) //esta correta com o exemplo wvwtest9
********************************
   
while len( p_aListObjects ) < nWinNum+1
      aadd( p_aListObjects, {} )
enddo
p_aListObjects[ nWinNum+1 ] := {}
RETURN .T.

//
// FUNCAO     : AddObjects()
// PARAMETROS : nWindow   - N§ da janela para indentificacao
//              bAction   - Codigo de bloco com a acao a ser realizada quando a
//                          janela voltar de ser minimizada ou voltar ao foco
// DESCRICAO  : Guarda para cada janela as acoes que serao realizadas quando a
//              a janela voltar ao foco ou voltar de ser minimizada
// RETORNO    :
//
***************************************
FUNCTION AddObjects( nWinNum, bAction) //esta correta com o exemplo wvwtest9
                 //nWinNum = janela atual ncurwindow
                 //bAction = função a ser executada wvw_
                 //bnameObj = nome do objeto
***************************************
aadd( p_aListObjects[ nWinNum+1 ], bAction)

RETURN bAction



No entanto esta função faz com que a tela fique piscando, ou seja, mostra todos os objetos inclusive os repassados que é o meu caso.

Neste caso abaixo por exemplo,é apenas uma função que mostra os valores dos cálculos sendo adicionado itens ao pedido, a função NEWSHOWLABEL() é a função que mostra da forma como passo os parametros, usando a função da gtwvw() a qual recebe a os parametros e desenha a tela com a função AddObjects()

AddObjects(nCurWindow,{|nWindow| wvw_drawlabel( nWindow,nTop,nPos,nTxt,nTipe,,nFrente,nFundo,nLet,nF-o_wvwFR,nL-o_wvwLR,500,PROOF_QUALITY,.T.,,)})

Function NewMostraValor(aLucro,aCusto,aQteReal,aVrVenda,aDesconto,aVenda)
Local WReg:=RecNo(),aB:=0,xCom:=0
wVrCusto:=wM_LUCRO:=wVrTotal:=LValorC:=LValorCB:=LValorVV:=LValorBV:=LValorVB:=LValorBB:=w_ITENS:=w_COM:=w_COMb:=0 //zerar os valores para somar novamente
DbGoTop()
While !Eof()
  w_ITENS++
  If Left(COD_MERC,2)#"99"
     aB:=(((Round(&aVenda.,3)/&aQteReal)/&aCusto.)-1)*100
     xValorBB:=Round(&aVrVenda.,3)*100/(100-&aDesconto.)
     xCom    :=Round(&aVrVenda.*(COMISSAO/100),2)
     If ChecaBasico(aB)
        LValorBB:=Round(LValorBB+If(TIPO=="V",xValorBB,-xValorBB),3)
        LValorVB:=Round(LValorVB+If(TIPO=="V",&aVrVenda.,-(&aVrVenda.)),3)
        w_COMb  :=Round(w_COMb+If(TIPO=="V",xCom,-(xCom)),2)
        w_COM   :=Round(w_COM +If(TIPO=="V",xCom,-(xCom)),2)
        LValorCB:=If(TIPO=="V",Round(LValorCB+(&aQteReal.*&aCusto.),3),Round(LValorCB-(&aQteReal.*&aCusto.),3))
     Else
        LValorBV:=Round(LValorBV+If(TIPO=="V",xValorBB,-xValorBB),3)
        LValorVV:=Round(LValorVV+If(TIPO=="V",&aVrVenda.,-(&aVrVenda.)),3)
        w_COM   :=Round(w_COM+If(TIPO=="V",xCom,-(xCom)),2)
     EndIf
     LValorC:=If(TIPO=="V",Round(LValorC+(&aQteReal.*&aCusto.),3),Round(LValorC-(&aQteReal.*&aCusto.),3))
  EndIf
  wVrTotal:=wVrTotal+If(TIPO=="V",(&aVrVenda.),-(&aVrVenda.))
  p_DV:=If(TIPO=="D",TIPO,p_DV)
  DbSkip(1)
End
DbGoTop()
wVrCusto  :=LValorC
w_BASICO  :=Round(If(LValorVB+LValorBB#0,100-((LValorVB/LValorBB)*100),0),4)
w_BASICON :=Round(If(LValorVV+LValorBV#0,100-((LValorVV/LValorBV)*100),0),4)
w_MARGEM  :=Round(((wVrTotal-LValorC)*100)/wVrTotal,3)
w_MLUCRO  :=Round(((wVrTotal/LValorC)*100)-100,2)
If w_CShow=.T.
   NewShowLabel(jR-4,02,MV_C(w_MLUCRO,7)                 ,"ESQUERDA","PRETO"   ,24,10,jR-4,08,If(w_MARGEM<wE_LM,p_CR,If(w_MARGEM>wE_LM,p_CB,p_CM)))
   NewShowLabel(jR-4,10,MV_C(wVrCUSTO,10)                ,"ESQUERDA","VERMELHO",24,10,jR-4,20,"AMARELO")
   NewShowLabel(jR-4,21,TransForm(w_MARGEM,"@E 999.999%"),"ESQUERDA","PRETO"   ,24,10,jR-4,29,If(w_MARGEM<wE_LM,p_CR,If(w_MARGEM>wE_LM,p_CB,p_CM)))
   NewShowLabel(jR-4,30,TransForm(w_COM   ,"@E 9999.99") ,"ESQUERDA","AZUL"    ,24,10,jR-4,35,"AMARELO")
Else
   NewShowLabel(jR-4,02,Space(35),"ESQUERDA","AZUL"    ,24,10,jR-4,36,"AMARELO")
EndIf
NewShowLabel(jR-4,38,TransForm(w_ITENS  ,"@E 9999")      ,"ESQUERDA","AZUL"    ,24,10,jR-4,41,"AMARELO")
NewShowLabel(jR-4,43,TransForm(w_BASICO ,"@E 9999.9999%"),"ESQUERDA","VERMELHO",24,10,jR-4,52,"AMARELO")
NewShowLabel(jR-4,54,TransForm(w_BASICON,"@E 9999.9999%"),"ESQUERDA","VERMELHO",24,10,jR-4,63,"AMARELO")

NewShowLabel(jR-4,jC-14,TransForm(Round(wVrTotal,2),"@E 999,999,999.99"),"ESQUERDA",If(wVrTotal<0,"VERMELHO","VERDE"),24,10,jR-4,jC-2,"AMARELO")


Aí eu pergunto, porque a função esta repassando novamente todos os objetos desenhados anteriormente, claro que precisa ser redesenhada a tela toda, exemplo:
//escolho o cliente
showlabel("nome") // desenho uma vez apenas e é reapresentado pela wvw_paint() ao restaurar a tela.
//adciono itens
showlabel("valortotaltantoagora") //desenho o valor total do pedido e é reapresentado pela wvw_paint()
//adciono outro item e começa os problemas.
showlabel("valortotaltantoagora") //desenho o valor total do pedido e é reapresentado pela wvw_paint(), mas mostra o valor da de cima primeiro, ou seja,
de estava 280,00 e agora ficou 350,00, vai mostrar rapidamente na piscada de tela o valor 280,00 e o ultimo 350,00 e assim por diante, aí imaginei se houve algo que desse para colocar no lugar da addobjects() para ela saber qual objeto é e que se deve incluir na lista ou atualizar um da lista, algo assim.

Confesso que não consegui exito ao detalhar a variavel que recebe a lista de objetos, consegui colocar um nome a cada objeto por exemplo "valortotal", só não consegui localizar e atualizar ele na lista.

aadd( p_aListObjects[ nWinNum+1 ] ,{bNameObj, bAction} ) //onde bnameobj eu coloquei o nome fixo do objeto, agora preciso ao repassar o desenho ele localize este objeto e atualize o baction, aí eu não consegui ainda, se acaso alguem conseguir imaginar algo eu imagino que o redesenho será apenas dos objetos da tela e não haveria os duplicados.
Grato por enquanto.
:)Pos
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Imagem Desaparece com gtwvw

Mensagempor Mário Isa » 17 Mar 2014 21:31

segue a minha função como consegui fazer:

public meusobjetos := {}


a função addmeusobj
Function addmeusobj(qvetobj)

aadd(meusobjetos,qvetobj)

executaobjetos(len(meusobjetos))

return nil


a função executaobjetos
//--->
Function executaobjetos(qual)

do case
case upper(meusobjetos[qual,2]) == 'WVW_DRAWBOXRAISED'
wvw_drawboxraised(meusobjetos[qual,3],meusobjetos[qual,4],meusobjetos[qual,5],meusobjetos[qual,6],meusobjetos[qual,7])
case upper(meusobjetos[qual,2]) == 'WVW_DRAWIMAGE'
wvw_drawimage(meusobjetos[qual,3],meusobjetos[qual,4],meusobjetos[qual,5],meusobjetos[qual,6],meusobjetos[qual,7],meusobjetos[qual,8])
case upper(meusobjetos[qual,2]) == 'WVW_DRAWLABEL'
wvw_drawlabel(meusobjetos[qual,3],meusobjetos[qual,4],meusobjetos[qual,5],meusobjetos[qual,6],meusobjetos[qual,7],meusobjetos[qual,8],meusobjetos[qual,9],meusobjetos[qual,10],meusobjetos[qual,11],meusobjetos[qual,12],meusobjetos[qual,13],meusobjetos[qual,14] )
endc
return nil


a função wvw_paint
//--->
Function wvw_paint(minhajanela)
local ctvetor := 1

while ctvetor <= len(meusobjetos)
executaobjetos(ctvetor)
ctvetor++
end


e quando eu não quero mais que objetos sejam desenhados a função deletameusobjetos
//--->
Function delemeusobj(o_q)
local ct_vetor := 1
local aonde

if ! '$' $ o_q
while AScan( meusobjetos, {|a| Upper(a[1]) == upper(o_q) } ) > 0
  aonde := AScan( meusobjetos, {|a| Upper(a[1]) == upper(o_q) } )
  meusobjetos := deletavetor(meusobjetos,aonde)
end
else
o_q := subs(o_q,2)
while AScan( meusobjetos, {|a| upper(o_q) $  Upper(a[1]) } ) > 0
  aonde := AScan( meusobjetos, {|a| Upper(a[1]) == upper(o_q) } )
  meusobjetos := deletavetor(meusobjetos,aonde)
end
end

return nil


Como eu invoco a função addmeusobj
exemplos:
addmeusobj({'telagetsys','wvw_drawimage',nil,__ab,__ac+__af,__ab+1,__ac+__af+2,7})
addmeusobj({'telacompra','wvw_drawimage',1,14,26,16,29,4}) //enter
addmeusobj({'telacompra','wvw_drawimage',1,14,33,16,40,5}) //esc
addmeusobj('WVW_DrawBoxRaised( , hwgui_li+1,hwgui_ci+1,hwgui_lf-1,hwgui_cf-1 )')


quando eu não quero mais que eles sejam redesenhados eu aplico
delemeusobj - tipo ao sair de uma rotina eu mando que eles não sejam mais redesenhados.
delemeusobj('dbedit-'+procname())
delemeusobj('telacompra')


E, finalmente, a função deletavetor
function deletavetor(vetor_del,n_position)
local __antigo := {}
local ct_vetor := 1

while ct_vetor <= len(vetor_del)
if ct_vetor == n_position
  ct_vetor++
  loop
end
aadd(__antigo,vetor_del[ct_vetor])
ct_vetor++
end

retu __antigo


Espero poder ter ajudado
:-o
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Imagem Desaparece com gtwvw

Mensagempor leandrolinauer » 18 Mar 2014 08:29

Bom dia Mario.
Grato pelo seu exemplo, desta forma como você fez a tela não fica redesenhando objetos sem necessidades, se algum objeto valor que é atualizado ele não desenha mais o valor antigo apenas o ultimo valor?

Vou analisar, e ver se consigo aplicar na função genérica algo que possa tirar as duplicidades de objetos.

Grato
:D
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Imagem Desaparece com gtwvw

Mensagempor Mário Isa » 18 Mar 2014 10:54

Sim Leandro,
pois eu deleto os objetos que não há mais necessidade.

Antes uma correção:
Ali onde eu dei exemplo do addmeusobj exclua aquele que diz:
addmeusobj('WVW_DrawBoxRaised( , hwgui_li+1,hwgui_ci+1,hwgui_lf-1,hwgui_cf-1 )')

pois é preciso ter um apelido para cada grupo de objetos

Tipo:
a) eu entro numa procedure das COMPRAS e ali eu faço:
addmeusobj({'telacompra','wvw_drawimage',1,14,26,16,29,4}) //enter
addmeusobj({'telacompra','wvw_drawimage',1,14,33,16,40,5}) //esc

onde telacompra é um apelido para um grupos de objetos

Daí quando eu saio daquela procedure que entrei, eu faço:
delemeusobj('telacompra')


E assim ele deleta aquele grupo de todos que eu apelidei de telacompra e não fica mais redesenhando.

Mário
-:]
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Imagem Desaparece com gtwvw

Mensagempor Mário Isa » 18 Mar 2014 11:08

Leandro disse:
se algum objeto valor que é atualizado ele não desenha mais o valor antigo apenas o ultimo valor?


no meu caso eu faria:

tipo, na hora do primeiro valor a ser printado

   addmeusobj({'valorprint','WVW_DRAWLABEL' , 1,07,04,ltrim(transform(valor,@EZ 999,99')),nil  ,nil  , RGB(0,0,255),RGB(200,200,200),"Verdana",30,10,700 } )


depois, toda hora q o valor muda eu faço:

delemeusobj('valorprin')
addmeusobj({'valorprint','WVW_DRAWLABEL' , 1,07,04,ltrim(transform(valor,@EZ 999,99')),nil  ,nil  , RGB(0,0,255),RGB(200,200,200),"Verdana",30,10,700 } )


:%
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Imagem Desaparece com gtwvw

Mensagempor leandrolinauer » 05 Jun 2014 15:11

Boa tarde a todos.
Após um tempo e vários testes, consegui eliminar o problema do redesenho dos objetos, segue abaixo como fiz.
Lembrando que usei a mesma função original que peguei no fórum, fiz apenas uma modificação para nomear os objetos, o processo esta detalhado para melhor compreensão, não adaptei para uma programação mais complexa e reduzida.

ADDOBJETOS
//Original
FUNCTION AddObjects( nWinNum, bAction) //esta correta com o exemplo wvwtest9
                 //nWinNum = janela atual ncurwindow
                 //bAction = função a ser executada wvw_
   aadd( p_aListObjects[ nWinNum+1 ], bAction)
RETURN .T.

//Modificada
FUNCTION AddObjects( nWinNum, bAction, bNameObj) //esta correta com o exemplo wvwtest9
                 //nWinNum = janela atual ncurwindow
                 //bAction = função a ser executada wvw_
           //bnameObj = nome do objeto
***************************************
bNameObj:=If(bNameObj=NIl,Str(nWinNum+1,2),bNameObj)
nOk=.F.
If Len(p_aListObjects) >= 1   //só entra se tiver objetos para redesenho
   iK:=1
   While iK <= Len(p_aListObjects) //corre a matriz e verifica o conteudo
        If Len(p_aListObjects[iK]) > 0
           iK2:=1
           While iK2 <= Len(p_aListObjects[iK])
                If !ChkSoNumero(p_aListObjects[iK,iK2][1]) .And. !ChkSoNumero(bNameObj)
               If p_aListObjects[iK,iK2][1] == bNameObj // se encontrou o objeto
                       p_aListObjects[ iK,iK2 ][2] := bAction  //substituiu a ação
                       nOk:=.T. //marca que encontrou
                   EndIf   
           EndIf
                iK2++
           End
        EndIf 
        iK++
   End
EndIf 
If nOK=.F. //se nao encontrado o objeto, cria novo
   Aadd( p_aListObjects[ nWinNum+1 ] ,{bNameObj, bAction} ) //adciona a janela ao nome do objeto mais a acao
EndIf

RETURN .T.


wvw_paint()

//ORIGINAL
FUNCTION WVW_Paint( nWinNum)
*****************************
   If Len( p_aListObjects ) >= nWinNum+1 .And. nWinNum > 0 //ver se soluciona
      aeval( p_aListObjects[nWinNum+1], {|e| eval( e, nWinNum )} )
   EndIf

RETURN .T.

//MODIFICADA
FUNCTION WVW_Paint( nWinNum)
*****************************
   If Len( p_aListObjects ) >= nWinNum+1 .And. nWinNum > 0 //ver se soluciona
      aeval( p_aListObjects[nWinNum+1], {|e| eval( e[2], nWinNum )} )
   EndIf
RETURN .T.



Quanto a ResetObjs, não precisou ser modificada, visto que ela apaga todos os objetos porque só uso para finalizar a tela.
Para usar basta chamar a função como o exemplo abaixo como eu uso.

NewShowLabel()
.....//uma parte do codigo apenas
AddObjects(nCurWindow,{|nWindow| wvw_drawlabel(   nWindow,nTop,nLft,nTxt,TA_LEFT,,nFrente,nFundo,"ARIAL",nF-o_wvwFR,nL-o_wvwLR,500,PROOF_QUALITY,.T.,,)},nObj)
.....
Return .t.


Onde nObj é o nome do objeto que passo na função, como eu criei uma função genérica para desenhos que chama o codigo acima, passo como parametro o nome do objeto, exemplo:
vou mostrar o valor total

NewShowLabel(linha,coluna,wvrtotal,"ESQUERDA","VERMELHO",24,10,linha,coluna,"AMARELO",,"WVRTOTAL")

Desta forma toda vez que altero o valor da variavel wvrtotal e redesenho, por esta função acima, ela vai com o nome wvrtotal indicando que este objeto se existir será substituido pelo novo valor eliminando assim varios objetos na mesma posição.

Caso alguem se interessar e alterar, poste modificações para auxilio a todos.
Grato pela ajuda de todos.
Um Harbraço a todos.
:xau
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Imagem Desaparece com gtwvw

Mensagempor Mário Isa » 21 Ago 2018 16:12

Boa Tarde.
E aí Leandro ?
Ainda trabalhando com WVW ?

Meu problema é :
Quando minimizo a janela e, ao voltar a ela, seja por Mouse ou ALT+TAB o foco volta na janela principal e não na última aberta.

Você tb tem esse problema ??

Mário
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Próximo



Retornar para Outras Bibliotecas Visuais e IDEs

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 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