Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mostrar ProgressBar mientras se hace Preview de un reporte (https://www.clubdelphi.com/foros/showthread.php?t=55425)

JarLem 16-04-2008 19:38:30

Mostrar ProgressBar mientras se hace Preview de un reporte
 
Hola Compañeros del foro !!

Estoy trabajando con componentes TMS, quiero saber como uso el AdvProgressBar para mostrar el progreso mientras hago un Preview de un reporte con el componente ARWordReport, este componente tarda bastante en hacer el Preview por lo tanto creo que es necesario el AdvProgressBar para indicar al usuario que la acción esta en proceso, tengo un AdvProgressBar en un MDIForm dispuesto para ello que esta visible todo el tiempo, el problema está en hacer que se llene el progress mientras se realiza el preview.

Alguien tiene idea de como relacionar el preview con el Advprogressbar?

Agradezco su ayuda.

JarLem 16-04-2008 23:44:36

Si no se puede o no se sabe. ¿Como hago para llenar un progressbar (TPorgressBar) mientras un proceso esta en curso?

Agradezco las repuestas.

Caral 16-04-2008 23:47:55

Hola
Este es un ejemplo de progressbar.
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure DialogTimer(Sender: TObject) ;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DialogTimer(Sender: TObject) ;
var
   aPB : TProgressBar;
begin
   if NOT (Sender is TTimer) then Exit;

   if ((Sender as TTimer).Owner) is TForm then
   with ((Sender as TTimer).Owner) as TForm do
   begin
     aPB := TProgressBar(FindComponent('Progress')) ;

     if aPB.Position >= aPB.Max then
       ModalResult := mrCancel
     else
       aPB.StepIt;
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
   AMsgDialog : TForm;
   AProgressBar : TProgressBar;
   ATimer : TTimer;
begin
   AMsgDialog := CreateMessageDialog('El Programa se esta cargando, Espere', mtWarning, []) ;
   AProgressBar := TProgressBar.Create(AMsgDialog) ;
   ATimer := TTimer.Create(AMsgDialog) ;
   with AMsgDialog do
   try
    Tag := 5; // aqui se cambian los segundos

    Caption := 'En Proceso, espere';
    Height := 100;

    with AProgressBar do begin
     Name := 'Progress';
     Parent := AMsgDialog;
     Max := AMsgDialog.Tag;
     Step := 1;
     Top := 50;
     Left := 8;
     Width := AMsgDialog.ClientWidth - 16;
    end;

    with ATimer do
    begin
     Interval := 1000;
     OnTimer:=DialogTimer;
    end;

     case ShowModal of
     ID_CANCEL:
    //
    end;
   finally
    ATimer.OnTimer := nil;
    Free;
  end;
end;

end.
Saludos

JarLem 17-04-2008 00:07:13

Hola Caral!

Gracias por la respuesta... este es un ejemplo de creación en tiempo de ejecución de un progressbar en un MessageDialog pero ¿como seria el código si yo ya tengo un progressbar en un ToolBar que esta visible en todo momento y deseo asociarlo al preview de un reporte?

Caral 17-04-2008 03:51:12

Hola
Esto es lo mejor que puedo hacer, soy el Novato del club, alguno de los Maestros lo arreglara.:)
El progressbar ahora esta en el form1 (ya no se crea en ejecución, ni dentro de nada), una vez que termina se muestra el form2.
Lo que si creo en ejecución es el timer, pero si quieres también lo modificas.
Es lo mismo para un reporte, solo lo cambias.
Código Delphi [-]

procedure TForm1.DialogTimer(Sender: TObject) ;
begin
   if NOT (Sender is TTimer) then Exit;

   if ((Sender as TTimer).Owner) is TForm then
   with ((Sender as TTimer).Owner) as TForm do
   begin
    if ProgressBar1.Position >= ProgressBar1.Max then
     ModalResult := mrCancel
     else
       ProgressBar1.StepIt;
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
   ATimer : TTimer;
begin
   ATimer := TTimer.Create(Form1) ;
   with ProgressBar1 do begin
     Max := 5;
     Step := 1;
     end;

    with ATimer do  begin
     Interval := 1000;
     OnTimer:=DialogTimer;


   case ShowModal of
   ID_CANCEL:
   begin
   form2:=Tform2.Create(self);
   try
      form2.ShowModal;
   finally
      form2.Free;
   end;
   end;
   end;
   end;

end;
Saludos


La franja horaria es GMT +2. Ahora son las 03:27:32.

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