国内firemonkey的用户群还不多。这帖子很难有太大的响应。

解决方案 »

  1.   

    用一个动画 当x点靠近top 你的程序的height 由 最大 变为 1(变为0 就看不到了)
      

  2.   

    窗体变化事件中 判断 TOP值。 然后向上缩放。。并设置窗体置顶这应该就达到要求了。最困难的应该就是缩放上去后置顶的问题。比如QQ置顶后点击显示桌面图标 窗体还会在顶部有一条直线供用户选择。。
    而你要做的就是这个。其它实现起来比较容易。
      

  3.   

    Windows的句柄和函数一样可以调用啊.谁告诉你不能调用的,除非你要做MacOS下的产品
      

  4.   

    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;