Skip to content

About

A Lazarus component library with skin/style support: all controls are fully custom-drawn via BGRABitmap, their appearances are uniformly styled by lightweight CSS text themes (.tycss), delivering pixel-perfect identical UI rendering across Windows, Linux and macOS.

Resources

Contributing

Stars

80 stars

Watchers

7 watching

Forks

Latest commit

 

History

3,579 Commits

Folders and files

Repository files navigation

TyControls

Lazarus 自绘控件库。195 个控件全部由 BGRABitmap 绘制,外观由 .tycss 文本主题统一控制,在 Windows、Linux、macOS 上显示效果完全一致。

English: README.en.md · 更新日志: CHANGELOG.md

Ant Design Pro 布局示例

同一个程序,只换一个主题名:

classic win11 material3
classic 主题 win11 主题 material3 主题

三张图是同一个窗口、同一份代码,只改了主题名。主题不只换配色:classic 下按钮是立体边框、方角、渐变标题带。全部内置主题的对照见图库。

亮 / 暗 / 图片主题

亮色 暗色 green(图片主题)
亮色 暗色 绿色图片主题

亮暗是同一个主题文件里的两套 @mode 取值,可跟随操作系统。green 是照片背景加半透明控件的图片主题。

几个控件的样子

TTyStringGrid 按列指定编辑器:复选、星级、取色、按钮
数据网格
TTyTreeView 虚拟树、多列、三态复选
虚拟树
富输入控件 数值 / 货币 / 掩码 / 滑块 / 计算器
富输入
TTyChart 折线、柱状、饼图、环形图
图表
TTyRibbon 功能区、快速访问栏、Alt 键提示
功能区
TTyCalendar 周数、今日高亮、可选日期范围
日历
TTyAdvanceChart 直接读 ECharts 的配置,示例里是官方图库的例子
ECharts 式图表
TTyDBGrid 绑数据集的表格:勾选、查找下拉、格式化金额、多选
数据表格
TTyPropertyGrid 属性表格:点哪个控件就检查哪个,改了直接写回
属性表格
多滑块 TrackBar 区间、多值、渐变色标
多滑块

每个示例每个标签页的亮色、暗色截图都在图库里。


特性

  • 195 个控件:按钮、输入、列表、数据网格、虚拟树、Ribbon、日历、Shell 文件浏览、20 个自绘对话框、22 个数据感知控件,一套配齐
  • ECharts 式图表:TTyAdvanceChart 的配置就是 Apache ECharts 的 option,ECharts 的文档可以直接参考,示例里的配置原样贴进来;能画折线、柱状、饼图、散点、雷达、热力图、树图、旭日图、桑基图等,坐标轴和文字跟着主题换肤
  • 数据感知控件:单独的 tycontrols_db 包,22 个控件绑上 TDataSource 的字段就能用,其中数据表格 TTyDBGrid 的行为照 LCL TDBGrid
  • 属性表格:TTyPropertyGrid 在程序运行时列出任意对象的 published 属性,改了直接写回,可多选、按名字过滤、分类显示
  • 终端:TTyTerminalView 照 xterm.js 解析输出、编码按键;示例里接上 ConPTY / PTY 就是一个能用的 shell 窗口
  • 能派生:大多数控件分成 TTyCustomXxx(实现,不发布属性)和 TTyXxx(面板上那个)两层,包装自己的控件时只露想露的属性;派生类自动沿用父类的主题样式,也能登记自己的主题键单独换肤,见 subclassing.md
  • 三平台一致:完全自绘,不包装原生控件,同一份代码在三个平台上渲染出同样的界面
  • 主题换肤:17 个内置主题一个属性切换,支持运行时热切换、跟随系统明暗和强调色;主题是文本文件,改外观不用重编译
  • 经典与现代两种风格:从 Win95 / XP 的立体风到 Win11 / Material 的扁平风都能做,控件密度也可整体切换
  • HiDPI:矢量绘制,任意缩放比例下清晰;跨屏拖动自动适配新 DPI
  • 设计器支持完整:组件面板拖放、容器控件直接拖入、主题效果设计期可见、File → New 工程模板
  • 内置 2022 个矢量图标(Lucide),按名字取用,不用则不占体积
  • 中英文界面,gettext .po 翻译
  • 一万多个单元测试,全套无内存泄漏

