如何实现象QQ一样的动态效果界面(200分)

  • 主题发起人 主题发起人 xiaozhangyang
  • 开始时间 开始时间
X

xiaozhangyang

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现象QQ一样的动态效果界面。(是工程中的一个子窗体)
1.窗体设置成什么类型合适,并在托盘显示图标,最好是动态的图标。
2.当鼠标移动到一定位置时,慢慢打开
3.当鼠标移出界面时,慢慢收回去。
 
1.窗体设置成什么类型合适,并在托盘显示图标,最好是动态的图标。
你可以选用第三放控件DevExpress ExpressBar 5.1.1来做出分页面显示的主窗体.,动态托盘你也可以用第三放控件systray,或则自己用API:shell_notifyicon(NIM_ADD,@tuopan),shell_notifyicon(nim_modify,@tuopan)交替使用,再加个 timer组件,控制转换显示时间.
三方控件可以到盒子,园地去下.
2.当鼠标移动到一定位置时,慢慢打开
3.当鼠标移出界面时,慢慢收回去。
在 TForm1 = class(TForm)
private
procedure CMMouseEnter(var Message: TMessage)
message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage)
message CM_MOUSELEAVE;
{ Private declarations }
public
{ Public declarations }
end;
重载这两个消息,并对鼠标进来和出去的消息进行处理.,加入自己的代码.
别忘了keypreview的属性设置为TRUE.

最后的效果应该差不多.


 
谢谢 hygsxy:
我用过程CMMouseEnter, CMMouseLeave试了一下,原本想使用它来控制窗体的移动,可是当鼠标移动到窗体内的控件时,也会发生这二个消息。怎么处理好呢?
 
只要是vcl控件都有CMMouseEnter, CMMouseLeave这两个消息.,你的屏蔽掉除了窗体能响应此消息外,其他的控件不响应此消息.
你这样处理下.
procedure TForm1.CMMouseEnter(var Message: TMessage);
var
p:Tpoint;
begin
getcursorpos(p);
if windowfrompoint(p)=form1.handle then
begin
//显示QQ窗体
end
end;
procedure CMMouseLeave(var Message: TMessage)

进行类似处理.

这样就行了.keypreview的属性是对于键盘有用的,对鼠标不起作用,我记错了...呵呵....
 
var i:integer;//全局变量
,,,,,,,,
,,,,,,,
,,,,,,,
var
p:Tpoint;
begin
getcursorpos(p);
if windowfrompoint(p)=form1.handle and i=0 then
begin
inc(i);
//显示QQ窗体
end
end;
这样更好点.自己试一下,把结果反馈给我,我再想法...........
 
再次感谢,我在测试中。
 
用appbar这个类吧,怎样设置就要你自已来设置啦,也有控件的
想下载就到源码空间吧
 
运行怎么样了啊,说话....
 
我还需要多点信息,你是用来做什么的,是用来提示的吗?
我有代码,但不知道合不合你的要求。
我的是这样的;
1.在托盘显示图标;
2.当鼠标移动到图标位置,慢慢打开
3.当鼠标移出界面时,慢慢收回去。

 
谢谢提示。我基本做成了,没用三方控件。
 
祝贺你。没用三方控件能作出QQ效果,不简单。再次祝贺你。
 
后退
顶部