手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

Delphi下实现QQ窗体自动隐藏探索简介

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

最后需要注意的是,代码中出现的Left、Top、Right、Bottom都是RECT的参数,而Width和Height才是窗体Form1的属性。

接下来我们要处理TTimer的OnTimer事件了。在WMMOVING过程中,当Fanchors不为空时,TTimer启动;反之,TTimer关闭。OnTimer事件的代码如下:

procedure TForm1.Timer1Timer(Sender: TObject); 
 const 
  cOffset = 2; 
 begin 
  if WindowFromPoint(Mouse.CursorPos) = Handle then 
  begin 
   if akLeft in FAnchors then Left := 0; 
   if akTop in FAnchors then Top := 0; 
   if akRight in FAnchors then 
    Left := Screen.Width - Width; 
   if akBottom in FAnchors then 
    Top := Screen.Height - Height; 
   end else 
   begin 
    if akLeft in FAnchors then Left := -Width   cOffset; 
    if akTop in FAnchors then Top := -Height   cOffset; 
    if akRight in FAnchors then 
     Left := Screen.Width - cOffset; 
    if akBottom in FAnchors then 
     Top := Screen.Height - cOffset; 
  end; 
end;

在这里,我们首先定义一个常量cOffset去表示窗体隐藏后显露部分的大小。然后我们利用WindowFromPoint这个Windows API函数检测鼠标是否位于窗体之上。接下来的判断就是处理在显示和隐藏状态下窗体Left 和Top 属性值的设置。注意,针对Fanchors中存在不同值的情况,窗体Left和Top的设置是各不相同的,但是这些设置只有顺序上的差异而并没有优先级别的差异。(为什么要提到这一点呢?)

最后需要注意的是:在本事件中Top、Left、Width和Height都是窗体Form1的属性值。

好了,有关窗体隐藏的核心代码已经介绍完毕了,不过要达到预期效果,窗体Form1在创建时还必须做一些准备工作,代码如下:

procedure TForm1.FormCreate(Sender: TObject); 
begin 
 Timer1.Enabled := False; 
 Timer1.Interval := 200; 
 FormStyle := fsStayOnTop; 
end;

这里的代码相对简单,不过值得指出的是对Form1的FormStyle 属性的设置。FormStyle 为fsStayOnTop时可保证Form1始终位于最前显示。从效果角度看,当系统工具栏为“总在最前显示”时是最为明显的,因为若窗体移动到系统工具栏上时也不会被其所遮盖。

(T127)

上一篇: 一步步教你如何优化Delphi字串查找
下一篇: 如何用Delphi实现局域网内消息传递

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!