Application.ProcessMessage

28/01/2006

0

vou tentar explica a situação.

tenho um istema de armazenamento de arquivos que funciona corretamente. so que surgiu um problema, se o arquivo a ser armazenado for muito grande o porcesso demora um pouco.
1º problema eu teria de fazer um progressBar mostrando o andamento do processo senão o usuario fica pensando que travou o sistema.
2º esse sistema tem varias msg e ações logo apos gravar o arquivo, so que nessa demora esta dando erro em tudo que vem depois do codigo de salvar

tentei usar Application.ProcessMessage so que esta dando erro
Build
[Error] Unit_Armazena.pas(184): Undeclared identifier: ´ProcessMessage´
[Fatal Error] PortaArquivos.dpr(9): Could not compile used unit ´Unit_Armazena.pas´
pessoal como posso colcar um progressbar que mostre o curso da gravação e no termino ai sim informar que o arqvuivo foi salvo com sucesso....


Crcam

Crcam

Responder

Posts

28/01/2006

Fx|hand

o certo seria:

Application.ProcessMessages



e outra coisa... pra usar um progressbar, tem q ter em base um Looping...
c vc tiver usando um Loop pra verificar o arquivo... pode fazer o seguinte...

antis de começar a ler o arkivo, ver qual o numero da ultima linha, e colocar na propriedade MAX da progressbar, e depois no loop vc vai adicionando mais 1 no POSITION....

eu prefiro fazer por step....

(na propriedade STEP do progressbar, coloque 1, e depois na programação vc apenas usa a linha -> progressbar1.stepit;)

e tah feito sua pb....

PS: Use o application.processmessages lah no meio do looping... senaum o programa fica travado até terminar as rotinas... =)


agora, sobre o erro, naum tenho ideia pq q tah acontecendo... mais tenta fazer um eskema de Functions... cria ela separada, e tenta rodar apenas xamando elas dps q sair do looping !!! XD

boua sorti ai !


Responder

28/01/2006

Crcam

legal sua dica de fazer separado foi na mosca parou o erro mas eu não entendi bem o lance do progress não tem loop que eu tenha feito

esse é o local onde faz a ação de registrar

procedure TForm_Armazena.ArmazenaArq(Sender: TObject);
begin
if DataSet_deposito.State in [dsedit, dsinsert] Then
DataSet_Deposito.FieldByName(´DataArmaz´).AsString:=(DBEdit_data.Text);
DataSet_Deposito.FieldByName(´categoria´).AsString:=(DBEdit_Categoria.Text);
DataSet_DepositoNomeArq.Value:=(DBEdit_NomArq.Text);
DataSet_depositoext.Value:=(DBEdit_ext.Text);
DataSet_depositoEndOrigem.Value:=(DBEdit_Origem.Text);
DataSet_depositoRef.Value:=(anexo);
DataSet_DepositoDeposito.LoadFromFile(anexo);
Application.ProcessMessages;
DataSet_Deposito.Post;

end;

e depois no btns tem as ações posteriores agora fica a duvida como eu faço o progressbar e no termino a ação registro ele libera o resto


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar