Olá Janio,
Desculpe a demora em responder. Mas vamos ao que interessa :
A GTWVW não tem processo de redesenho automático de alguns elementos gráficos. Sendo assim, para imagens, boxes, labels, etc. precisamos "lembrar" a GTWVW para efetuar o redesenho quando a tela for minimizada/restaurada ou alguma coisa ficar por cima da tela anterior.
Dessa forma, temos que definir algumas funções para informar a GTWVW o quê e quando redesenhar. Eu faço da seguinte maneira :
Defino no início do meu programa uma variável pública que vai guardar todos os elementos gráficos que preciso para redesenhar :
Defino também a taxa para atualização do redesenho automático :
e uma função para iniciar e guardar os elementos gráficos :
Código: Selecionar todos
*********************************
FUNCTION LIMPAOBJETOS( nWindow )
*********************************
while len( _aObjetos ) < nWindow+1
aadd( _aObjetos, {} )
enddo
_aObjetos[ nWindow+1 ] := {}
RETURN .T.
***************************************
FUNCTION ADDOBJETOS( nWindow, bAction )
***************************************
aadd( _aObjetos[ nWindow+1 ], bAction )
RETURN .T.
Quando preciso de guardar um box, por exemplo, inicializo a posição da janela criada e guardo o box como um code block
Código: Selecionar todos
nWin2 := AbreJanela("Confirmação de Sangria dos Caixas", 06, 01, 30, 96)
LimpaObjetos(nWin2)
AddObjetos( nWin2, {|_win| wvw_drawroundrect( _win, 04,01,21,94, {-6,-2,+4,+2}, 10, 10 ) } )
A função AbreJanela() é só um jeito diferente de chamar a função wvw_nOpenWindow().
Os gets, são apenas boxes contornando o espaço de edição reservado da variável. Precisamos então definir uma forma de, após montar toda a tela de get, desenhar os boxes e informar a GTWVW que eles tem que ser redesenhados. Dessa forma, criei um define chamado READ_GETS, que voce usa assim :
Código: Selecionar todos
@ 10, 01 say "Codigo do cliente :" get mcodcli picture "9999"
@ 12, 01 say " Razao Social :" get mrazao picture "@!"
@ 14, 01 say " Nome Fantasia :" get mfantasia picture "@!"
READ_GETS( nCursor, nWin )
nCursor = Estilo do cursor, geralmente lido por setcursor()
nWin = Numero da janela retornado pela wvw_nOpenWindow()
e o define :
Código: Selecionar todos
#define READ_GETS( c, w ) AddObjetos( w, {|nWindow| x := nWindow, aEval( GetList, {|oGet| WVW_DrawBoxGet( x, oGet:Row, oGet:Col, Len( Transform( oGet:VarGet(), oGet:Picture ) ) ) } ) } ) ;;
setcursor(1); read; setcursor(c)
Lembre-se que dessa forma, a variável getlist deve ser, no mínimo, private.
Espero que tenha ficado claro.
Qualquer dúvida, estou a disposição