DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Gustavo Vieira Matos
 

País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 93
 Postado em: 14/9/2010 10:43:37 AM

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.............
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 14/9/2010 11:03:07 AM
Você pode usar um Progressbar ou um Gauge. a diferença entre eles é que o Gauge mostra a porcentagem e o Progressbar nao. você encontra o gauge na aba Samples no Delphi 7. 

 
Gustavo Vieira Matos
 

País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 93
 Postado em: 14/9/2010 11:27:43 AM
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

 
Facc
 
 


País: Brasil
Estado: SP
Cidade: Cerquilho
Mensagens: 288
 Postado em: 14/9/2010 11:32:00 AM
Voce faz o update atravez de um while? Se positivo, vai incrementando o progress nesse while

 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 14/9/2010 11:38:58 AM
é isso ai você utiliza a propriedade position:=100 por exemplo:

#Código


progressbar1.position:=1;
//inicio dos comandos para atualizaçào das tabelas
.
.
.

///proxima tabela a ser atualizada.
progressbar1.position:=5;.
.
.
.
//e assim por diante.


Abraços

 
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 14/9/2010 1:35:56 PM
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


 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 14/9/2010 2:09:24 PM

Citação:
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.

 
Emerson
 
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 14/9/2010 4:07:42 PM

Citação:

Citação:
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?








 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 15/9/2010 9:29:46 AM

Citação:

Citação:

Citação:
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.

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03