Ver Mensaje Individual
  #3  
Antiguo 16-12-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 22
andres1569 Va por buen camino
Hola:

Lo acabo de volver a mirar y la cosa no es tan fácil. Pensaba que se podría pegar alegremente todo el código de PictureChanged a MiPictureChanged pero no es así por culpa de unas variables privadas (FPictureLoaded y FDataLink) que no podemos alterar.

Bueeeno, se me ocurre algo quizás estrambótico: teniendo en cuenta que al asignar el evento MiPictureChanged al Picture (Picture.OnChange := MiPictureChanged;), dicha asignación ya está hecha en el constructor Create heredado, podríamos almacenar la referencia al método asignado en una variable del tipo TNotifyEvent:

Código Delphi [-]
FAnteriorNotify : TNotifyEvent;
FCambiando : Boolean;

constructor TMiDBImage.Create;
begin
  inherited Create;
  ...
  FAnteriorNotify := Picture.OnChange;
  Picture.OnChange := MiPictureChanged;
  ...
end;

procedure TMiDBImage.MiPictureChanged;
begin
  if FCambiando then EXIT;
  FCambiando := TRUE;
  try
    Picture.Bitmap.TransparentColor:=FTransparentColor;
    ... 
    ...
    FAnteriorNotify(Picture);
  finally
    FCambiando := FALSE;
  end;
end;

No sé si esto servirá ...

Saludos
__________________
Guía de Estilo
Responder Con Cita