国内firemonkey的用户群还不多。这帖子很难有太大的响应。
解决方案 »
- 获取的系统时间,如何精确到毫秒?
- 大家谁能告诉我怎么成为CSDN的Blog呀
- 初学者问题:frame 跟 form有什么区别?
- 能把程序的运行结果,写回有本身exe文件中吗?
- 学dephi到底有没有前途阿?听人说很烂的,VC比他强n倍的说
- 请问谁有语音查询方面的资料或例子?谢谢
- 关于ord函数用法
- 想离开武汉找一份程序员的工作
- char(Key) 得到的字符为什么都是大写的没小写?
- 高分求救:access 数据库怎样添加用户,并设置密码啊,为什么delphi中我的ado连接只能使用不带密码的admin,其他都报错啊?
- '' 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;