对它的OnDragOver,OnDragDrop做处理。比如: procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer); begin if (Sender.ClassNameIs('TForm1')) and (Source.ClassNameIs('TImage')) then begin Image1.Parent := Form1; Image1.Top := 0; Image1.Left := 0; Image1.Align := alClient; end; end;procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer); begin if (Sender.ClassNameIs('TPanel')) and (Source.ClassNameIs('TImage')) then begin Image1.Parent := Panel1; Image1.Top := 0; Image1.Left := 0; Image1.Align := alClient; end; end;procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if Source.ClassNameIs('TImage') then begin Accept := true; end; end;procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if Source.ClassNameIs('TImage') then begin Accept := true; end; end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if (Sender.ClassNameIs('TForm1')) and (Source.ClassNameIs('TImage')) then
begin
Image1.Parent := Form1;
Image1.Top := 0;
Image1.Left := 0;
Image1.Align := alClient;
end;
end;procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if (Sender.ClassNameIs('TPanel')) and (Source.ClassNameIs('TImage')) then
begin
Image1.Parent := Panel1;
Image1.Top := 0;
Image1.Left := 0;
Image1.Align := alClient;
end;
end;procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source.ClassNameIs('TImage') then
begin
Accept := true;
end;
end;procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source.ClassNameIs('TImage') then
begin
Accept := true;
end;
end;
StartX, StartY: Integer;
CanMove: Boolean= false;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if CanMove then
begin
Image1.Left:= Image1.Left+(x-StartX);
Image1.Top:= Image1.Top+(y-StartY);
end;
end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CanMove:= true;
StartX:= x;
StartY:= y;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CanMove:= false;
end;
BeginX, BeginY: Integer;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
BeginX:= x;
BeginY:= y;
end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in shift then //鼠标左键是否按下
begin
Image1.Left:= Image1.Left+(x-BeginX);
Image1.Top:= Image1.Top+(y-BeginY);
end;
end;
procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
accept:=true;
end;procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if blndrop then
begin
image1.Left:=x;
image1.Top:=y;
blndrop:=false;
end;
end;procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
blndrop:=true;
image1.drogmode:=dmAutomatic;end;
:你的方法我试过。好像不灵。