支持平台

平台 Widgetset
Windows Win32 / Win64
Linux GTK2、Qt5、Qt6;GTK3 部分支持(Wayland 下有已知问题)
macOS Cocoa

依赖:Lazarus 3.0+、FPC 3.2.2+、BGRABitmap(OPM 包名 BGRABitmapPack)。


快速开始

1. 安装包

Lazarus 里打开 tycontrols_dt.lpk,点 Use → Install,IDE 重新编译并重启。运行期包 tycontrols.lpk 和数据感知控件包 tycontrols_db.lpk 作为依赖自动安装。

2. 新建工程

File → New… → Project → TyControls 应用程序

模板生成的主窗体已带自绘标题栏、内容容器 Surface 和样式控制器。控件放在 Surface 里(TTyForm 的可视控件都放它上面,图形控件必须放进去,详见 TTyForm 文档)。给已有工程加窗体用 File → New… → Form → TyControls 窗体。

3. 换主题

选中窗体上的 TTyStyleController,把 ThemeName 改成任意内置主题名。设计器里立即生效,运行时改同一个属性即热切换。模板生成的 .lpr 已在启动时调用 TyRegisterBuiltinThemes;用别的方式建的工程也要加上这一行,否则按名字选的内置主题只在设计器里生效。

完整步骤见 docs/getting-started.md。


控件清单

195 个控件,分 17 个组件面板分页。每个控件的属性、事件、主题键说明见 docs/controls/。

核心 · TyControls(2)

控件 说明
TTyStyleController 样式控制器:加载主题、切换密度、跟随系统亮暗
TTyNativeStyler 让原生 / 第三方 LCL 控件跟随当前主题着色

按钮 · TyControls Buttons(8)

控件 说明
TTyButton 按钮,支持 primary / danger / ghost 变体和数字徽标
TTyGlyphButton 带图标的按钮
TTyGlyphContainerButton 只放图标的方形按钮,常用于工具条
TTySpeedButton 可保持按下态的快捷按钮
TTyDropDownButton 分裂按钮:左半执行、右半展开菜单
TTyMenuButton 整个按钮都是下拉触发器
TTyColorButton 显示并选择颜色的按钮
TTyButtonGroup 分段按钮条,相邻段共边、单选

标签与标记 · TyControls Labels(7)

控件 说明
TTyLabel 文本标签,支持自动换行(含中日韩逐字断行)和助记符
TTyHtmlLabel 支持行内 HTML 子集(粗体 / 斜体 / 链接 / 颜色)的标签
TTyLinkLabel 超链接文字
TTyShadowLabel 带投影的标签
TTyGlowLabel 带发光描边的标签
TTyTag 可关闭的标签胶囊
TTyBadge 数字 / 圆点角标,可吸附到任意控件

文本与数值输入 · TyControls Edits(15)

控件 说明
TTyEdit 单行文本框:选区、剪贴板、词级导航
TTyMemo 多行文本框
TTyTerminalView 终端:画程序输出、把按键编码交给宿主,照 xterm.js;可用独立配色方案(读写 Windows Terminal 格式);带内协议钩子与解析器钩子(示例里有 ZModem 收发)
TTySpinEdit 整数微调框
TTyFloatSpinEdit 小数微调框,步长可小于 1
TTyNumericEdit 只接受数字的输入框,失焦时千分位格式化
TTyCurrencyEdit 货币输入框
TTyMaskEdit 掩码输入框(电话、身份证、日期等)
TTyURLEdit 网址输入框,尾部带打开按钮
TTyComboEdit 文本框 + 下拉箭头,下拉内容自定义
TTyTrackEdit 内嵌滑块的数值输入框
TTyCalcEdit 内嵌计算器的输入框
TTyCalcCurrencyEdit 货币版计算器输入框
TTyCalculator 独立计算器面板
TTyUpDown 独立的上下微调按钮,可绑定其他控件

