当前位置: 首页 > news >正文

Delphi 开发不一样的窗体标题栏:TTitleBarPanel

目录

TTitleBarPanel 的使用

TTitleBarPanel 的使用进阶

一、设置标题栏高度、颜色

 二、个性化标题栏的关闭等按键


我们在用Delphi开发程序的时候,窗体的标题栏一般都是标准的windows标题栏,上面包括:程序图标、标题、最小化、最大化、关闭、帮助等按键。

 但是,有时候我们可以看到别人的程序标题栏很不一样,感觉很新颖,例如:

 支付宝开发过平台密钥工具程序的标题栏表面上看似乎和我们Delphi标准的标题栏没有区别,事实上是有很大区别的。目前你看到的区别至少:

  1. 标题栏的高度不一样,标准的Delphi标题栏的高度是没有办法正常调整的,是一个固定值;
  2. 标题栏的颜色不一样,标准的Delphi标题栏的颜色也是没有办法调整的。
  3. 最小化按键和关闭按键图标不是标准的按键图标,而是自定义的。

实际上,还有很多区别,比如我们能否在标题栏放置其他的控件,比如TButton、TLabel、TPanel等等。当然是可以的,这就是TTitleBarPanel控件。

TTitleBarPanel 是Delphi原生的控件,Delphi 10.4引入。在没有引入TTitleBarPanel控件前,一般我们要个性化标题,都是需要第三方的控件支持的。

TTitleBarPanel 允许在 VCL 窗体的标题栏区域放置控件。它为 CustomTitleBar(这个是Form的属性) 实现提供以下支持: 

  1. 支持设计期放置控件(可视化)。
  2. 集中管理标题栏中的控件。
  3. 支持自定义绘制 OnPaint。
  4. 允许自定义 VCL 表单的本地标题栏,类似于 Windows Explorer、Google Chrome 浏览器或其他应用程序。Windows 7 及更高版本支持该功能。

TTitleBarPanel 的使用

注意:

        要在标题栏上绘画或绘制任何内容以自定义标题栏,必须在窗体上放置 TTitleBarPanel控件,并将窗体的 CustomTitleBar.Control 属性设置为它。

第一步:

        在窗体上放置一个TTitleBarPanel控件(该控件位于windows10面板上)

 第二步:

  1.  设置窗体的CustomTitleBar.Control为TitleBarPanel1。
  2.  设置窗体的CustomTitleBar.Enabled 为 True

 第三步:

        此时就可以在TitleBarPanel1上放置其他控件了。

 

TTitleBarPanel 的使用进阶

通过修改窗体的CustomTitleBar中的属性,可以完全定制化窗体的标题栏:

  1. CustomTitleBar.SystemHeight:表示标题栏是否使用系统默认高度,默认是使用系统值;
  2. CustomTitleBar.SystemColors:表示是否使用系统默认的标题栏颜色,默认是使用系统值;
  3. CustomTitleBar.SystemButtons:是否使用系统的右上角那几个button;
  4. CustomTitleBar.ShowIcon:是否显示左上角长提图标,默认是显示;
  5. CustomTitleBar.ShowCaption:表示是否显示窗口标题内容。

通过设置以上属性,配合Form属性修改,即可实现非常理想的窗体标题栏。

特别注意:在超高分辨率和高清下设置参数绝对值其表现效果是不一样的!

一、设置标题栏高度、颜色

  with Self dobeginCustomTitleBar.SystemHeight := False;CustomTitleBar.Height       :=30;CustomTitleBar.SystemColors := False;CustomTitleBar.BackgroundColor := clred;end;

 二、个性化标题栏的关闭等按键

  1. CustomTitleBar.SystemButtons := False;   //实测似乎这个属性不用设置
  2. 关闭Form.BorderIcons:
  3. 然后自己在TitleBarPanel1放置SpeedButton或者图片实现外观自定义,功能模拟。

例如:

需要注意的坑:

Delphi在超高清(4K)和高清(2K)下,很多控件表现是不一样的,其中TitleBarPanel控件也一样,大家在使用的时候要注意,随着超高清显示器的普及,在开发Delphi程序的时候,一定要进行相关UI兼容性的测试,这里的兼容性斌不是不能使用,而是表现出来的UI界面不一致,不是原来期盼的结果。

http://www.lryc.cn/news/105435.html

相关文章:

  • Quartz中禁止并发机制源码级解析
  • 为什么从公有云迁移到私有云的越来越多?
  • 用shell实现MySQL分库分表操作
  • php 适配器模式
  • Scratch Blocks自定义组件之「下拉图标」
  • Robot Framweork之UI自动化测试---分层设计
  • MySQL8.0/8.x更新用户密码命令
  • 【MySQL】下载安装以及SQL介绍
  • 算法题--二叉树(二叉树的最近公共祖先、重建二叉树、二叉搜索树的后序遍历序列)
  • mysql的基础面经-索引、事务
  • Windows下双网卡配置静态路由,实现内外网同时使用
  • Spring整合Mybatis、Spring整合JUnit
  • Devops系统中jira平台迁移
  • 【雕爷学编程】MicroPython动手做(29)——物联网之SIoT
  • LAXCUS分布式操作系统引领科技潮流,进入百度首页
  • Linux--按行读取数据:fgets
  • express学习笔记5 - 自定义路由异常处理中间件
  • filebeat介绍
  • 使用SSM框架实现个人博客管理平台以及实现Web自动化测试
  • 【深度学习】MAT: Mask-Aware Transformer for Large Hole Image Inpainting
  • PyTorch BatchNorm2d详解
  • 慕课网Go-4.package、单元测试、并发编程
  • [JavaWeb]SQL介绍-DDL-DML
  • git源码安装(无sudo权限)
  • Web3 叙述交易所授权置换概念 编写transferFrom与approve函数
  • Redis系列二:Clion+MAC+Redis环境搭建
  • Linux下 Docker容器引擎基础(2)
  • 现场服务管理系统有哪些?5个现场服务管理软件对比
  • leetcode 912.排序数组
  • 利用MMPreTrain微调图像分类模型