{- Coloque uma StatusBar no form.
- Adicione dois paineis na StatusBar (propriedade Panels).
- Ajuste as propriedades do primeiro painel conforme abaixo:
Style = psOwnerDraw
Width = 150
- Coloque uma ProgressBar no form e mude sua propriedade
Visible para false.
- No evento OnDrawPanel da StatusBar digite o código abaixo:}
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
const Rect: TRect);
begin
// Se for o primeiro painel...
if Panel.Index = 0 then
begin
// Ajusta a tamanho da ProgressBar de acordo com o tamanho do painel
ProgressBar1.Width := Rect.Right - Rect.Left +1;
ProgressBar1.Height := Rect.Bottom - Rect.Top +1;
// Pinta a ProgressBar no DC (device-context) da StatusBar
ProgressBar1.PaintTo(StatusBar.Canvas.Handle, Rect.Left, Rect.Top);
end;
end;
//- Coloque um Button no form
//- Digite no evento OnClick do Button o código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var I: integer;
begin
for I := ProgressBar1.Min to ProgressBar1.Max do
begin
{ Atualiza a posição da ProgressBar }
ProgressBar1.Position := I;
{ Repinta a StatusBar para forçar a atualização visual }
StatusBar1.Repaint;
{ Aguarda 50 milisegundos }
Sleep(50);
end;
// Aguarde 500 milisegundos
Sleep(500);
// Reseta (zera) a ProgressBar
ProgressBar1.Position := ProgressBar1.Min;
// Repinta a StatusBar para forçar a atualização visual
StatusBar1.Repaint;
end;
{- Execute e clique no botão para ver o resultado.
Observações:
Com um pouco de criatividade podemos fazer outras coisas interessantes usando o evento OnDrawPanel da StatusBar.
}
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário