Página 1 de 1

Release control em Window Panel

Enviado: 10 Mar 2021 12:15
por Heero
Prezados, boa tarde!

Estou com um probleminha chato e gostaria do auxílio de vocês. Ao dar RELEASE CONTROL em algum elemento dentro de um window panel, o componente realmente é removido, mas fica uma espécie de sujeira na janela. Gravei um vídeo para deixar em evidência. Para melhor visualização, peço por gentileza pra ver em 720p.

Ao clicar no botão OK e na caixa dialogo Sim ou Não, a função vnp40800ZeraCampos() é chamada.

https://drive.google.com/file/d/1N6Ihcw ... SkWUT/view

No vídeo estou usando wine, mas já testei em Windows e o comportamento é o mesmo.

Este é o código no qual estou faço release control nos componentes dentro do panel.

Código: Selecionar todos

/*
* Zera os campos para que o usuário possa digitar outro caixa
*/
FUNCTION vnp40800ZeraCampos()
    LOCAL oElement, indice := 1
    
    linha := 0

    SetProperty(wwin,'getnrcaixa','value', 0)
    SetProperty(wwin,'getnrorca','value', 0)
    SetProperty(wwin,'gettotal','value', 0)
    SetProperty(wwin,'getnrcaixa','enabled', .T.)
    SetProperty(wwin,'getnrorca','enabled', .T.)

    IF! EMPTY(wcampos)
        FOR EACH oElement iN wcampos
            lbl_tpnum := 'lbl' + StrZero(oElement[1],2,0) + '_descricao'
            get_tpnum := 'get' + StrZero(oElement[1],2,0)

            RELEASE CONTROL &lbl_tpnum OF &wwinPanel
            RELEASE CONTROL &get_tpnum OF &wwinPanel
            indice++
        NEXT
        wcampos := {}
    ENDIF

    SETFOCUS getnrcaixa OF &wwin
RETURN
A pergunta é, alguém já viu ou passou por isso?

Release control em Window Panel

Enviado: 10 Mar 2021 12:24
por Heero
Completando: Estou usando MiniGui Extended

Release control em Window Panel

Enviado: 10 Mar 2021 12:47
por JoséQuintas
Já vi muito disso em GTWVG.... rs

Talvez falte um refresh após soltar o scroll.
A impressão é de que na janela tem o edit na posição anterior e atual ao mesmo tempo.

Release control em Window Panel

Enviado: 18 Mar 2021 21:59
por Heero
Obrigado pela resposta José Quintas!

Agora a questão é, como faço pra dar refresh em um Window do tipo panel? hahaha

Até onde eu sei, só se pode dar refresh em algum elemento de uma janela, tipo um label ou getbox. Neste caso preciso fazer direto na window. Alguém sabe como fazer isso?

Olhei na documentação da minigui e só tem isso no refresh: http://hmgextended.com/files/manual/index.html
<ParentWindowName>.<ControlName>. Refresh

The Refresh method will send a message to Windows that the client area of the window should be repainted.
A definição do window panel está assim:

Código: Selecionar todos

        DEFINE WINDOW &WinName;
            PARENT &ParentName;  
            ROW PanelRow;
            COL PanelCol; 
            WIDTH WindowWidth; 
            HEIGHT WindowHeight;
            VIRTUAL WIDTH WindowVirtualWidth;
            VIRTUAL HEIGHT WindowVirtualHeight;
            ON INIT nil;
            WINDOWTYPE PANEL

        END WINDOW
Obrigado!!

Release control em Window Panel

Enviado: 18 Mar 2021 22:00
por Heero
Ainda estou vendo algum meio para contornar este problema, qualquer resultado posto aqui :)

Release control em Window Panel

Enviado: 19 Mar 2021 14:37
por Nascimento
vc quer dar um release? ou um destroy?

tipo só fechar a janela panel, ou quer realmente apagar o componente?

Release control em Window Panel

Enviado: 19 Mar 2021 20:22
por Heero
Release nos componentes dentro do panel mesmo

Acho que a gambi da vez vai ser fechar o panel e criar outro toda hora.

Release control em Window Panel

Enviado: 19 Mar 2021 22:57
por Heero
Sério? hahahahaha

F**eu... kkkk