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

news2024/9/21 22:29:43

目录

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 do
   begin
      CustomTitleBar.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.coloradmin.cn/o/824429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TypeC拓展设计方案|TypeC转HDMI设计方案|CS5261/CS5265芯片设计参数对比

集睿智远CS5261/CS5265都可以用于设计TypeC转HDMI方案,低成本TypeC扩展坞设计方案,而两者也有些差异:1.CS5261支持DP1.4输入,一个HDMI1.4输出,即HDMI输出为4K30HZ ;CS5265DP1.4到HDMI2.0转换芯片,即HDMI输出…

Linux之 环境变量

什么是环境变量 windows中也有个 Linux 环境变量 env linux和windows环境变量,功能类似的, windows系统的环境变量,在cmd中可以之间调用程序运行。这些程序的执行程序的路径,一般编辑在path变量中 环境变量都分全局的&#xff…

Android性能优化—ANR问题分析

一、ANR是什么? ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。可以简单的理解为应用…

网络入侵探测器Pi.Alert

什么是 Pi.Alert ? Pi.Alert 是 WIFI/LAN 入侵探测器。通过扫描连接到您的 WIFI/LAN 的设备,提醒您未知设备的连接。它还警告断开“始终连接”的设备。 Pi.Alert 使用了三种扫描方式 方式1:arp-scan。arp扫描系统实用程序用于使用 arp 帧搜索…

【雕爷学编程】MicroPython动手做(28)——物联网之Yeelight 3

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

CommunityToolkit.Mvvm8.1 viewmodel使用-旧式写法

0.说明 CommunityToolkit.Mvvm8.1有一个重大更新的功能:源生成器功能,它极大简化我们的mvvm代码 但是本篇先总结一下原写法,下篇再总结源生成器功能 1.模型定义 必须继承:ObservableObject 2.viewmodel代码实现 几个关键点: SetProperty是给属性赋值,并且通知更改通知 But…

钉钉对接打通金蝶云星空获取流程实例列表详情(宜搭)接口与其他应收单接口

钉钉对接打通金蝶云星空获取流程实例列表详情(宜搭)接口与其他应收单接口 对接系统钉钉 钉钉(DingTalk)是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台,提供PC版,Web版和手机版,有考…

Linux知识点 -- VS Code远程连接服务器协助开发

Linux知识点 – VS Code远程连接服务器协助开发 文章目录 Linux知识点 -- VS Code远程连接服务器协助开发一、VS Code的使用1.使用VS Code进行C语言编译与运行2.使用VS Code进行C代码的编译与运行 二、使用VS Code连接云服务器三、使用VS Code进行GDB调试 一、VS Code的使用 1…

Redis的基础知识

目录 一、什么是Redis 二、关于Redis的一些基本知识 (1)set命令 (2)get命令 三、Redis中的一些常用命令 (1)keys (2)exists (3)type (4…

vite+typescript项目 :找不到模块“./***.vue”或其相应的类型声明——解决方案

vue3ts报错&#xff1a; 找不到模块“./App.vue”或其相应的类型声明。ts(2307) 解决方法&#xff1a; 1、在src文件夹找到 vite-env.d.ts 加入以下代码&#xff1a; declare module *.vue {import type { DefineComponent } from vueconst vueComponent: DefineComponent<…

Nodejs 第六章(npx)

npx是什么 npx是一个命令行工具&#xff0c;它是npm 5.2.0版本中新增的功能。它允许用户在不安装全局包的情况下&#xff0c;运行已安装在本地项目中的包或者远程仓库中的包。 npx的作用是在命令行中运行node包中的可执行文件&#xff0c;而不需要全局安装这些包。这可以使开…

手机python编程软件怎么用,手机python编程软件下载

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;手机python编程软件保存的代码在哪里&#xff0c;手机python编程软件怎么运行&#xff0c;现在让我们一起来看看吧&#xff01; 原标题&#xff1a;盘点几个在手机上可以用来学习编程的软件 前天在悟空问答的时候&#…

win上打包发包发布

地址 192.168.X.X 账号密码 zhanghaomima 连接方式&#xff1a; Win自带工具&#xff1a; 远程桌面连接 更新客户端代码 直接替换 D:\xmes\client3\elements 下的 cust-bundles 文件夹 更新mobile代码 直接替换 D:\xmes\mobile\scripts 下的fragments文件夹 更新服务端代…

【物理】带电粒子在磁场和电场中移动的 3D 轨迹研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

2023年华数杯建模思路 - 案例:粒子群算法

# 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Particle Swarm Optimization,PSO&#xff09;是一种模仿鸟群、鱼群觅食行为发展起来的一种进化算…

基于元宇宙与 Web3 的虚拟世界:客户体验的颠覆与重生

随着科技的飞速发展&#xff0c;互联网已经逐渐融入了我们生活的方方面面。然而&#xff0c;传统的互联网体验在很多方面仍然存在局限性。客户需要花费大量时间和精力去实体店购买商品、在电商平台上筛选商品&#xff0c;或者在固定的时间和地点接受教育。这些问题在元宇宙与 W…

PHP最简单自定义自己的框架(一)

为啥要定义自己的框架&#xff1a; 定制化需求&#xff1a;每个项目都有不同的需求和特点&#xff0c;使用通用的框架可能无法满足所有的要求。自定义框架可以根据具体需求进行定制&#xff0c;提供更加灵活和符合项目需求的解决方案。学习和成长&#xff1a;自定义框架是一个很…

EasyRecovery15简体中文专业版电脑数据恢复软件

除常规数据恢复外&#xff0c;更有高级工具&#xff0c;恢复更多、更专业。Ontrack EasyRecovery 15是一款功能强大的硬盘数据恢复软件&#xff0c;支持恢复所有文件、文件夹、文档和其它有用数据&#xff0c;也支持恢复word、Excel、PPT文件办公文档&#xff0c;所有文件夹里的…

宋浩高等数学笔记(九)多元函数微分学及其应用

本章内容和知识点很多&#xff0c;有关多元微分学应用的部分&#xff1a;比如方向导数梯度&#xff0c;暂时不发布笔记&#xff0c;日后更新后会补齐。