1、窗口的Transparency不能为True

2、窗口BorderIcons设为[]

3、窗口BorderStyle设为Single

4、重定义WindowBorderStyle样式,把下面这段粘到StyleBook里

object TLayoutStyleName = 'windowborderstyle'Align = CenterSize.Width = 800.000000000000000000Size.Height = 600.000000000000000000Size.PlatformDefault = FalseTabOrder = 52object TStyleObjectStyleName = 'mask'Align = ContentsLocked = TrueWrapMode = TileVisible = FalseSourceLink = <itemCapInsets.Left = 7.000000000000000000CapInsets.Top = 7.000000000000000000CapInsets.Right = 7.000000000000000000CapInsets.Bottom = 7.000000000000000000end>endobject TActiveStyleObjectStyleName = 'left'Align = MostLeftLocked = TrueOpacity = 0.000000000000000000Position.Y = 1.000000000000000000Size.Width = 1.000000000000000000Size.Height = 599.000000000000000000Size.PlatformDefault = FalseActiveTrigger = ActiveActiveLink = <itemSourceRect.Left = 3.000000000000000000SourceRect.Top = 2.000000000000000000SourceRect.Right = 54.000000000000000000SourceRect.Bottom = 10.000000000000000000end>SourceLink = <itemSourceRect.Left = 2.000000000000000000SourceRect.Top = 2.000000000000000000SourceRect.Right = 54.000000000000000000SourceRect.Bottom = 10.000000000000000000end>TouchAnimation.Link = <>Opaque = Trueendobject TActiveStyleObjectStyleName = 'right'Align = MostRightLocked = TrueOpacity = 0.000000000000000000Position.X = 799.000000000000000000Position.Y = 1.000000000000000000Size.Width = 1.000000000000000000Size.Height = 599.000000000000000000Size.PlatformDefault = FalseActiveTrigger = ActiveActiveLink = <itemSourceRect.Left = 6.000000000000000000SourceRect.Top = 3.000000000000000000SourceRect.Right = 47.000000000000000000SourceRect.Bottom = 10.000000000000000000end>SourceLink = <itemend>TouchAnimation.Link = <>Opaque = Trueendobject TActiveStyleObjectStyleName = 'bottom'Align = BottomCapMode = TileLocked = TrueOpacity = 0.000000000000000000Position.X = 1.000000000000000000Position.Y = 599.000000000000000000Size.Width = 798.000000000000000000Size.Height = 1.000000000000000000Size.PlatformDefault = FalseActiveTrigger = ActiveActiveLink = <itemSourceRect.Left = 3.000000000000000000SourceRect.Top = 1.000000000000000000SourceRect.Right = 46.000000000000000000SourceRect.Bottom = 9.000000000000000000end>SourceLink = <itemSourceRect.Left = 5.000000000000000000SourceRect.Top = 1.000000000000000000SourceRect.Right = 47.000000000000000000SourceRect.Bottom = 8.000000000000000000end>TouchAnimation.Link = <>Opaque = Trueendobject TActiveStyleObjectAlign = MostTopLocked = TrueOpacity = 0.000000000000000000Size.Width = 800.000000000000000000Size.Height = 1.000000000000000000Size.PlatformDefault = FalseActiveTrigger = ActiveActiveLink = <itemSourceRect.Left = 12.000000000000000000SourceRect.Top = 2.000000000000000000SourceRect.Right = 61.000000000000000000SourceRect.Bottom = 10.000000000000000000end>SourceLink = <itemSourceRect.Left = 5.000000000000000000SourceRect.Top = 2.000000000000000000SourceRect.Right = 45.000000000000000000SourceRect.Bottom = 9.000000000000000000end>TouchAnimation.Link = <>Opaque = Trueendobject TLayoutStyleName = 'client'Align = ClientLocked = TrueHitTest = TrueSize.Width = 798.000000000000000000Size.Height = 598.000000000000000000Size.PlatformDefault = Falseend
end

5、在窗口里重载一个过程

// 窗口中声明部分
protectedprocedure CreateHandle; override;// 下面是实现部分
uses FMX.Platform.Win;procedure TFrmMain.CreateHandle;
varwnd: HWND;oldStyle: NativeInt;
begininherited;wnd := FormToHWND(Self);if wnd <> 0 thenbeginoldStyle := Winapi.Windows.GetWindowLong(wnd, GWL_EXSTYLE);Winapi.Windows.SetWindowLong(wnd, GWL_EXSTYLE, oldStyle or WS_EX_APPWINDOW or WS_MINIMIZEBOX);oldStyle := Winapi.Windows.GetWindowLong(wnd, GWL_STYLE);Winapi.Windows.SetWindowLong(wnd, GWL_STYLE, oldStyle or WS_MINIMIZEBOX or WS_MAXIMIZEBOX);end;
end;

6、最小化按钮实现

