Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Desativar tela "Carregando" Boa noite galera. Preciso fazer um processo que será demorado, após clicar no botão processar, e para o usuário aparece a tela de Carregando por muito tempo. Para evitar que o usuário ache que travou gostaria de, somente no botão que vou fazer o processo, desabilitar essa tela de "Carregando" para poder fazer tipo uma mensagem de “Registros Lidos:”. Tem como desabilitar o Carregando ...
ES
Desativar tela "Carregando"  
Boa noite galera. Preciso fazer um processo que será demorado, após clicar no botão processar, e para o usuário aparece a tela de Carregando por muito tempo. Para evitar que o usuário ache que travou gostaria de, somente no botão que vou fazer o processo, desabilitar essa tela de "Carregando" para poder fazer tipo uma mensagem de “Registros Lidos:”.

Tem como desabilitar o Carregando em um botão específico?

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (6)


NR

Acredito que o maior problema no seu caso não seja nem a questão do carregando. Como você planeja ir atualizando o número de registros lidos? Você já tem algo pronto nesse sentido?
ES

Nataniel, estava pensando em fazer via javascript a alteração do value de um componente TEntry (por exemplo) a cada interação ou usar um TProgressbar mesmo e ir mudando o setValue através do sendData.

NR

Aconselho a fazer um teste básico antes, pode ser com sleep mesmo. Acho que não é tão simples. Geralmente os comandos de saída, como javascript, ficam no buffer e só são executados após o término do processamento. Até tem algumas instruções para "forçar" a saída do buffer, mas nem sempre isso funciona.
ES

Já tentei fazer o teste com o sleep (abaixo a função) mas como ele chama o "Carregando" parece que o que fica no fundo bloqueia atualização até finalizar o for... quando termina tanto a alteração do valor de ID e a impressões de tela (echo) aparecem.


public function onTeste($param){
for($i = 1; $i <= 10; $i++){
TScript::create("$("[name='id']").val('".$i."');");
echo 'Lidos: '.$i.'

';
sleep(1);

}
ES

Nataniel acho que não vai rolar mesmo...

Fiz um teste chamando essa função do changeAction de um TDBCombo, que aparentemente não chama o "Carregando", e mesmo assim não faz a atualização de tela a cada TScript::create. Somente no final do for que atualiza a a tela.

Tem alguma ideia de como posso fazer isso?
NR

O ideal talvez seja usar websockets ou SSE para isso, mas de uma maneira mais simples você poderia escrever o status atual em um arquivo txt no processo principal e chamar outra rotina de tempos em tempos para consultar esse status e atualizar a tela.

Com a função addFunction no botão de Salvar você poderia chamar essa outra rotina para consultar o status:
  1. <?php
  2. $btn_onsave->addFunction("....");
  3. ?>