Delphi实现QQ窗体的缩入伸出功能

Delphi实现QQ窗体的缩入伸出功能,第1张

Delphi实现QQ窗体的缩入伸出功能,第2张

不知道大家有没有想过,在使用QQ时,QQ的收放功能是如何实现的?达到这种效果的关键是如何判断当前鼠标指针下的窗体是否是我们的程序窗体。GetCursorPos()是一个API函数,可以获取鼠标指针在屏幕上的坐标。通过将它与FindVCLWindow()相结合,可以很容易地获得鼠标指针下的VCL可视化组件。但是,当表单中有多个VCL可视组件时,如TPanel、TMemo等。,然后我们要找到它们的父级,最后得到TForm,就是指我们的程序形式。按照这个思路,我定制了getFormName()函数,可以获取当前鼠标指针下的表单名称。列出以下程序的主要实现代码,供您参考:

//自定义函数getFormNameate获取名称
函数getFormNameate (x,y: integer):鼠标指针下表单的字符串;
var
P:t point;
W:twin control;
begin
P . X:= X;
P . Y:= Y;
W:= FindVCLWindow(P);//获取鼠标指针下的VCL可视化组件
if(nilw)then
begin
while W . Parent nildo//保持查找当W的Parent不是空
W:= W . Parent .
Result:= W . Name;//最后返回表单名称
end
else
begin
result:=“”;
end;
end;
过程TForm1。Timer1Timer(发送方:to object);
var
winPos:TPoint;
begin
if(form 1 . top = screen . width-form 1 . width-3)then//judge
begin
getcursorpos(winpos);//获取当前鼠标指针在屏幕上的坐标
//当鼠标指针下的窗体名称等于form1 . Name
if form 1 . Name = getformname at(winpos . x,winpos.y)然后
{这里我们可以为form 1取一个特殊的名称,以防另一个窗体名称与其相同}
begin
form 1 . timer 2 . enabled:= false;//停用定时器2
form1。top:= 0;//form1的顶部与屏幕对齐
end
else
form 1 . timer 2 . enabled:= true;//open timer 2
end;
end;
过程TForm1。Timer2Timer(发送方:to object);
如果form1,则开始
。顶部表单1。Top:=-(form1。身高-10);//将form1上移露出屏幕顶部10个像素
end;

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Delphi实现QQ窗体的缩入伸出功能

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情