xe2中的FireMonkey HD窗体如何做成像QQ自动顶部隐藏功能窗体,是否有高人给出答案! 国内firemonkey的用户群还不多。这帖子很难有太大的响应。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用一个动画 当x点靠近top 你的程序的height 由 最大 变为 1(变为0 就看不到了) 窗体变化事件中 判断 TOP值。 然后向上缩放。。并设置窗体置顶这应该就达到要求了。最困难的应该就是缩放上去后置顶的问题。比如QQ置顶后点击显示桌面图标 窗体还会在顶部有一条直线供用户选择。。而你要做的就是这个。其它实现起来比较容易。 Windows的句柄和函数一样可以调用啊.谁告诉你不能调用的,除非你要做MacOS下的产品 var Form1: TForm1; FormTop, FormLeft: Integer; IsFormMoved, IsStartHide, IsOnDeskTop: Boolean; CurPos: TPoint;implementation{$R *.fmx}procedure TForm1.FormCreate(Sender: TObject);begin FormTop := Top; FormLeft := Left; IsFormMoved := False; IsStartHide := False; IsOnDeskTop := False;end;//只需要一个TTimer控件就可以了procedure TForm1.tmrScanMoveTimer(Sender: TObject);begin //实时截获 鼠标的位置 GetCursorPos(CurPos); //判断窗口是否被移动了 if (Left <> FormLeft) or (Top <> FormTop) then IsFormMoved := True else IsFormMoved := False; //如果窗口移动了,就判断鼠标在那一刹那的位置。 if IsFormMoved then begin if CurPos.Y <= 0 then //判断鼠标是否到了 屏幕的顶端。 IsStartHide := True else begin //在隐藏期间的窗口移动不作判断 if (Top <> 0) and (Top <> (-Height+1)) then IsStartHide := False; end; FormLeft := Left; FormTop := Top; end; //如果条件满足,窗口的停靠隐藏功能开始 if IsStartHide then begin //判断鼠标在不在窗口中 if PtInRect(Bounds(Left, Top, Width, Height), CurPos) then Top := 0 else Top := -Height + 1; IsOnDeskTop := True; end else IsOnDeskTop := False; //经过我的实际应用,这段代码在遇到其它程序全屏时,也可见,比如看视频,打游戏。 //另外 窗体的属性 “FormStyle” 也要设置为 【StayOnTop】 if IsOnDeskTop then begin Self.Show; Self.BringToFront; end;end; 请教,如何检测activeX网页控件的内存泄漏问题!! 关于IHTMLDocument2 为什么我的关机程序不能正常关机呢? excel数据道出错误问题 时间查询 cxGrid中如何知道选择了几条记录? 文件操作问题?急! 如何动态创建adoquery,并且建立connection? 在delphi中怎么调用存储过程 今天我的系统时间星期出错,请问各位你有没有。 '' is not a valid float point value 法律方面的问题,我写的软件被人拿来干非法的事
而你要做的就是这个。其它实现起来比较容易。
Form1: TForm1;
FormTop, FormLeft: Integer;
IsFormMoved, IsStartHide, IsOnDeskTop: Boolean;
CurPos: TPoint;implementation{$R *.fmx}procedure TForm1.FormCreate(Sender: TObject);
begin
FormTop := Top;
FormLeft := Left;
IsFormMoved := False;
IsStartHide := False;
IsOnDeskTop := False;
end;//只需要一个TTimer控件就可以了
procedure TForm1.tmrScanMoveTimer(Sender: TObject);
begin
//实时截获 鼠标的位置
GetCursorPos(CurPos); //判断窗口是否被移动了
if (Left <> FormLeft) or (Top <> FormTop) then
IsFormMoved := True
else
IsFormMoved := False; //如果窗口移动了,就判断鼠标在那一刹那的位置。
if IsFormMoved then
begin
if CurPos.Y <= 0 then //判断鼠标是否到了 屏幕的顶端。
IsStartHide := True
else
begin
//在隐藏期间的窗口移动不作判断
if (Top <> 0) and (Top <> (-Height+1)) then
IsStartHide := False;
end;
FormLeft := Left;
FormTop := Top;
end; //如果条件满足,窗口的停靠隐藏功能开始
if IsStartHide then
begin
//判断鼠标在不在窗口中
if PtInRect(Bounds(Left, Top, Width, Height), CurPos) then
Top := 0
else
Top := -Height + 1; IsOnDeskTop := True;
end
else
IsOnDeskTop := False; //经过我的实际应用,这段代码在遇到其它程序全屏时,也可见,比如看视频,打游戏。
//另外 窗体的属性 “FormStyle” 也要设置为 【StayOnTop】
if IsOnDeskTop then
begin
Self.Show;
Self.BringToFront;
end;
end;