勾选与开关 · TyControls Choices(6)

控件 说明
TTyCheckBox 复选框,支持三态
TTyRadioButton 单选按钮
TTyToggleSwitch 开关
TTyRadioGroup 带标题框的单选组
TTyCheckGroup 带标题框的复选组
TTySegmented 分段控制器

列表与下拉 · TyControls Lists(15)

控件 说明
TTyComboBox 下拉框,可编辑,支持前缀补全
TTyListBox 列表框
TTyCheckListBox 每行带复选框的列表
TTyMRUComboBox 记住最近输入的下拉框
TTyComboBoxEx 每项可带图标的下拉框
TTyOfficeComboBox 带分组标题的下拉框
TTyOfficeListBox 带分组标题的列表
TTyAdvancedComboBox 每项两行(标题 + 副标题 + 图标)的下拉框
TTyAdvancedListBox 每项两行的富列表
TTyCheckComboBox 可多选的下拉框
TTyValueListEditor 名/值编辑器:左键右值,每行可指定编辑器
TTyPropertyGrid 属性表格:列出一个对象的 published 属性,改了直接写回
TTyTransfer 双列表穿梭框
TTyTreeSelect 树形下拉选择器
TTyCascader 级联选择器(省 / 市 / 区)

颜色 / 字体 / 文件选择器 · TyControls Pickers(11)

控件 说明
TTyColorBox 颜色下拉框
TTyColorComboBox 颜色下拉框,末尾带「更多…」打开取色对话框
TTyColorListBox 颜色列表
TTyColorGrid 方格调色板
TTyLColorPicker 亮度条取色器
TTyHSColorPicker 色相 / 饱和度取色器
TTyFontComboBox 字体下拉框,逐项用自身字体预览
TTyFontListBox 字体列表
TTyFontSizeComboBox 字号下拉框
TTyFilterComboBox 文件类型过滤下拉框
TTyShellComboBox 目录下拉框

仪表与指示器 · TyControls Gauges(12)

控件 说明
TTyGauge 仪表:线性 / 弧形 / 环形
TTyMeter 指针式仪表盘
TTyLevelMeter 电平表,分段点亮 + 峰值保持
TTyDial 旋钮
TTyGearDial 齿轮外圈旋钮
TTyAnalogClock 模拟时钟
TTyCircularProgress 环形进度
TTyActivityIndicator 旋转忙碌指示环
TTyActivityBar 不确定进度条
TTyGearActivityIndicator 齿轮忙碌指示
TTySparkline 迷你趋势图
TTyRating 星级评分

条状控件 · TyControls Bars(18)

控件 说明
TTyTrackBar 滑块
TTyRangeTrackBar 区间滑块:一条轨道上一个或多个可拖动的区间
TTyMultiTrackBar 多值滑块:每个滑块可单独设颜色、提示和样式,滑块之间可分段着色
TTyGradientTrackBar 渐变色标编辑器:轨道画成渐变,点击加色标、拖出删除、双击改颜色
TTyProgressBar 进度条
TTyScrollBar 滚动条:可随主题或按控件设置闲置时自动淡出(AutoHide)
TTyStatusBar 状态栏
TTyToolBar 工具条
TTyToolButton 工具条按钮:命令 / 开关 / 下拉 / 分组 / 分隔等六种样式
TTyToolSeparator 工具条分隔符
TTyToolBarEx 放不下的按钮自动折进溢出菜单的工具条
TTyControlBar 按宽度自动折行分带的容器
TTyCoolBar 可拖动的带条容器
TTyAlert 内联警告条:信息 / 成功 / 警告 / 错误
TTyPagination 分页器
TTySteps 步骤条
TTyBreadcrumb 面包屑导航
TTyHeaderControl 独立列头条

容器与布局 · TyControls Containers(22)

