Para fazermos uma aplicação de exemplo, insira no form de um novo projeto:
3 Componentes TLabel - Paleta Standard;
1 Componente ProgressBar - Paleta Win32;
1 Componente TGauge - Paleta Samples;
1 Componente TTimer – Paleta System;
1 Componente TButton – Paleta Standard;
2 Componentes TRadioButton – Paleta Standard;
Mude a propriedade Caption do formuláo para Barras de Progresso. Mude também a propriedade Interval do componente TTimer para 100 (ou menos) e sua propriedade Enabled para False:
Figura 1 - Interface da aplicação de exemplo
Ainda com o TTimer, no seu evento OnTimer, adicione o seguinte código:
Para finalizarmos, no evento OnClick do TButton, faça:procedure TForm1.Timer1Timer(Sender: TObject); begin //Se o RadioButton1 estiver marcado executa o código abaixo if RadioButton1.Checked then begin label2.Caption := inttostr(ProgressBar1.Position)+ '%'; progressbar1.position := progressbar1.position+5; if progressbar1.position = 10 then begin Label1.caption:='Carregando Telas: '; //escreva o que quiser label1.Repaint; end; if progressbar1.position = 35 then begin label1.caption:='Carregando as Tabelas'; label1.Repaint; end; if progressbar1.position = 85 then begin label1.caption:='Finalizando'; label1.Repaint; end; end; //FIM IF RADIOBUTTON1 //Se o RadioButton2 estiver marcado executa o código abaixo if RadioButton2.Checked then begin gauge1.progress := gauge1.progress+5; if gauge1.progress = 10 then begin Label3.caption:='Carregando Telas: '; //escreva o que quiser label3.Repaint; end; if gauge1.progress = 35 then begin label3.caption:='Carregando as Tabelas'; label3.Repaint; end; if gauge1.progress = 85 then begin label3.caption:='Finalizando'; label3.Repaint; end; end; //FIM IF RADIOBUTTON2 end;
Como você pode perceber, esta rotina simplesmente aumenta a posição de uma das barras de progresso em um intervalo de tempo pré definido, o que costuma ser utilizado em telas de Splash e também formuláos de consultas demoradas. Porém em operações de processamento demorados e que se sabe a quantidade de execuções (como percorrer os registros de uma tabela, por exemplo), o correto é fazermos:ProgressBar1.Position := 0; Gauge1.Progress := 0; Timer1.Enabled := True; if RadioButton1.Checked then while ProgressBar1.Position < 100 do Application.ProcessMessages; if RadioButton2.Checked then while Gauge1.Progress < 100 do Application.ProcessMessages; Timer1.Enabled := False;
Até a próxima!//atribuir o valor máximo /qtde de processamento Gauge1.MaxValue := DataSet.RecordCount; while not DataSet.Eof do begin //processamento dos dados DataSet.Next; //ajustar a posição da barra de progresso Gauge1.Progress := Gauge1.Progress; end;
0 comentários:
Postar um comentário