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?
Tem como desabilitar o Carregando em um botão específico?
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?
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.
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.
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);
}
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?
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: