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 25-03-2010
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Cool Comunicación entre unidad y formulario

Hola a todos:


La situación del día de hoy es la siguiente:


Tengo en una unidad un procedimientos que maneja una seríe de procedimientos, algo así :

Código Delphi [-]
procedure TDMLiquidacion.liquidarPeriodo(pCodigoSuscriptor: Integer);
begin
  if not verificarCritica then
    begin
      borraLiquidacion(pCodigoSuscriptor);
      divideLecturas(pCodigoSuscriptor);
      liquidaInteresDiario(pCodigoSuscriptor);
      // liquida Interes de mora mensual
      // liquida reconexiones
      liquidaTarifa(pCodigoSuscriptor);
      // Liquida conceptos basados en lectura
      liquidaTarifa(pCodigoSuscriptor,1,GetCampo('Lecturas','Basico','CodigoSuscriptor = ' + IntToStr(pCodigoSuscriptor)));
      liquidaTarifa(pCodigoSuscriptor,2,GetCampo('Lecturas','Complementario','CodigoSuscriptor = ' + IntToStr(pCodigoSuscriptor)));
      liquidaTarifa(pCodigoSuscriptor,3,GetCampo('Lecturas','Suntuario','CodigoSuscriptor = ' + IntToStr(pCodigoSuscriptor)));
      liquidaTarifa(pCodigoSuscriptor,5,GetCampo('Lecturas','Multado','CodigoSuscriptor = ' + IntToStr(pCodigoSuscriptor)));
      liquidaPorcentaje(pCodigoSuscriptor);
      liquidaNovedadesPeriodo(pCodigoSuscriptor);
      liquidaNovedadesFinanciadas(pCodigoSuscriptor);
      liquidaSaldoPrepago(pCodigoSuscriptor);
      asignaNumeroFactura(pCodigoSuscriptor);
      asignaNumeroFacturaOrigen(pCodigoSuscriptor);
      // cambia el estado del periodo a liquidado
    end;
end;

Ahora en el evento click de un boton del formulario ejecuto el procedimiento

Código Delphi [-]
procedure TFLiquidaPeriodo.SBLiquidarPeriodoClick(Sender: TObject);
begin
  DMLiquidacion.liquidarPeriodo(Self.CodigoSuscriptor);
end;

ahora para este caso lo que sucede es lo siguiente el formulario de vista al cliente tiene dos barras de progreso, en la primera deseo indicar un progreso general (en el caso de ejecutar varias veces el procedimiento con un párametro diferente) y la segunda para indicar el progreso en el desarrollo de procedimiento, es decir poder mostrar en que paso iria.

La pregunta es como puedo comunicar la unidad con la barra de progreso del formulario.


Gracías de Antemano


gertorresm
Colombia
Responder Con Cita
  #2  
Antiguo 25-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No sé si estoy entendiendo bien. La solución rápida pero no muy buena es incluir la unidad del formulario en la unidad del datamodule.

Algo no tan rápido pero más limpio sería implementar una especie de evento en el datamodule:

Código Delphi [-]
type
  TDMLiquidacion = class(TDataModule)
   ...
  private
    FOnProgress: TNotifyEvent;

  public
    OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
  end;

En el código del datamodule, cada vez que des un paso más, haces algo como esto:

Código Delphi [-]
if Assigned(FOnProgress) then
  FOnProgress(Self);

Entonces, en tu formulario, tendrías que crear un método para el evento:

Código Delphi [-]
type
  TFliquidaPeriodo = class(TForm)
    ..
  private
    procedure DMOnProgress(Sender: TObject);
  end;

Asignas el método en el OnCreate:

Código Delphi [-]
DMLiquidacion.OnProgress := DMOnProgress;

Y en la implementación de DMOnProgress actualizas tu barra de progreso o cualquier cosa que necesites.

Para que quede completo, podrías añadir un evento OnProgressBegin en donde pasas al formulario la información de cuántos pasos en total hay para que inicialices tu barra de progreso.

// Saludos
Responder Con Cita
  #3  
Antiguo 25-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola GerTorresM, también puedes pasar tu barra de progreso como parámetro:

Código Delphi [-]
 
procedure TDMLiquidacion.liquidarPeriodo(pCodigoSuscriptor: Integer; aProgessBar : TProgressBar);
begin
  aProgessBar.Position := 0;
  if not verificarCritica then
    begin
      borraLiquidacion(pCodigoSuscriptor);
      divideLecturas(pCodigoSuscriptor);
      liquidaInteresDiario(pCodigoSuscriptor);
      // liquida Interes de mora mensual
      // liquida reconexiones
      liquidaTarifa(pCodigoSuscriptor);
   .........................................................
   .........................................................
end;
 
procedure TFLiquidaPeriodo.SBLiquidarPeriodoClick(Sender: TObject);
begin
  DMLiquidacion.liquidarPeriodo(Self.CodigoSuscriptor, ProgressBar1);
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
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
Comunicacion entre procesos walito Varios 0 14-11-2007 21:55:53
Comunicacion entre delphi y php vilamm PHP 3 15-12-2006 20:34:43
comunicacion entre sockets Brando Internet 5 27-10-2004 17:20:42
Comunicación entre unidades keglevich OOP 9 20-09-2004 10:11:20
Comunicación entre PC por Lan c748a Varios 1 04-05-2004 08:51:21


La franja horaria es GMT +2. Ahora son las 02:47:40.


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