Ver Mensaje Individual
  #2  
Antiguo 11-04-2017
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 103
Reputación: 14
FENIXadr Va por buen camino
Gente lo pude solucionar de una manera tal vez no muy elegante.. diganme si hay una manera mejor porfavor..

Hice lo siguiente:
Código Delphi [-]

    ... ..
    ..
 private
    .....
    ....
    ......
    ...
    FOnMouseDown : TMouseEvent;
    FOnMouseMove : TMouseMoveEvent;
    FOnMouseUp : TMouseEvent;
    
    procedure MiClaseOnMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure MiClaseOnMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure MiClaseOnMouseUp (Sender: TObject; Button: TMouseButton;
    ...
    .. .
    ... ..
    ..

 protected
   ...
   .....
   ...
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
   ...
   .....
   ...
 published
    ......
    ...
    .....
    property MouseDown : TMouseEvent read FOnMouseDown write FOnMouseDown;      //Estos son los 
    property MouseMove : TMouseMoveEvent read FOnMouseMove write FOnMouseMove;  //Eventos que 
    property MouseUp : TMouseEvent read FOnMouseUp write FOnMouseUp;            //el usuario ve.

  end;

  ....
  ...
  ....



constructor TMiClase.Create (AOwner : TComponent);

begin
  Inherited Create (AOwner);

  ....
  ..
  .....
  ....

  OnMouseDown := MiClaseOnMouseDown;
  OnMouseMove := MiClaseOnMouseMove;
  OnMouseUp := MiClaseOnMouseUp;

  ...
  ....
  ..
  .....
 
end;

...
....
.
....

procedure TMiClase.MiClaseOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  .....
  ...
  .....
  ..
 
  if Assigned (FOnMouseMove) then
    FOnMouseMove(Sender, Shift, X, Y);  // Aqui llama al procedimiento definido por el usuario.
end;

....
..
....
Responder Con Cita