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
  #6  
Antiguo 14-12-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

Y si a ese componente le asignas un método en su evento OnDataChange, ¿este sigue comportándose como deseas? Has la prueba y verás que no.

Para redefinir el comportamiento de un evento, primero debes identificar cual es el método que dispara ese evento, mayormente en la VCL estos métodos se pueden redefinir, pero parece que para la clase TDataSource el método que llama al evento es privado (DataEvent).

Dicho lo anterior, tu componente debe quedar de la siguiente forma para que funcione:

Código Delphi [-]
type
  TMiDataSource = class(TDataSource)
  private
    // Campo para guardar el manejador de evento definido en tiempo de diseño...
    FOldDataChangeEvent: TDataChangeEvent;

    procedure DoOnDataChange (Sender: TObject; Field: TField);
  protected
    procedure Loaded; override;
  end;

implementation

procedure TMiDataSource.DoOnDataChange(Sender: TObject; Field: TField);
begin
  // Llamamos el manejador de eventos asignado en tiempo de diseño...
  if Assigned(FOldDataChangeEvent) then
    FOldDataChangeEvent(Sender, Field);
  // Aquí pones tu código...
end;

procedure TMiDataSource.Loaded;
begin
  inherited;
  // Si estamos en tiempo de ejecución, sustituimos el manejador de evento de OnDataChange con el nuestro...
  if not csDesigning in ComponentState then
  begin
    FOldDataChangeEvent := OnDataChangeEvent;
    OnDataChangeEvent := DoOnDataChange
  end
end;

Toma en cuenta que este código lo hago al vuelo, así que podría fallar. También ten en cuenta que si se cambia el manejador de evento de OnDataChange en tiempo de ejecución, el comportamiento de este código ya no será el deseado.



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
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
Como extender componentes de la paleta mcbullrich OOP 5 01-11-2011 19:27:57
Extender escritorio de windows y bloquear acceso Ivanzinho Windows 2 11-03-2009 12:20:38
DBGrid - funcionalidad / documentación alquimista_gdl PHP 0 09-09-2008 18:15:36
funcionalidad parecida a la del TDBLookUpComboBox.. pvizcay OOP 8 20-09-2006 22:22:15
Funcionalidad del TeamSourse jmedina Varios 3 23-02-2005 18:21:11


La franja horaria es GMT +2. Ahora son las 09:03:47.


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