Autor
Mensagem
Olá a todos................
Estou criando uma pequena aplicação com Delphi7 e Sql Server 2005......
No caso vou fazer um procedimento que atualiza minhas tabelas (uma por vez) por meio de outras tabelas(em outra base)....Não vejo dificuldade para fazer o procedimento,porem quero colocar uma tela de "Status de Processamento".Já que sei que esse procedimento pode demorar um pouco de acordo com a quantidade de registros......................
Estou precisando de uma luz para criar essa tela de "status de processamento",alguem tem uma dica de qual componente.............
max deve conter o total de registros que você irá copiar (ou o número total de incrementos que seu procedimento sofrerá).
use position somente para 'zerar' o progresso.
por exemplo:
pgBar.Max := Dataset.RecordCount + 1; // total de registros ('passagens' do loop)
pgBar.Position := 0; // posiciona a marcacao do progresso no inicio da barra
pgBar.Step := 1; // indica que o passo será de 1 unidade (registro)
Dataset.First;
while not Dataset.Eof do
begin
Application.ProcessMessages; // para não congelar a tela
// faça o que tem que fazer
// [...]
//
pgBar.StepIt; // incrementa a barra
Dataset.Next; // vai para o próximo registro
end
use position somente para 'zerar' o progresso.
por exemplo:
pgBar.Max := Dataset.RecordCount + 1; // total de registros ('passagens' do loop)
pgBar.Position := 0; // posiciona a marcacao do progresso no inicio da barra
pgBar.Step := 1; // indica que o passo será de 1 unidade (registro)
Dataset.First;
while not Dataset.Eof do
begin
Application.ProcessMessages; // para não congelar a tela
// faça o que tem que fazer
// [...]
//
pgBar.StepIt; // incrementa a barra
Dataset.Next; // vai para o próximo registro
end
Citação:
Ai Leonardo obrigado pela Luz....
Ai Leonardo obrigado pela Luz....
Porem me vejo obrigado a usar o progress...
pois uso uma versão Stand... do Delphi
mais uma dica com o progress..vou usar atualizar a propriedade position?
e max:100 min:0
A função do max é bem simples: Se você colocar o max:=50 por exemplo o seu progres bar nao ira passar da posisão 50. Resumindo o max determina o tamanho do seu progresso. como nosso max esta como 50 o position quando atingir a posicição 100 no caso "100%" o progresbar ira aparecer com 50% preenchido pois a sua posição máxima é 50. Mas mesmo assim nào quer diser que o seu progresbar esta somente com a metade preenchida mas sim que ele ira contar apenas 50 registros. É como o Emerson destacou, mas eu nunca utilizei o método mencionado por ele, sempre fiz meus sistemas setando max como 100 e administrando o position pelo sistema.
Citação:
A função do max é bem simples: Se você colocar o max:=50 por exemplo o seu progres bar nao ira passar da posisão 50. Resumindo o max determina o tamanho do seu progresso. como nosso max esta como 50 o position quando atingir a posicição 100 no caso "100%" o progresbar ira aparecer com 50% preenchido pois a sua posição máxima é 50. Mas mesmo assim nào quer diser que o seu progresbar esta somente com a metade preenchida mas sim que ele ira contar apenas 50 registros. É como o Emerson destacou, mas eu nunca utilizei o método mencionado por ele, sempre fiz meus sistemas setando max como 100 e administrando o position pelo sistema.
Citação:
Ai Leonardo obrigado pela Luz....
Ai Leonardo obrigado pela Luz....
Porem me vejo obrigado a usar o progress...
pois uso uma versão Stand... do Delphi
mais uma dica com o progress..vou usar atualizar a propriedade position?
e max:100 min:0
A função do max é bem simples: Se você colocar o max:=50 por exemplo o seu progres bar nao ira passar da posisão 50. Resumindo o max determina o tamanho do seu progresso. como nosso max esta como 50 o position quando atingir a posicição 100 no caso "100%" o progresbar ira aparecer com 50% preenchido pois a sua posição máxima é 50. Mas mesmo assim nào quer diser que o seu progresbar esta somente com a metade preenchida mas sim que ele ira contar apenas 50 registros. É como o Emerson destacou, mas eu nunca utilizei o método mencionado por ele, sempre fiz meus sistemas setando max como 100 e administrando o position pelo sistema.
não é isso, não, Leonardo.
se o MAX estiver no 50 (máximo 50), o position chegará apenas a 50 (que é o máximo).
então, estando o max = 50:
- se o position estiver igual a 10, a barra estará com 20% do preenchimento;
- se o position estiver igual a 25, a barra estará com 50% do preenchimento;
- se o position estiver igual a 42, a barra estará com 84% do preenchimento; e, finalmente
- se o position estiver igual a 50, a barra estará com 100% do preenchimento
então, imaginando que você têm uma tabela com 650 registros, você coloca o MAX = 650. daí, ao varrer um laço, teremos a seguinte situação, supondo que o numero do registro determina o numero do position:
- estando no registro 1, a barra estará com 0.15% do preenchimento;
- estando no registro 25, a barra estará com 3.85% do preenchimento;
- estando no registro 130, a barra estará com 20% do preenchimento;
- estando no registro 395, a barra estará com 60.77% do preenchimento;
- estando no registro 553, a barra estará com 85.08% do preenchimento;
e assim por diante...
ou seja: o max deve ser igual ao número de 'passagens' do laço e o position deverá ser incrementado a cada iteração do laço.
expliquei ou compliquei?
Citação:
não é isso, não, Leonardo.
se o MAX estiver no 50 (máximo 50), o position chegará apenas a 50 (que é o máximo).
então, estando o max = 50:
- se o position estiver igual a 10, a barra estará com 20% do preenchimento;
- se o position estiver igual a 25, a barra estará com 50% do preenchimento;
- se o position estiver igual a 42, a barra estará com 84% do preenchimento; e, finalmente
- se o position estiver igual a 50, a barra estará com 100% do preenchimento
então, imaginando que você têm uma tabela com 650 registros, você coloca o MAX = 650. daí, ao varrer um laço, teremos a seguinte situação, supondo que o numero do registro determina o numero do position:
- estando no registro 1, a barra estará com 0.15% do preenchimento;
- estando no registro 25, a barra estará com 3.85% do preenchimento;
- estando no registro 130, a barra estará com 20% do preenchimento;
- estando no registro 395, a barra estará com 60.77% do preenchimento;
- estando no registro 553, a barra estará com 85.08% do preenchimento;
e assim por diante...
ou seja: o max deve ser igual ao número de 'passagens' do laço e o position deverá ser incrementado a cada iteração do laço.
expliquei ou compliquei?
Citação:
A função do max é bem simples: Se você colocar o max:=50 por exemplo o seu progres bar nao ira passar da posisão 50. Resumindo o max determina o tamanho do seu progresso. como nosso max esta como 50 o position quando atingir a posicição 100 no caso "100%" o progresbar ira aparecer com 50% preenchido pois a sua posição máxima é 50. Mas mesmo assim nào quer diser que o seu progresbar esta somente com a metade preenchida mas sim que ele ira contar apenas 50 registros. É como o Emerson destacou, mas eu nunca utilizei o método mencionado por ele, sempre fiz meus sistemas setando max como 100 e administrando o position pelo sistema.
Citação:
Ai Leonardo obrigado pela Luz....
Ai Leonardo obrigado pela Luz....
Porem me vejo obrigado a usar o progress...
pois uso uma versão Stand... do Delphi
mais uma dica com o progress..vou usar atualizar a propriedade position?
e max:100 min:0
A função do max é bem simples: Se você colocar o max:=50 por exemplo o seu progres bar nao ira passar da posisão 50. Resumindo o max determina o tamanho do seu progresso. como nosso max esta como 50 o position quando atingir a posicição 100 no caso "100%" o progresbar ira aparecer com 50% preenchido pois a sua posição máxima é 50. Mas mesmo assim nào quer diser que o seu progresbar esta somente com a metade preenchida mas sim que ele ira contar apenas 50 registros. É como o Emerson destacou, mas eu nunca utilizei o método mencionado por ele, sempre fiz meus sistemas setando max como 100 e administrando o position pelo sistema.
não é isso, não, Leonardo.
se o MAX estiver no 50 (máximo 50), o position chegará apenas a 50 (que é o máximo).
então, estando o max = 50:
- se o position estiver igual a 10, a barra estará com 20% do preenchimento;
- se o position estiver igual a 25, a barra estará com 50% do preenchimento;
- se o position estiver igual a 42, a barra estará com 84% do preenchimento; e, finalmente
- se o position estiver igual a 50, a barra estará com 100% do preenchimento
então, imaginando que você têm uma tabela com 650 registros, você coloca o MAX = 650. daí, ao varrer um laço, teremos a seguinte situação, supondo que o numero do registro determina o numero do position:
- estando no registro 1, a barra estará com 0.15% do preenchimento;
- estando no registro 25, a barra estará com 3.85% do preenchimento;
- estando no registro 130, a barra estará com 20% do preenchimento;
- estando no registro 395, a barra estará com 60.77% do preenchimento;
- estando no registro 553, a barra estará com 85.08% do preenchimento;
e assim por diante...
ou seja: o max deve ser igual ao número de 'passagens' do laço e o position deverá ser incrementado a cada iteração do laço.
expliquei ou compliquei?
Emerson o que eu quis diser e acho que nao fui claro, é que se setar o max:=50 a barra de progresso irá ser apresentada na tela com todo o progress preenchido, e nao com somente 50% preenchido. Mas foi muito bom ter lido seu post pois nunca tinha pensado neste caso de usar o max como a quantodade total de registros, pois eu realizava este processo nanipulando o possition, e nao max, eu max eu nunca mechi com ele. Mas valeu mesmo.







