Tema: Interfaces
Ver Mensaje Individual
  #6  
Antiguo 14-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Reputación: 29
delphi.com.ar Va camino a la fama
Para las clases, los datalinks dispara métodos en las clases cuando estos reciben alguna notificación.
Esto es un pedazo muy recortado del código, así que no pretendan que funcione:

La Interface:
Código:
  
  IDBLookupControl = interface
    ...
    procedure UpdateDataFields;
    procedure UpdateListFields;
    procedure ListLinkDataChanged;
    ...
  end;
Un DataLink:
Código:
  
TListSourceLookupLink = class(TDataLink)
  private
    ILookup: IDBLookupControl;
  protected
    procedure ActiveChanged; override;
    procedure DataSetChanged; override;
    procedure LayoutChanged; override;
    ...
  public
    constructor Create(ALookupInterface: IDBLookupControl);
    ...
  end;

implementation

{ TListSourceLookupLink }

procedure TListSourceLookupLink.ActiveChanged;
begin
  if Assigned(ILookup) then
    ILookup.UpdateListFields;
end;

constructor TListSourceLookupLink.Create(ALookupControl: TWinControl; ALookupInterface: IDBLookupControl);
begin
  inherited Create;
  ...
  ILookup := ALookupInterface;
end;

procedure TListSourceLookupLink.DataSetChanged;
begin
  if Assigned(ILookup) then
    ILookup.ListLinkDataChanged;
end;


procedure TListSourceLookupLink.LayoutChanged;
begin
  if Assigned(ILookup) then
    ILookup.UpdateListFields;
end;
Uno de los Componentes:
Código:
  TCustomDBLookupControl = class(TCustomIncSearchEdit, IDBLookupControl)
  protected
    ...
    procedure UpdateDataFields; virtual;
    procedure UpdateListFields; virtual;
    procedure ListLinkDataChanged; virtual; abstract;
    ...
  end;

¿Fui claro?... sino, ya saben!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita