unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
bCanMove: boolean;
iOldy: integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Panel1.Top := y;
end;
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bCanMove := True;
iOldy := y;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
bCanMove := false;
end;
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bCanMove := false;
end;
//将原来的代码加上如下注释即可解决"但TOP不能超过form"问题
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var i: integer;
begin
if bCanMove then
begin
i := Panel1.Top+y-iOldy;
// if i<0 then i:=0; //限制顶
// if i>Self.Height- Panel1.Height then i:= Self.Height - Panel1.Height; //限制底
Panel1.Caption := 'Old Top:='+IntToStr(Panel1.Top)+' New Top:='+IntToStr(i);
Panel1.Top := i;
end;
end;
end.;