Conheça as melhorias da versão 8.0, 8.1, 8.2!
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 Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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. ?>