织梦CMS - 轻松建站从此开始!

软件开发|软件定制|设计软件|APP软件-沈阳汇海软件公司

当前位置: 主页 > 行业动态 > 软件资讯 >

无标题栏窗体拖动及界面美化

时间:2018-12-04 12:37来源:软件公司 作者:软件定制 点击:
(中国软件网讯)可能有很多人都认为无标题栏窗体的移动是非常简单的,网上很多的朋友也给出了一些方法,大多说人给出的方法是在窗体的privite部分创建一个私有过程 procedure WMN

(中国软件网讯)可能有很多人都认为无标题栏窗体的移动是非常简单的,网上很多的朋友也给出了一些方法,大多说人给出的方法是在窗体的privite部分创建一个私有过程 procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST; 就像这样的过程,这个原理就是发送消息给系统,欺骗鼠标点击的地方(也就是窗体的客户区)是窗体的标题栏,然而经过我的测试如果窗体上有其他的控件,比如一个TButton,那么TButton的事件是不会被触发的,所以此思路不可以。还有的人给出了使用MouseMove等一系列事件来进行窗体的Top和Left进行运算的。

1。首先建一个窗体,将BorderStyle属性设置为bsSingle

2。放一个TImage,载入一张图片,如下图

3。用PS打开TImage中载入的图片,来获取颜色

3。然后双击Form1下的Color属性值,在弹出的颜色对话框中点击“规定自定义颜色”,然后在红、绿、蓝后面的方框里填写上PS的拾色器里面的R、G、B后面对应的数值,如下图:

4。点击“添加到自定义颜色”,再在“自定义颜色”的方框上点击自己定义好的颜色,这时自定义的颜色会出现了一个一个黑色的边框,然后确定。这样,窗体的简单美化就完成了。

5。选择TImage组件,选择Events选项卡,选择OnMouseDown事件,为其添加代码如下:

	procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  Perform(WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;

这里我解释一下:

ReleaseCapture 释放鼠标的捕获状态

Perform(WM_NCLBUTTONDOWN, HTCAPTION, 0); 发送鼠标左键获取到的状态为窗体的标题栏的系统消息,其达到欺骗操作系统所点击的地方是窗体的标题栏。

这样一个既可以拖动又可以响应其他组件的无标题栏窗体就完成了。

如果你还有耐心的话,也可以继续为窗体添加一些特效,比如窗体时圆角的、像MSN那样慢慢滚动上来的消息框一样让你的窗体滚动上来,这里我就不截图了,直接给出代码:

	procedure TForm1.FormCreate(Sender: TObject);
var
  Hnd: THandle;
begin
  Hnd := CreateRoundRectRGN(0, 0, Width, Height, 15, 15);
  SetWindowRGN(Handle, Hnd, True);
  AnimateWindow(Handle, 1000, AW_SLIDE + AW_VER_NEGATIVE);
end;

【说明】1。先定义一个句柄变量Hnd;2。使用Win API函数CreateRoundRectRGN创建圆角矩形区域;3。使用API函数SetWindowRGN设置窗体为圆角的;4。AnimateWindow这个函数用来设置窗体的出场方式(这里的表述可能不太精确,还请见谅)这个函数有很多参数的,具体自己查吧。

最后我们再来编写程序的关闭时的渐隐效果,还是使用AnimateWindow函数来实现的,不过这个函数只是让窗体隐藏了,并没有真正的关闭,所以你还得使用一句关闭代码来关闭窗体,好了不费话了,直接给代码了:

	AnimateWindow(Handle, 2000, AW_SLIDE + AW_BLEND + AW_HIDE);
  Application.Terminate;
(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片