Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Progressbar (https://www.clubdelphi.com/foros/showthread.php?t=56826)

Paulao 28-05-2008 19:09:06

Progressbar
 
Cómo pongo una Progressbar en este codigo:
Código Delphi [-]
procedure TfrmLe_ECF.cxButton1Click(Sender: TObject); 
begin 
Screen.Cursor := crHourGlass; 
CapturaStatus; 
AssignFile(arq,ExtractFilePath(Application.ExeName)+'\Teste.TXT'); 
Rewrite(arq); 
Write(arq,guardastatus.Text); 
CloseFile(arq); 
Screen.Cursor := crDefault; 
end;
Esta progress es para muestrar el andamiento del los archivos, o sea, mientras va se grabando en el disco se muestrando el progressbar.

Casimiro Notevi 28-05-2008 19:43:56

uuummm... no veo ningún bucle de "andamiento" para usar una barra de progreso, creo que no has puesto el código oportuno :)

roman 28-05-2008 20:02:17

Pues sí, como comenta Casimiro, si quieres mostrar el progreso de lo andado, debes andar por partes. Al parecer escribes todo el contenido en un sólo paso:

Código Delphi [-]
Write(Arq, GuardaStatus.Text);

Podrías intentar escribiendo línea a línea:

Código Delphi [-]
ProgressBar1.Max := GuardaStatus.Lines.Count;
ProgressBar1.Position := 0;
ProgressBar1.Step := 1;

for I := 0 to GuardaStatus.Lines.Count - 1 do
begin
  ProgressBar1.StepIt;
  WriteLn(Arq, GuardaStatus.Lines[i]);
end;

Claro, suponiendo que GuardaStatus es un Memo a algo similar.

// Saludos

Paulao 28-05-2008 20:20:53

Yo hizo asi, pero no camina el progress. El queda en 0% y despues se va a 100%. No va asi, 0,1,2,3...100%. Este es el codigo que yo puzo. guardastatus es una StringList y CapturaStatus es una procedure para llenar el StringList solamente. Mi progressbar es una TcxProgressBar.

Código Delphi [-]
procedure TfrmLe_ECF.cxButton1Click(Sender: TObject);
var
 i: Integer;
begin
  Screen.Cursor := crHourGlass;
  CapturaStatus;
  AssignFile(arq,ExtractFilePath(Application.ExeName)+'\Teste.TXT');
  Rewrite(arq);

  pb.Properties.Max := guardastatus.Count;
  pb.Position := 0;

  for I := 0 to GuardaStatus.Count - 1 do 
  begin
    pb.Position := pb.Position;
    WriteLn(Arq, GuardaStatus.Text[i]);
  end;

  Write(arq,guardastatus.Text);
  CloseFile(arq);
  Screen.Cursor := crDefault;
end;

Paulao 28-05-2008 20:22:08

Perdon, esta linea estas asi:
Código Delphi [-]
pb.Position := pb.Position+i;

Paulao 28-05-2008 20:43:21

Yo puzo un Count, pero Count de que? Creo que el no sabe que Count, falta algo que no se que es, por eso no funciona, o sea va de 0 hacia 100, pues no tiene una referencia para un Count. Si fuera linea, entonces el Count estaria apropriado. Tipo: Memo.Lines.Count, el estaria contado las lineas, pero es un Stringlist.

jcarteagaf 28-05-2008 20:49:41

Cambia tu codigo de esta forma:

Código Delphi [-]
procedure TfrmLe_ECF.cxButton1Click(Sender: TObject);
var
 i: Integer;
begin
  Screen.Cursor := crHourGlass;
  CapturaStatus;
  AssignFile(arq,ExtractFilePath(Application.ExeName)+'\Teste.TXT');
  Rewrite(arq);

  pb.Properties.Max := guardastatus.Count;
  pb.Position := 0;
  pb.Step := 1; // queremos que vaya de 1 en 1
  for I := 0 to GuardaStatus.Count - 1 do 
  begin
    pb.StepIt; // avanza de 1 en 1
    Application.Processmessages;  // refresca la pantalla
    WriteLn(Arq, GuardaStatus.Text[i]);
  end;

  Write(arq,guardastatus.Text);
  CloseFile(arq);
  Screen.Cursor := crDefault;
end;

Saludos


La franja horaria es GMT +2. Ahora son las 02:06:49.

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