拖动窗体的代码怎么写?
解决方案 »
- ord()不能多次出现?
- 高分悬赏:C代码转为Delphi,在线等.
- fast report 哪有帮助文档?
- 这样的存储过程调用错在哪里?(在线等待,解决立即给分)
- 请问我在使用sub detail打印明细表时,为什么会重复打很多次,预览中的效果是好的,但是打印出来的sub detail中的记录是重复打印的
- 如何给MDI的工作区使用图片背景?
- 怎样才能实现以下功能?
- 将ListBox中选定的Items变成DBGrid的columns?
- 关于ACTIVEFORM显示的问题,怪!怪!(再次提出此问题,如果谁能回答会给次两分,我急啊)
- 欲与Delphi高手交友
- 用QREPORT做报表,一个字段内容太多,一格放不下,要换行怎么办啊?再线等!马上给分
- 问一个别的问题--->这里有玩盟3 的吗?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
Dragging:Boolean;
DragStart:TPoint;
public
{ Public declarations }
end;var
Form1: TForm1;
implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Dragging:=True;
DragStart:=TControl(Sender).ClientToScreen(Point(X, Y));
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Diff:TPoint;
begin
if Dragging then
begin
Diff := TControl(Sender).ClientToScreen(Point(X, Y));
Diff := Point(Diff.X - DragStart.X, Diff.Y - DragStart.Y );
SetBounds(Form1.Left + Diff.X, Form1.Top + Diff.Y, Form1.Width, Form1.Height);
DragStart.X := DragStart.X + Diff.X;
DragStart.Y := DragStart.Y + Diff.Y;
end;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Dragging:=False;
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
private
procedure wmnchittest(var msg:twmnchittest); //获取消息
message wm_nchittest; { Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.wmnchittest(var msg:twmnchittest);begin
inherited;
if (htclient=msg.result) then //如果在客户区域点了鼠标
msg.result:=htcaption //可以拖动
else
if (htcaption = msg.result) then //如果在标题览点了鼠标
msg.result:=htclient; //无法拖动
end;end.
已经调试成功!!