控件 说明
TTyPanel 面板
TTyGroupBox 分组框
TTyCard 卡片:标题 / 内容 / 操作
TTyExPanel 可折叠面板
TTyScrollBox 滚动容器
TTyScrollPanel 拖到边缘自动滚动的容器
TTyGridPanel 设计器网格容器,格子可直接拖入控件
TTyRelativePanel 按相对关系布局的容器
TTyPageControl 多页容器,页面可直接拖入控件
TTyTabSheet TTyPageControl 的页
TTyTabSet 纯页签条,不承载页面
TTySplitter 分隔条
TTyBevel 凹凸装饰线
TTyDivider 分隔线,可带标题
TTyPaintPanel 自绘面板
TTySizeBox 右下角尺寸手柄
TTyToolGroupPanel 工具分组容器
TTyListGroupPanel 带分组标题的列表容器
TTyTitleBar 自绘标题栏,配合 TTyForm
TTyEmpty 空状态:插画 + 文案 + 操作按钮
TTyToolWindowBar IDE 式侧栏 / 底栏,工具窗口可拖到另一侧、布局可保存
TTyToolWindowManager 工具窗口的跨侧拖动和布局保存

数据视图 · TyControls Data Views(10)

控件 说明
TTyStringGrid 数据网格:冻结、虚拟化、编辑、筛选、分组、撤销重做
TTyDrawGrid 内容自绘的网格
TTyTreeView 虚拟树,可承载百万节点;多列、三态复选、内联编辑、拖放
TTyListView 列表视图:报表 / 图标 / 平铺等五种视图 + 分组 + 虚拟模式
TTyShellTreeView 文件系统目录树
TTyShellListView 文件系统文件列表
TTyCalendar 日历:日 / 月 / 年下钻
TTyDateTimePicker 日期时间选择器,支持空值
TTyImageView 图片查看器:平移、缩放、滤镜
TTyPreviewBox 文件预览框

数据感知 · TyControls Data Controls(22)

单独的包 tycontrols_db,绑 TDataSource 的字段即用,外观跟随主题。说明见 docs/controls/dbcontrols.md,数据表格见 docs/controls/dbgrid.md。

控件 说明
TTyDBNavigator 记录导航条:首 / 上 / 下 / 末、插入、删除、编辑、保存、取消、刷新
TTyDBText 显示字段值的标签
TTyDBEdit 绑字段的单行编辑框
TTyDBMaskEdit 带掩码的编辑框,默认用字段的 EditMask
TTyDBNumericEdit 数值编辑框,按数值读写字段
TTyDBCurrencyEdit 货币编辑框,按数值读写字段
TTyDBSpinEdit 整数微调框
TTyDBFloatSpinEdit 小数微调框
TTyDBMemo 绑备注字段的多行编辑框
TTyDBCheckBox 复选框,ValueChecked / ValueUnchecked 对应字段值,空值显示灰态
TTyDBToggleSwitch 开关,对应规则同复选框
TTyDBRadioGroup 单选组,Values 对应字段值
TTyDBSegmented 分段控制器,Values 对应字段值
TTyDBRating 星级评分,绑数值字段
TTyDBComboBox 下拉框,选择或输入字段值
TTyDBLookupComboBox 查找下拉:列另一张表的行,写回键值
TTyDBListBox 列表框,选中项即字段值
TTyDBLookupListBox 查找列表
TTyDBImage 绑 blob 字段的图片,与 LCL TDBImage 的存储格式互通
TTyDBDateTimePicker 日期时间选择器,支持空值
TTyDBCalendar 日历,选中的日期能写回字段
TTyDBGrid 数据表格:一行一条记录,就地编辑、插入、删除、多选,行为照 LCL TDBGrid

菜单 · TyControls Menus(4)

控件 说明
TTyMenuBar 主菜单栏
TTyPopupMenu 右键菜单
TTyImagesMenu 带图标列的右键菜单,图标取自图像列表
TTyMenuEx 增强右键菜单:在图标列之外加分节标题和侧边横幅

Ribbon · TyControls Ribbon(7)

控件 说明
TTyRibbon Ribbon 主体
TTyRibbonPage Ribbon 页
TTyRibbonGroup 页内功能组
TTyRibbonAppMenu 应用菜单(File)按钮
TTyRibbonQuickAccess 快速访问工具栏
TTyRibbonGallery 图库,可展开成弹出网格
TTyRibbonBackstage 全窗口后台视图

