Ver Mensaje Individual
  #4  
Antiguo 01-06-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El método que te mencionan te servirá para arrastrar la ventana tomándola de alguna parte de su área cliente pero un panel no forma parte de ésta.

Una manera de mover la ventana, tomándola de un panel, podría ser manejando los eventos OnMouseDown, OnMouseMove y OnMouseUp del panel.

Comienza declarando dos variables en tu formulario:

Código Delphi [-]
type
  TFrom1 = class(TForm)
  private
    DragPoint: TPoint;
    Dragging: Boolean;
  end;

DragPoint será el punto del panel desde donde arrastres la ventana y Dragging controlará si estás arrastrando o simplemente moviendo el mouse sobre el panel. Conforme desplaces el mouse deberás fijarte en la diferencia de las coordenadas con respecto de DragPoint y sumárselas a las propiedades Left y Top del formulario:

Código Delphi [-]
procedure TForm1.Panel1MouseDown(...; X, Y: Integer);
begin
  Dragging := true;
  DragPoint := Point(X, Y);
end;

procedure TForm1.Panel1MouseMove(...; X, Y: Integer);
begin
  if Dragging then
  begin
    Left := Left + X - DragPoint.X;
    Top := Top + Y - DragPoint.Y;
  end;
end;

procedure TForm1.Panel2MouseUp(...; Shift: TShiftState; X, Y: Integer);
begin
  Dragging := false;
end;

// Saludos
Responder Con Cita