procedure TFrmMain.btnMinimizeClick(Sender: TObject);
beginWinapi.Windows.PostMessage(FormToHWND(Application.MainForm), WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;

7、最大化\不愿按钮实现

procedure TFrmMain.btnMaxRestoreClick(Sender: TObject);
beginif IsZoomed(FormToHWND(Self)) thenbeginWinapi.Windows.ShowWindow(FormToHWND(Application.MainForm), SW_SHOWNORMAL);WindowState := TWindowState.wsNormal;btnMaxRestore.StyleLookup := 'BtnMaximizeStyle';endelsebeginWinapi.Windows.ShowWindow(FormToHWND(Application.MainForm), SW_SHOWMAXIMIZED);WindowState := TWindowState.wsMaximized;btnMaxRestore.StyleLookup := 'BtnRestoreStyle';end;
end;

8、自定义标题栏双击、拖动事件


procedure TFrmMain.backTopDblClick(Sender: TObject);
beginbtnMaxRestoreClick(nil);//双击时执行最大化\还原按钮事件
end;procedure TFrmMain.backTopMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Single);
begin// 最大化时不允许拖动if WindowState = TWindowState.wsMaximized thenExit;// 鼠标左键按下时允许拖动if ssLeft in Shift thenSelf.StartWindowDrag;
end;

FMX Windows下无边框窗口处理相关推荐

  1. Electron无边框窗口(最小化、最大化、关闭、拖动)以及动态改变窗口大小

    文章目录 一.目标原型 1. 目标 2. 原型设计 3. 原型初步实现 二.无边框窗口 1. 要点 2. 改造 三.可拖拽区 1. 要点 2. 改造 四.最小化.最大化.关闭 1. 要点 2. 改造 ...

  2. Qt Quick无边框窗口

    开发环境:Qt Creator 5.6 内容:  使用 Qt  Quick创建无边框窗口 Qt Quick是一个无比强大.无比方便快捷的跨平台的开发框架,并且能通过Qt强大的元对象系统实现qml与c+ ...

  3. QT实现完美无边框窗口(可拖动,可调整大小)

    效果如下: 只需定义 nativeEvent 事件即可完成这样的功能 ,但要注意的是,这是通过Windows api实现的. 样例如下:(注意头文件) framelesswidget.h #ifnde ...

  4. QT实现可移动和改变尺寸的无边框窗口

    2019独角兽企业重金招聘Python工程师标准>>> 实现QT无边框窗口的拖动,尺寸改变.需要的时候从该类继承,派生类需要定义为QWidget. 头文件: #ifndef SIZE ...

  5. Windows下打开命令窗口几种方式

    Windows下打开命令窗口几种方式 1.点击开始 --> Windows系统 -->点击击命令提示符 ,就可以运行 注意:如果以管理员身份运行,就选中命令提示符右击更多,点击以管理员身份 ...

  6. python 隐藏进程_python在windows下创建隐藏窗口子进程的方法

    python在windows下创建隐藏窗口子进程的方法 发布于 2015-11-08 20:56:53 | 213 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一 ...

  7. [乱说]Electron 无边框窗口最大化最小化关闭功能

    title: '[乱说]Electron 无边框窗口最大化最小化关闭功能' date: 2017-11-21 21:43:40 tags: Electron 无边框窗口最大化最小化关闭功能 目的 实现 ...

  8. Windows下无感后台启动Vmware虚拟机配置方法

    Windows下无感后台启动Vmware虚拟机配置方案(以Ubuntu为例) 必要准备 1.在Vmware虚拟机里有一个虚拟机且已经设置静态IP(不同OS设置方法不同,这里不再概述) 2.Window ...

  9. 【C++·Qt】Qt透明无边框窗口以及拖动

    窗口透明  1.窗口整体透明(包含其子空控件) //窗口以及子控件都透明 //setAttribute(Qt::WA_WState_WindowOpacitySet); //网上说直接设置不起作用,需 ...

最新文章

  1. 影像组学视频学习笔记(37)-机器学习模型判断脑卒中发病时间(文献报告)、Li‘s have a solution and plan.
  2. 20200605笔记
  3. C++虚函数的实现方式
  4. VTK:数据结构比较用法实战
  5. 动态规划算法分析与探究
  6. fastjson 版本_以快标榜的fastjson,快没快多少,倒是漏洞一大堆
  7. 【辨异】 —— 带宽与宽带
  8. 模幂运算问题,使用朴素算法和重复-平方算法(快速幂+C#计算程序运行时间)
  9. WIn10桌面美化(一)Rainmeter的使用
  10. TCP与UDP的区别
  11. 给btn添加hover、active、focus效果
  12. 每天努力再多一点,每天坚持再久一点
  13. scrapy 爬取糗事百科段子篇章二(下载用户头像)
  14. 卸载微软拼音输入法图解
  15. 字符串类(CString)
  16. 宝塔wordpress安装及使用(宝塔wordpress建站教程)
  17. 智慧医疗、互联网医疗相关术语
  18. 【数据结构】史上最好理解的红黑树讲解,让你彻底搞懂红黑树
  19. PWM信号通过功率三极管控制电机,PWM波形失真问题。
  20. MT6735平台UART打印问题

热门文章

  1. PICT如何生成有效的测试用例
  2. android手机远程控制_如何远程查看和控制您的Android手机
  3. vue中的mixins的介绍和使用
  4. 程序员们,保护身体,不要成为一个药罐子!
  5. python怎么调用navicat_Navicat使用与python操作数据库
  6. Linux 之nmcli网络配置命令
  7. 来电科技-自助租借充电宝
  8. 李宏毅_Machine Learning_1
  9. OpenSCENARIO——对无人驾驶场景的定义
  10. 绝地求生6月22号服务器维护中,绝地求生2019年5月22日维护到几点?吃鸡5月22日更新内容...