图像与提示 · TyControls Images(11)

控件 说明
TTyIconFont 图标字体:按码点或名字取矢量图标,随主题着色
TTyLucideIconFont 内置的 Lucide 图标字体,放上就能用
TTyCharImage 把一个图标字形当图片用
TTyImage 图片控件
TTyGlyphImageList 图标字体驱动的图像列表
TTyImageCollection 多分辨率图像集,按 DPI 取图
TTyLucideImageList 内置 Lucide 图标的图像列表,按名字选图
TTyVirtualImageList 按需生成任意尺寸的图像列表;本身是标准 TCustomImageList,可赋给任何控件,支持按名字取图
TTyHint 主题化提示气泡
TTyBalloonHint 带箭头的气球提示
TTyPopover 可承载控件的气泡浮层

内置图标(Lucide):加一行 uses tyControls.Icons.Lucide 就有 2022 个矢量图标,按名字取用:

CharImage1.IconFont  := TyLucideFont;
CharImage1.GlyphName := 'house';

字体内嵌在单元里,不用随程序分发文件;不 uses 就不进最终程序。组件面板上的 TTyLucideImageList 可以直接当图像列表拖放使用。许可为 ISC / MIT,商用无需署名,随发布带上 THIRD-PARTY-NOTICES.md 即可。

图形与图表 · TyControls Shapes & Charts(5)

控件 说明
TTyShape 矢量形状:矩形 / 圆 / 三角 / 菱形 / 星形等 15 种,支持自定义多边形
TTyStarShape 星形,角数可调
TTyArrow 方向箭头
TTyChart 图表:折线 / 柱状 / 饼图
TTyAdvanceChart 高级图表:配置照 Apache ECharts 的 option 写,带缩放、视觉映射、提示框、工具栏

对话框 · TyControls Dialogs(20)

控件 说明
TTyMessage 消息框
TTyInputDialog 文本输入对话框
TTyPasswordDialog 密码输入对话框
TTyTextDialog 多行文本对话框
TTySelectValueDialog 列表单选对话框
TTySelectPathDialog 文件夹选择对话框
TTyColorDialog 取色对话框:HSV / RGB / CMYK / Alpha
TTyFontDialog 字体对话框,带实时预览
TTyFindDialog 查找对话框
TTyReplaceDialog 查找替换对话框
TTyProgressDialog 进度对话框
TTyAboutDialog 关于对话框
TTyOpenDialog 打开文件对话框
TTySaveDialog 保存文件对话框
TTyOpenPictureDialog 打开图片对话框,带缩略图
TTySavePictureDialog 保存图片对话框
TTyOpenPreviewDialog 打开对话框 + 自定义预览
TTySavePreviewDialog 保存对话框 + 自定义预览
TTyNotification 角落通知,自动消失
TTyIconBrowserDialog 图标浏览器

几个大控件的完整能力见各自文档:grid.md(TTyStringGrid)· treeview.md(TTyTreeView)· ttyform.md(TTyForm)· dbgrid.md(TTyDBGrid)· propertygrid.md(TTyPropertyGrid)· terminal.md(TTyTerminalView)· multitrackbar.md(多滑块)。


主题

内置主题编译进二进制,程序不用带 themes/ 文件夹就能按名切换:

主题 说明
default 中性基底,亮暗同文件
system 跟随操作系统亮暗和强调色
win11 win10 xp classic aero Windows 各代风格
macos adwaita breeze ubuntu macOS 与 Linux 桌面风格
material3 fluent antdesign bootstrap 常见设计体系
office Office 风格
showcase 展示主题

另有图片主题 green(以文件提供)和 themes/palettes/ 调色板。所有主题共用同一套语义变量,--accent 可在运行时覆盖成任意品牌色。

写自己的主题见 docs/themes.md,.tycss 语言参考见 docs/tycss-reference.md。

写主题可以用仓库里的主题编辑器 tools/themebuilder:边写边看预览,也可以接大模型用一句话起草或修改。用法见 docs/themebuilder.md。


示例

