很急的问题,有关Timage的拖动!!!!!!!!!!!:) 有两种方法一种是用可停泊窗体Form1的DockSite设为True;Image的DragKind,DragMode分别设置为dkDock,dmAutomatic 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 另外一种方法就是不连续移动OldPos,NewPos:TPoint;MidX,MidY:integer;//坐标的变化procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin oldpos.X:=X; oldpos.Y:=Y;end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin newpos.X:=X; newpos.Y:=Y; midx:=newpos.X-oldpos.X; midy:=newpos.Y-oldpos.Y; image1.Left:=image1.Left+midx; image1.Top:=image1.Top+midy;end; 这里面要在TForm1里先声明几个Public变量分别是FMouseDown: Boolean; // 是否按下FMouseDownPoint: TPoint;// 位置procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if Button = mbLeft then begin FMouseDown := True; Screen.Cursor := crHandPoint; FMouseDownPoint := Point(X, Y); end;end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if FMouseDown then begin Image1.Left := Image1.Left + (X - FMouseDownPoint.X); Image1.Top := Image1.Top + (Y - FMouseDownPoint.Y); end;end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if Button = mbLeft then begin FMouseDown := False; Screen.Cursor := crDefault; FMouseDownPoint := Point(X, Y); end;end; 这是一个类似于Office助手的程序的一部分,你改一下就可以了。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls;type TForm1 = class(TForm) Image1: TImage; procedure FormCreate(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Image1Click(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } source:TPoint; bDown:BOOL; bClick:BOOL; public { Public declarations } bShow: BOOL; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin bShow:=false; bDown:=false; bClick:=true;end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin source.X:=X; source.y:=Y; bDown:=true;end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);var S,T:TPoint;begin if bDown then begin bClick:=false; S:=clienttoscreen(source); T.X:=x; T.y:=y; T:=clienttoscreen(T); Form1.Left:=Form1.Left+(T.X-S.x); Form1.Top:=Form1.Top+(T.Y-S.Y); end;end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin bDown:=false; bClick:=true;end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key=VK_ESCAPE then begin bShow:=false; hide; end;end;end. Image要是放在一个TPANEL上是不是就不能拖?如果有TPANEL后,设Image的两个原DRAG属性,还是不行吧? 软考挂了,郁闷 多线程问题! double类型的数据相除问题? 怎样动态删除一个ACCESS文件? 如何将文本的一些资料作为参数取到delphi?? 怎样将一个小数转换成百分比,显示出来,急 一个小问题请指教!(在线等待。。。。) 或者这样行不行? 向各位高手求救,如何让窗体右上角的关闭按钮(X)变灰,是用CreateParams 吗,能否给出代码,谢谢了!!!! 用OleContainer打开word,如何只读? * Delphi控件开发的问题,为什么控件的实例的event代码没有被执行? * 先别浪费分,解决后再新开贴加分,我要问问用什么方法才能知道网络在通信?(具体说明看贴子)
OldPos,NewPos:TPoint;
MidX,MidY:integer;//坐标的变化procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
oldpos.X:=X;
oldpos.Y:=Y;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
newpos.X:=X;
newpos.Y:=Y;
midx:=newpos.X-oldpos.X;
midy:=newpos.Y-oldpos.Y;
image1.Left:=image1.Left+midx;
image1.Top:=image1.Top+midy;
end;
FMouseDown: Boolean; // 是否按下
FMouseDownPoint: TPoint;// 位置
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
FMouseDown := True;
Screen.Cursor := crHandPoint;
FMouseDownPoint := Point(X, Y);
end;
end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FMouseDown then
begin
Image1.Left := Image1.Left + (X - FMouseDownPoint.X);
Image1.Top := Image1.Top + (Y - FMouseDownPoint.Y);
end;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
FMouseDown := False;
Screen.Cursor := crDefault;
FMouseDownPoint := Point(X, Y);
end;
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Image1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
source:TPoint;
bDown:BOOL;
bClick:BOOL;
public
{ Public declarations }
bShow: BOOL;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
bShow:=false;
bDown:=false;
bClick:=true;
end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
source.X:=X;
source.y:=Y;
bDown:=true;
end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
S,T:TPoint;
begin
if bDown then
begin
bClick:=false;
S:=clienttoscreen(source);
T.X:=x;
T.y:=y;
T:=clienttoscreen(T);
Form1.Left:=Form1.Left+(T.X-S.x);
Form1.Top:=Form1.Top+(T.Y-S.Y);
end;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bDown:=false;
bClick:=true;
end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_ESCAPE then
begin
bShow:=false;
hide;
end;
end;end.
如果有TPANEL后,设Image的两个原DRAG属性,还是不行吧?