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