52 个示例,每个都可独立构建:lazbuild examples/<名称>/<工程>.lpi。界面跟随系统语言显示中文或英文,每个示例的标题栏上都能换主题、切亮暗。

综合示例

示例 内容
advchart 高级图表:Apache ECharts 官方示例库的 244 个配置原样载入,按类别分页;右侧的配置可以直接改了重画,画不了的部分照实列出原因;可存 PNG
antdesign 仿 Ant Design Pro 后台(侧边导航 + 6 页),运行时换肤
dbcontrols 数据感知控件:21 个控件绑一张内存表,导航、编辑、空值、查找、照片
dbgrid 数据表格:一千条订单,设计期列(勾选、查找、备注、金额格式),标题点击排序,多选删除,只读开关
demo 综合演示:五十多种常用控件放在一个窗口里,工具栏切主题、亮暗、强调色、密度,可监视主题文件改动
dialogs 全部自绘对话框:消息、输入、取色、字体、查找替换、进度、关于、图标浏览器等
grid 数据网格:冻结 / 百万行 / 排序筛选分组 / 15 种编辑器 / 撤销重做
listview 列表视图:五种视图 / 分组 / 10 万行虚拟模式
propertygrid 属性表格:点哪个控件就检查哪个,Ctrl+点击多选,改了直接写回;按名字过滤、分类、只看可写的、显示事件,给字符串表格增删列
ribbon 用 Ribbon 搭的文本编辑器:功能区、应用菜单、快速访问栏、上下文页、Alt 键提示
rtl 从右往左镜像与双向文本
terminal 终端:asciicast 回放、真 shell(ConPTY / PTY / 管道)、ZModem 收发、换肤、配色方案、键码面板
theming 主题系统:自定义主题文件、强调色、跟随系统、密度、热重载、叠加样式层
toolwindows IDE 式工作台:左右侧栏 + 底栏、跨侧拖动、保存 / 恢复布局
transitions 滑入 / 淡入过渡
treeview 虚拟树:百万节点 / 多列 / 复选 / 内联编辑 / 拖放

单控件示例

示例 内容
button TTyButton:主按钮 / 危险 / 幽灵变体、默认与取消键、数字徽标、AutoSize
buttons 其他按钮:图标按钮、分组切换、分裂按钮与菜单按钮、取色按钮、分段按钮条
calendar TTyCalendar:周数、只读、可选日期范围
chart TTyChart:折线、柱状、饼图、环形图,图例、数值标签、悬停提示、点击命中
checkbox TTyCheckBox:三态、禁用、OnClick 与 OnChange 的区别、助记符
chromeoverlay 容器外框保持在子控件上面:卡片、面板、分组框、滚动框、可折叠面板、分页控件;开关前后对比,测重画耗时
combobox TTyComboBox:只读下拉、可编辑前缀补全、程序控制展开收起
containers 布局容器:分隔线、凹凸线、自绘面板、分组容器、滚动与折叠面板、网格面板、相对布局、CoolBar 等
datetimepicker TTyDateTimePicker:日期、时间、可空、只读、限定范围、12 小时制、跟随系统格式
edit TTyEdit:提示文字、密码、大小写、长度和字符限制、对齐、撤销重做、剪贴板、选区 API
filedialog 六个文件对话框:普通、带图片预览、自定义预览
gauge 仪表一族:弧形 / 环形 / 线性仪表、指针表、电平表、旋钮、时钟、迷你趋势图、星级、忙碌指示
groupbox TTyGroupBox:标题对齐、无标题样式、助记符
hint 主题化提示与气球提示:四种图标、自动消失、常驻、贴屏幕边缘时翻转
htmllabel TTyHtmlLabel:行内标记与链接、换行、AutoSize
icons 图标与图片:图标字体、内置 Lucide 图标、图像列表、TTyImage 的缩放方式
imageview TTyImageView:平移缩放、适应窗口、无损滤镜
inputs 富输入控件:数值、货币、掩码、网址、滑块输入、颜色字体选择、各种下拉和列表、名值编辑器
label TTyLabel:对齐、透明、AutoSize、自动换行、垂直位置、助记符
labels 链接标签、投影标签、发光标签
listbox TTyListBox:多选、排序、行高、程序选择与滚动
memo TTyMemo:换行、只读、撤销重做、剪贴板、Tab 与回车键处理、长度上限、滚动条
menu 菜单栏、增强右键菜单、普通主题菜单,以及双击标题栏卷起窗口
panel TTyPanel:嵌套、标题对齐、StyleOverride、提示与点击
progressbar TTyProgressBar:动画、竖向、任意范围、点击定位、禁用
radiobutton TTyRadioButton:分组、GroupIndex、助记符、StyleOverride
scrollbar TTyScrollBar:各种滚动手势、OnScroll 改写目标值、滑块动画、闲置自动隐藏
shapes 形状控件 + StyleOverride
shell 文件浏览器:目录树、文件列表、位置下拉、类型过滤
spinedit 整数与小数微调框:范围、步长、对齐、只读、超范围时的处理
splitter TTySplitter:左右上下分隔、限制窗格尺寸、松开鼠标才落位
statusbar TTyStatusBar:多面板、尺寸手柄、简单模式、运行时增删面板
tabcontrol TTyPageControl:增删页、关闭按钮、隐藏页签条
tabset TTyTabSet:拖动排序、关闭、禁选某页、溢出滚动、助记符
toggleswitch TTyToggleSwitch:禁用、OnChange 与 OnClick、关闭动画、键盘操作
toolbar TTyToolBar:自动折行、扁平与立体、六种工具按钮样式、下拉菜单、自绘按钮
trackbar 滑块:单滑块的刻度、数值和键盘操作,以及区间滑块、多值滑块、渐变色标编辑器

