FMX Windows下无边框窗口处理
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下无边框窗口处理相关推荐
- Electron无边框窗口(最小化、最大化、关闭、拖动)以及动态改变窗口大小
文章目录 一.目标原型 1. 目标 2. 原型设计 3. 原型初步实现 二.无边框窗口 1. 要点 2. 改造 三.可拖拽区 1. 要点 2. 改造 四.最小化.最大化.关闭 1. 要点 2. 改造 ...
- Qt Quick无边框窗口
开发环境:Qt Creator 5.6 内容: 使用 Qt Quick创建无边框窗口 Qt Quick是一个无比强大.无比方便快捷的跨平台的开发框架,并且能通过Qt强大的元对象系统实现qml与c+ ...
- QT实现完美无边框窗口(可拖动,可调整大小)
效果如下: 只需定义 nativeEvent 事件即可完成这样的功能 ,但要注意的是,这是通过Windows api实现的. 样例如下:(注意头文件) framelesswidget.h #ifnde ...
- QT实现可移动和改变尺寸的无边框窗口
2019独角兽企业重金招聘Python工程师标准>>> 实现QT无边框窗口的拖动,尺寸改变.需要的时候从该类继承,派生类需要定义为QWidget. 头文件: #ifndef SIZE ...
- Windows下打开命令窗口几种方式
Windows下打开命令窗口几种方式 1.点击开始 --> Windows系统 -->点击击命令提示符 ,就可以运行 注意:如果以管理员身份运行,就选中命令提示符右击更多,点击以管理员身份 ...
- python 隐藏进程_python在windows下创建隐藏窗口子进程的方法
python在windows下创建隐藏窗口子进程的方法 发布于 2015-11-08 20:56:53 | 213 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一 ...
- [乱说]Electron 无边框窗口最大化最小化关闭功能
title: '[乱说]Electron 无边框窗口最大化最小化关闭功能' date: 2017-11-21 21:43:40 tags: Electron 无边框窗口最大化最小化关闭功能 目的 实现 ...
- Windows下无感后台启动Vmware虚拟机配置方法
Windows下无感后台启动Vmware虚拟机配置方案(以Ubuntu为例) 必要准备 1.在Vmware虚拟机里有一个虚拟机且已经设置静态IP(不同OS设置方法不同,这里不再概述) 2.Window ...
- 【C++·Qt】Qt透明无边框窗口以及拖动
窗口透明 1.窗口整体透明(包含其子空控件) //窗口以及子控件都透明 //setAttribute(Qt::WA_WState_WindowOpacitySet); //网上说直接设置不起作用,需 ...
最新文章
- 影像组学视频学习笔记(37)-机器学习模型判断脑卒中发病时间(文献报告)、Li‘s have a solution and plan.
- 20200605笔记
- C++虚函数的实现方式
- VTK:数据结构比较用法实战
- 动态规划算法分析与探究
- fastjson 版本_以快标榜的fastjson,快没快多少,倒是漏洞一大堆
- 【辨异】 —— 带宽与宽带
- 模幂运算问题,使用朴素算法和重复-平方算法(快速幂+C#计算程序运行时间)
- WIn10桌面美化(一)Rainmeter的使用
- TCP与UDP的区别
- 给btn添加hover、active、focus效果
- 每天努力再多一点,每天坚持再久一点
- scrapy 爬取糗事百科段子篇章二(下载用户头像)
- 卸载微软拼音输入法图解
- 字符串类(CString)
- 宝塔wordpress安装及使用(宝塔wordpress建站教程)
- 智慧医疗、互联网医疗相关术语
- 【数据结构】史上最好理解的红黑树讲解,让你彻底搞懂红黑树
- PWM信号通过功率三极管控制电机,PWM波形失真问题。
- MT6735平台UART打印问题
热门文章
- PICT如何生成有效的测试用例
- android手机远程控制_如何远程查看和控制您的Android手机
- vue中的mixins的介绍和使用
- 程序员们,保护身体,不要成为一个药罐子!
- python怎么调用navicat_Navicat使用与python操作数据库
- Linux 之nmcli网络配置命令
- 来电科技-自助租借充电宝
- 李宏毅_Machine Learning_1
- OpenSCENARIO——对无人驾驶场景的定义
- 绝地求生6月22号服务器维护中,绝地求生2019年5月22日维护到几点?吃鸡5月22日更新内容...