![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Ayuda para un principiante
Alguien sabe como:
¿cómo puedo hacer que un ProgressBar suba y baje entre 0 y 100 de 1 en 1 mostrando cada número en una label? Aqui dejo mi codigo que empleé, el problema que tiene es que se sube al 100 inmediatamente y no de uno en uno y el label solo aparece con el Max y el Min. ( osea que solo cambia dos veces de 100 a 0 y no gradualmente ). procedure TF_O.B_1Click(Sender: TObject); var i: Integer; begin with PB_1 do begin PB_1.StepBy(1); Showmessage(''); for i := Min to Max do L_1.caption := inttostr(i); Position := i; showmessage('Va de regreso'); for i := Max downto Min do L_1.caption := inttostr(i); Position := i; end; end; end. |
|
#2
|
|||
|
|||
|
Código:
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
ProgressBar1.Position := 0;
ProgressBar1.Step := 1;
ProgressBar1.Max := 100;
ProgressBar1.Min := 0;
for i := 1 to ProgressBar1.Max do
begin
Label1.Caption := IntToStr(ProgressBar1.Position);
ProgressBar1.StepIt;
Sleep(100); // solo es para ver el visionado
Application.ProcessMessages;
end;
end;
|
|
#3
|
|||
|
|||
|
Muchas Gracias Cadetill, solo que tengo otro problema, que no puedo hacer que en ese mismo boton despues de que llege al 100 regrese a 0.
Intente haciendo la viceversa del primer for pero no me da, ¿Sabes como hacerle? |
|
#4
|
|||
|
|||
|
Sólo has de cambiar el Step del TProgressBar a -1
Código:
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
ProgressBar1.Position := 0;
ProgressBar1.Step := 1;
ProgressBar1.Max := 100;
ProgressBar1.Min := 0;
for i := ProgressBar1.Min to ProgressBar1.Max - 1 do
begin
Label1.Caption := IntToStr(ProgressBar1.Position);
ProgressBar1.StepIt;
Sleep(100); // solo es para ver el visionado
Application.ProcessMessages;
end;
ProgressBar1.Step := -1;
for i := ProgressBar1.Min to ProgressBar1.Max - 1 do
begin
Label1.Caption := IntToStr(ProgressBar1.Position);
ProgressBar1.StepIt;
Sleep(100); // solo es para ver el visionado
Application.ProcessMessages;
end;
end;
|
|
#5
|
|||
|
|||
|
Muchas gracias por la respuesta
![]() |
|
#6
|
||||
|
||||
|
Un comentario, una manera mas adecuada de hacer este tipo de animaciones es incorporando un componente Timer (ficha "System") en tu formulario. En el evento OnCreate del formulario colocar los valores iniciales:
Código:
procedure TForm1.FormCreate(Sender: TObject); begin ProgressBar1.Position := 0; ProgressBar1.Step := 1; ProgressBar1.Max := 100; ProgressBar1.Min := 0; Timer1.Interval:=100; //Aquí defines que tan rapido quieres que se realize la cuenta end; Código:
procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption := IntToStr(ProgressBar1.Position); ProgressBar1.StepIt; If ProgressBar1.Position>99 then ProgressBar1.Step := -1; If ProgressBar1.Position<1 then ProgressBar1.Step := 1; end; Para controlar cuando iniciar y detener la animación usa la propiedad Enabled del Timer. Saludos. Última edición por Magician^ fecha: 04-04-2004 a las 23:41:18. |
![]() |
|
|
|