Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Actualizar ProgressBar de un formulario desde DataModule (https://www.clubdelphi.com/foros/showthread.php?t=42022)

Jesús Pena 01-04-2007 02:24:20

Actualizar ProgressBar de un formulario desde DataModule
 
Necesito saber como realizar la actualización de una progressbar que está en un formulario desde un datamodule asociado (necesito poder acceder a los parámetros de maximo y posicion de la misma pues se actualizará desde un bucle y que se ejecute desde 1 hasta el número de registros a tratar).

Recuerdo haber visto algo al respecto por algún lado pero no lo encuentro.

Gracias.

Héctor Randolph 01-04-2007 03:18:24

Un posible solución es la siguiente:

Puedes crear un evento en el DataModule que se dispare cada vez que procesas un registro, en este evento puedes enviar como parámetros el total de registros y el registro actual, después asignas ese evento desde el Form para que se reflejen los cambios en tu ProgressBar.

Te dejo un código de ejemplo:

Este es el código del DataModule para crear el evento con los parámetros

Código Delphi [-]
type
   TMiEvento = procedure(Sender: TObject; RegActual, Total: Integer) of object;

Después creas un campo y una propiedad para poder asignar este evento desde otro módulo.

Código Delphi [-]
  private
    { Private declarations }
    FMiEvento: TMiEvento;//Creamos un campo
  public
    { Public declarations }
    property OnMiEvento: TMiEvento read FMiEvento write FMiEvento;
    procedure Miproceso;
  end;

Finalmente dentro de tu proceso disparas el evento cada vez que recorres un registro.

Código Delphi [-]
procedure TDataModule1.MiProceso;
var
  Total:Integer;
begin
  Table1.First;
  Total:=Table1.RecordCount;
  while not Table1.EOF do
  begin
    if Assigned(FMiEvento) then
      FMiEvento(nil,Table1.RecNo,Total);//Enviamos los parametros
    Table1.Next;
  end;
end;

Finalmente desde tu formulario asignas este evento

Código Delphi [-]
var
  Form1: TForm1;

implementation

uses
  Unit2; // Este es el que contiene el DataModule

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DataModule2.OnMiEvento:=ActualizaProgreso; //Asignamos el evento que se encarga de mostrar la barra
end;

procedure TForm1.ActualizaProgreso(Sender: TObject; RegActual, Total: Integer);
begin
  ProgressBar1.Max:=Total;
  ProgressBar1.Position:=RegActual;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  DataModule2.Miproceso; //Ejecuto el proceso que está en el DataModule al pulsar un botón por ejemplo
end;

end.

Saludos

Jesús Pena 13-04-2007 01:27:13

Ok. Gracias por tu ayuda
 
Problema resuelto.

Muchas Gracias.

:)


La franja horaria es GMT +2. Ahora son las 13:27:58.

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