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 01-04-2007
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 01-04-2007
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 13-04-2007
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
Ok. Gracias por tu ayuda

Problema resuelto.

Muchas Gracias.

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar Archivos Desde FTP papu24ar Varios 4 21-03-2007 03:50:57
Actualizar una base de datos desde un formulario federiconqn21 Varios 1 14-12-2005 16:43:23
Formulario con dos ProgressBar Javi2 Varios 1 06-09-2004 18:26:43
DataModule llamado desde varias instancias floren OOP 4 06-04-2004 19:27:50
¿como mandar mensajes desde Datamodule? nefy Conexión con bases de datos 14 16-12-2003 11:30:24


La franja horaria es GMT +2. Ahora son las 16:31:21.


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