各位热衷编程的好友们:
在窗体上创建一个标签框,怎样才能实现移动标签框就像移动窗体标题栏一样,让窗体移动,希望大家能够帮助我解决这一问题,谢谢!
在窗体上创建一个标签框,怎样才能实现移动标签框就像移动窗体标题栏一样,让窗体移动,希望大家能够帮助我解决这一问题,谢谢!
解决方案 »
- 为何同一个程序,有的win7可以打开,有的报,请求的操作需要提升!
- C++Builder的一些函数声明,请知道的大侠帮忙翻译一下,100分奉上
- 内核编程群20264887,感兴趣可以加入(想进来问个问题就走的免入,谢谢).
- 怎样能使edit的输入法为系统默认的输入法?
- 我动态给SQL语句参数赋值出现找不到第二个参数B
- 看看这个能不能实现!!!!!
- 应用程序的通信
- 哪里有免费的电影下载?
- Web Service!
- I want to study TCP/ip ,please give me some advice;
- 怎样将用户对数据库的操作记录下来,到用户点击保存时才修改数据库
- 谁知道<<Delphi 6应用开发指南>>电子版下载的地方
procedure TMainForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
iX0:=X;
iY0:=Y;
end;procedure TMainForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var iDeltaX,iDeltaY:integer;
begin
if ssLeft in Shift then
begin
iDeltaX:= X - iX0;
iDeltaY:= Y- iY0;
if iDeltaX<>0 then
Form1.Left:=Form1.Left+iDeltaX;
if iDeltaY<>0 then
Form1.Top:=Form1.Top+iDeltaY;
end;
end;上面的代码就能用鼠标移动窗体了,你再加一点代码让只有鼠标停在Label上时上面的事件才生效不就可以了?
SendMessage(form1.handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
-------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HTTPApp, SvcMgr, ExtCtrls, StdCtrls, Menus;type
TForm1 = class(TForm)
Image1: TImage;
PopupMenu1: TPopupMenu;
C1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormResize(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 C1Click(Sender: TObject);
private
{ Private declarations }
OriginalPos:TPoint; // 记录原始位置
CurrentPos:TPoint; // 记录当前位置
DownPos:TPoint; // 记录鼠标按下时位置
MouseLButtonDown:Boolean; // 标记鼠标左键是否按下
public { Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
var
hr :THandle;
begin
MouseLButtonDown:=False;
// 创建一个圆形窗口
hr:=CreateEllipticRgn(0,0,Width,Height);
SetWindowRgn(Handle,hr,True);
end;procedure TForm1.FormResize(Sender: TObject);
var
hr :THandle;
begin
// 刷新圆形窗口
hr:=CreateEllipticRgn(0,0,width,height);
setwindowrgn(handle,hr,true);
end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
OriginalPos.x:=Form1.Left; // 记录下原始坐标位置
OriginalPos.y:=Form1.Top;
DownPos.x:=X; // 鼠标按下的位置
DownPos.y:=Y;
DownPos:=ClientToScreen(DownPos); // 将客户区坐标转换为屏幕坐标
if Button = mbLeft then
MouseLButtonDown:=True;
end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if MouseLButtonDown then
begin
CurrentPos.x:=X;
CurrentPos.y:=Y;
CurrentPos:=ClientToScreen(CurrentPos); // 将客户区坐标转换为屏幕坐标
// 确定窗体的新位置
Form1.Left:=OriginalPos.x+(CurrentPos.x-DownPos.x);
Form1.Top :=OriginalPos.y+(CurrentPos.y-DownPos.y);
end;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MouseLButtonDown:=False; // 鼠标左键弹起
end;procedure TForm1.C1Click(Sender: TObject);
begin
Close; // 关闭程序
end;end.
procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle,WM_SYSCOMMAND,$F012,0);
end;