Ver Mensaje Individual
  #6  
Antiguo 14-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Yo para hacer esto, suelo emplear un código parecido, aunque uso solo un evento. Por ejemplo, aquí tengo una imagen que ocupa todo el formulario (Streach:= TRUE; Align:= alClient; ) y otra mas pequeña que es la que muevo. En el evento OnMouseMove de esta última coloco los siguiente:

Código Delphi [-]
procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  P: TPoint;
begin
  GetCursorPos(P);
  if ssLeft in Shift then
  begin
    Image2.Top:= Image2.Top + P.Y - AnteriorP.Y;
    Image2.Left:= Image2.Left + P.X - AnteriorP.X;
  end;
  AnteriorP:= P;
end;

Siendo AnteriroP una variable declarada de la siguiente manera:
Código Delphi [-]
TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    AnteriorP: TPoint;      // < -- Aqui esta declarada
  public
    { Public declarations }
  end;

Este ejemplo, una vez coloca la propiedad DoubleBuffered a TRUE no muestra ningún tipo de parpadeo, y la imagen 2 se puede mover perfectamente.
Responder Con Cita