Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 13-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Aunque el método es totalmente válido, no aconsejaría esa práctica. Si ahora asignas un evento con el inspector de objetos al dsContabledel datamodule, éste evento dejará de funcionar cuando se abra el Form de Contabilidad, lo que hace muy muy dificil encontrar el error.

Lo que propongo es hacer exactamente lo mismo pero con un evento creado por tí:
en el Datamodule:
Código Delphi [-]

 TDatamodule = class(...)

private
  FNotifyToTFormContabilidad:TDataChangeEvent;
public
  property NotifyToTFormContabilidad:TDataChangeEvent  read FNotifyToTFormContabilidad 
                                                       write FNotifyToTFormContabilidad;
end;

// En el inspector de objetos, seleccionas dsContable, y creas el evento por defecto que propone Delphi:
procedure TDatamodule.dsContableDataChange(Sender: TObject; Field: TField);
begin
  if Assigned(FNotifyToTFormContabilidad) then
    FNotifyToTFormContabilidad(Sender, Fied); // lanzamos el evento para que informe al Form
// de contabilidad.
end;

Ahora en el form de contabilidad, hacemos la asignacion del evento, pero en lugar de usar dsContableDataChange, usamos el evento recien creado:
Código Delphi [-]
procedure TFormContabilidad.Create(Sender: TObject);
begin
// nuevo evento creado en el datamodule := evento del form de contabilidad
DataModule.NotifyToTFormContabilidad:=dsContableDataChange; 
end;
procedure TFormContabilidad.Close(....);
begin
  DataModule.NotifyToTFormContabilidad:= nil;
end;
Por supuesto, al cerrar el form de contabilidad, hay que quitar la asignación del evento. Si no lo hacemos y se destruye el Form de contabilidad, cuando en el Datamodule.dsContable se cambie un dato producirá un Access Violation.


Ahora tenemos todo en orden, si necesitas el evento OnDataChange del Datamodule.dsContable, lo tienes ya creado, y además te acordarás de que tambien se informa al Form de contabilidad, por tanto, es más claro el código (aunque ahora mismo no te lo parezca jejeje).

Edito: Notarás que la variable Privada tiene un F delante, tal y como dicen los Standares de programación, (es un Field privado). Despues desde TFormContabilidad se accede a la propiedad pública del Datamodule (sin la F).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 13-10-2006 a las 17:40:52.
Responder Con Cita
 



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
Bloquear aplicacion despues de cierto tiempo Marcela Conexión con bases de datos 26 16-04-2017 23:47:23
Sobre cierto resultado de la función SHGetSpecialFolderPath dec API de Windows 3 01-06-2005 06:59:01
Porque se Desconecta la B.D. en cierto Tiempo???? AGAG4 Conexión con bases de datos 2 25-04-2005 16:59:21
Ejecutar aplicacion delphi cada cierto tiempo mgaray API de Windows 9 28-01-2005 19:16:20
Increible pero cierto Nuria Humor 0 23-01-2004 18:47:14


La franja horaria es GMT +2. Ahora son las 23:07:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi