xe2中的FireMonkey HD表單如何做成像QQ自動頂部隱藏功能表單,是否有高人給出答案!
注:當表單靠近頂部時,自動在頂部隱藏,就像qq,滑鼠靠近,又出來。
我知道不能呼叫windows的句柄和函式。是否有好的解決辦法。
uj5u.com熱心網友回復:
沒人知道嗎?uj5u.com熱心網友回復:
國內firemonkey的用戶群還不多。這帖子很難有太大的回應。uj5u.com熱心網友回復:
擼過圍觀,fm還只是個笑話,別當真用在專案里啊
uj5u.com熱心網友回復:
用一個影片 當x點靠近top 你的程式的height 由 最大 變為 1(變為0 就看不到了)uj5u.com熱心網友回復:
表單變化事件中 判斷 TOP值。 然后向上縮放。。并設定表單置頂。。。這應該就達到要求了。最困難的應該就是縮放上去后置頂的問題。比如QQ置頂后點擊顯示桌面圖示 表單還會在頂部有一條直線供用戶選擇。。而你要做的就是這個。其它實作起來比較容易。
uj5u.com熱心網友回復:
Windows的句柄和函式一樣可以呼叫啊.誰告訴你不能呼叫的,除非你要做MacOS下的產品uj5u.com熱心網友回復:
varForm1: 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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/93160.html
上一篇:求一個delphi管理資訊系統