文档

文档 内容
getting-started.md 安装、第一个窗体、主题、HiDPI
controls/ 逐控件 API 说明
themes.md 写自己的主题
tycss-reference.md .tycss 语言参考
themebuilder.md 主题编辑器的用法
events.md 通用事件约定
subclassing.md 从 TTyCustomXxx 派生自己的控件;从 3.0 升级
rtl.md 双向文本与右到左布局
lcl-differences.md 与 LCL 的有意差异(移植时留意)
known-issues.md 已知问题
CHANGELOG.md 更新日志
CONTRIBUTING.md 报告问题、功能建议、提交代码、路线图

界面语言

库自带中英文界面。LCL 的 SetDefaultLang 只加载应用自己的 .po,库的翻译要多加一行:

uses ..., LCLTranslator;

SetDefaultLang('', LangDir);                                                        // 应用
TranslateUnitResourceStringsEx('', LangDir, 'tycontrols', 'tyControls.StrConsts');  // 控件库

部署时把 languages/tycontrols.<语言>.po 与应用自己的 .po 放在同一个 languages/ 目录。注意几点:

  • 部署文件名是 tycontrols.<语言>.po,由源码里的 tycontrols.strconsts.<语言>.po 改名而来。第三个参数必须传 'tycontrols'(不能带点,LCL 会把点号后面当扩展名剥掉),第四个参数传真实单元名 tyControls.StrConsts。
  • 英文部署也要带 tycontrols.en.po,它是日历和日期框的月份、星期名跟随应用语言的开关。
  • 用了数据感知控件(tycontrols_db)的,再加一行 TranslateUnitResourceStringsEx('', LangDir, 'tycontrols_db', 'tyControls.DB.StrConsts'),部署 tycontrols.db.strconsts.<语言>.po 改名后的 tycontrols_db.<语言>.po。

完整示例见 examples/demo。


许可

修改版 LGPL,与 FPC RTL / LCL / BGRABitmap 相同:可以静态链接进闭源商业软件分发;修改库本身的源码时,修改部分需以同样许可开放。

完整条款见 COPYING.modifiedLGPL.txt 与 COPYING.LGPL.txt。

About

A Lazarus component library with skin/style support: all controls are fully custom-drawn via BGRABitmap, their appearances are uniformly styled by lightweight CSS text themes (.tycss), delivering pixel-perfect identical UI rendering across Windows, Linux and macOS.

Resources

Contributing

Stars

80 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages