Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-04-2004
aragorneuf aragorneuf is offline
Miembro
 
Registrado: abr 2004
Ubicación: Reinos unidos de Anor y Gondor
Posts: 21
Poder: 0
aragorneuf Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 04-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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;
Responder Con Cita
  #3  
Antiguo 04-04-2004
aragorneuf aragorneuf is offline
Miembro
 
Registrado: abr 2004
Ubicación: Reinos unidos de Anor y Gondor
Posts: 21
Poder: 0
aragorneuf Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 04-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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;
Responder Con Cita
  #5  
Antiguo 04-04-2004
aragorneuf aragorneuf is offline
Miembro
 
Registrado: abr 2004
Ubicación: Reinos unidos de Anor y Gondor
Posts: 21
Poder: 0
aragorneuf Va por buen camino
Muchas gracias por la respuesta
Responder Con Cita
  #6  
Antiguo 04-04-2004
Avatar de Magician^
Magician^ Magician^ is offline
Miembro
 
Registrado: mar 2004
Ubicación: Lima - Perú
Posts: 74
Poder: 21
Magician^ Va por buen camino
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;
y al evento OnTimer del timer colocar un código similar a este:
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;
Haciéndolo de esta manera permites que los recursos de la PC no se congestionen en tu aplicación.

Para controlar cuando iniciar y detener la animación usa la propiedad Enabled del Timer.

Saludos.
__________________
MAGICIAN^
Lima - Perú
=======
MagicTech.blogspot.com

Última edición por Magician^ fecha: 04-04-2004 a las 23:41:18.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 11:13:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi