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....
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
Curtir tópico
+ 0
Responder
Posts
28/01/2006
Fx|hand
o certo seria:
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 !
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
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
Clique aqui para fazer login e interagir na Comunidade :)