PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → WB - Como atualizar um componente implementado popups no Webdev?
WB - Como atualizar um componente implementado popups no Webdev?
Iniciado por BOLLER ADRIANO, ago., 12 2016 11:11 PM - 1 resposta
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em agosto, 12 2016 - 11:11 PM
Prezados,

Para atualizar um componente implementado popups no Webdev segue alguns passos:

PopupClose(p_pagina_popup) posso fazer:
TableDeleteAll(<pagina master>.Table_1)
TableDisplay(<pagina master>.Table_1,taReExecuteQuery)

Voltando ao seu método de abrir uma nova página que chamarei de PaginaAlterarEquipamento.

Como você faz para fechar essa página?

PageDisplay(PaginaRelacaoEquipamentos)?

Sabe qual o primeiro evento que é executado depois dessa instrução?

No help encontra esta explicação e respetiva sequência de execução:

The following processes are run when the page is displayed:
•Opening code of the page (Initialization of ...)
•Initialization code of controls
•Display the page in the browser
•Javascript code associated with the page and the controls
•WLanguage code following the call to PageDisplay (if any)

No evento Load (onload) of PaginaRelacaoEquipamentos (browser) coloque:
AtualizarPaginaRelacaoEquipamentos()
Criar uma Local Procedure server e não browser como explicou que está fazendo, com o nome AtualizarPaginaRelacaoEquipamentos()
Coloque nessa procedure o código para atualizar a pagina PaginaRelacaoEquipamentos.

Execute PaginaRelacaoEquipamentos e acesse PaginaAlterarEquipamento.

Faça uma alteração, encerre esta segunda página e pode observar que PaginaRelacaoEquipamentos foi atualizada.

Para terminar: não vejo vantagem em abrir PaginaAlterarEquipamento numa nova página do navegador.

Isso pode fazer com o usuário abra varias páginas.

Recorra à função ExecuteProcess() com a constante trtClick.

Coloque um botão invisível, por exemplo BTN_AtualizarEquipamentos. Tratando-se de um botão, já temos duas áreas para incluir código browser ou servidor. Nesta última (Click of BTN_AtualizarEquipamentos (server) coloque AtualizarPaginaRelacaoEquipamentos()

Só falta executar o evento Click do botão. No evento Load (onload) of PaginaRelacaoEquipamentos (browser), em vez de chamar a server procedure, coloque ExecuteProcess(BTN_AtualizarEquipamentos, trtClick ).

Este método serve precisamente para os casos em que nos deparamos com a necessidade de invocar uma server procedure num evento de código browser. É o que acontece consigo, precisa de uma server procedure porque necessita de executar, entre outras, a função HExecuteQuery() que, como você disse e muito bem, só pode ser executada do lado do servidor.

Já agora uma dica: ative o ajax no código de servidor do botão.

Consulte estes links:
http://help.windev.com/en-US/…
http://help.windev.com/en-US/…
http://help.windev.com/en-US/…

Para perder o foco coloque o nome do table = -1 e use variáveis booleanas.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em agosto, 12 2016 - 11:27 PM
Prezados,

Aqui segue um breve exemplo de como trabalhar com popups.

Crie uma page normal no webdev e coloque um controle CELL:





Após colocar os controles a tela deve ter esse aspecto, note que o CELL é a área onde fica os controles inclusive os botões:





No botão [...] é onde vamos nos concentrar é ele que vai chamar o popup





//CODIGO DO BOTAO [...]

Limpar()

DesmarcaTudo()

ConvenioAdministrador_PopupUsuario = gnConvenioAdministrador // AQUI REPASSA PARA A VARIAVEL GLOBAL O FILTRO

TableDisplay(TABLE_QRY_Select_Usuarios,taInit) //AQUI APLICA O FILTRO

PopupDisplay(POPUP_Usuario,popupCenter,780,350) // AQUI OCORRE A ABERTURA DA POPUP


Para colocar um popup em uma página use esse controle que se encontra na barra de ferramentas





Você pode incluir n Popup cada uma deve ter um nome único para poder executar o comando PopupDisplay(...





No caso o Popup_Usuario sendo uma vez colocado ao abrir a page o popup jápossui dados no caso de uma tablelist, mesmo que não tenha chamado os dados já devem estar carregados. E com os controles booleanos e a atualização dos dados para fazer os filtros e trazer apenas os dados necessários.





Utilizando uma query ou uma table programada alimente os dados na tablelist





Aqui é o código que tem na tablelist, note o comando na última linha.








Código:

MySource.pCodigoConvenio = ConvenioAdministrador_PopupUsuario

gbControleInicializaPopUpUsuarios = True


PopupClose()

IF gbControleInicializaPopUpUsuarios = False // AQUI ESTA O SEGREDO VARIAVEL BOOLEANA

IF ConvenioAdministrador_PopupUsuario > 0 THEN // AQUI ESTA O SEGREDO VARIAVEL BOOLEANA

EDT_E_mail = TABLE_QRY_Select_Usuarios[TABLE_QRY_Select_Usuarios].COL_Des_email_usuari_web
EDT_Matricula = TABLE_QRY_Select_Usuarios[TABLE_QRY_Select_Usuarios].COL_Cod_matric_autorz
gnSeqAutorzUsuario = TABLE_QRY_Select_Usuarios[TABLE_QRY_Select_Usuarios].COL_SeqAutorz
gsAcao = "Alterar"
//Remove o focus
//-- TABLE_QRY_Select_Usuarios..Value = -1 // remove o focus

IF gnSeqAutorzUsuario <> "" THEN

ok is boolean = BuscaUsuario(True) // AQUI ESTA O SEGREDO VARIAVEL BOOLEANA

BuscarUsuarioAutorizacao()

IF ok = True
CamposDesbloquear()
EDT_Nome_completo..BrushColor = White
EDT_Telefone..BrushColor = White
EDT_Matricula..BrushColor = White
EDT_E_mail..BrushColor = White
EDT_CentroCusto..BrushColor = White
EDT_SenhaAcesso..BrushColor = White
EDT_SenhaAcessoConfirma..BrushColor = White
EDT_SenhaPagamento..BrushColor = White
EDT_SenhaPagamentoConfirma..BrushColor = White
EDT_Telefone..BrushColor = White
END

END

END

ConvenioAdministrador_PopupUsuario = 0

END

gbControleInicializaPopUpUsuarios = False

TABLE_QRY_Select_Usuarios..Value = -1 // IMPORTANTE: Aqui remove o focus do tablelist


Espero ter conseguido explanar sobre o assunto e mostrar o funcionamento de um popup no webdev.

Note que quando clicar na linha do Tablelist como os dados são atualizados da page principal.

OBS.: O POPUP ESTA SEMPRE ABERTO, APENAS VOCÊ OCULTA ELE,
LEMBRE-SE DISSO E USE O DEBUG PARA ENTENDER O FLUXO DO CÓDIGO.

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, agosto, 13 2016 - 12:10 AM