Linux64 上的 sgcUI 与 FMXLinux:面向 Linux 桌面的表格、图表、仪表和完整应用

· 组件
Linux64 上的 sgcUI 与 FMXLinux:面向 Linux 桌面的表格、图表、仪表和完整应用 | eSeGeCe 博客
>_ 新功能 · Linux64 上的 sgcUI

您的 Delphi 桌面应用,
现在可以运行在 Linux 上。

安装 FMXLinux 后,sgcUI 的 FireMonkey 控件即可在 Linux64 的真实桌面应用中运行。窗体和代码与您在 Windows 和 macOS 上发布的完全相同,外观也一致。

  • Delphi
  • FireMonkey
  • FMXLinux
  • Linux64
  • Ubuntu 22.04 或更高版本
使用 sgcUI 构建、运行在 Linux 桌面上的交易台应用:深色主题下的自选表格、K 线图、行业树状图和仪表
274个 Linux64 演示
17个 UI 产品
5个 FireMonkey 平台
1套代码

对于 Delphi 桌面开发者来说,Linux 一直是最难的平台。编译器支持 Linux64 目标,但可视化应用需要 FireMonkey,而 Linux 上的 FireMonkey 需要 FMXLinux 附加组件。在此之前,sgcUI 在 Linux64 上只支持非可视化部分:数据模型、导入导出,以及无界面渲染为 PNG 和 SVG。

今天情况有了变化。在 IDE 中安装 FMXLinux 后,sgcUI 的 FireMonkey 控件即可在 Linux64 上编译并运行,包括数据表格、图表、仪表、仪表板、计划器、地图、图表编辑器以及套件中的其余部分。本文中的每一张截图都是在 Ubuntu 上拍摄的,使用的演示项目与 Windows 和 macOS 上运行的相同。

一分钟了解 Linux64 上的 sgcUI,录制自 Ubuntu 上运行的真实演示程序。也可在 YouTube 观看。

不只是控件,而是完整应用

评判一套 UI 组件的最好方式,是看完整的应用。sgcUI Suite 演示正是如此:每个演示都把十几个产品组合成一个程序,包含导航、实时数据和多个页面。它们现在全部可以在 Linux64 上原样运行。

交易台

Markets 演示由一个模拟器提供数据,每秒推送约 1,000 次更新。自选表格会随价格变动闪烁红绿色,K 线图带有布林带、移动平均线、成交量和 RSI 窗格,行业树状图则显示市场的走向。

Linux 上带指标的 K 线分析图
带指标的分析图
Linux 上按行业划分的市场热力图
按行业划分的市场热力图

工厂控制室

Factory 演示是一个灌装工厂的 HMI。它包含 OEE 卡片、七段数码瓶数计数器、带动画连接线的产线工艺流程、报警面板、径向和线性仪表,以及带报警限值的十二个传感器实时趋势。

Linux 上的 Factory HMI:深色主题下的 OEE 卡片、瓶数计数器、工艺流程图、报警面板和仪表
Ubuntu 上 Factory 演示的产线总览:工艺图、报警面板、仪表和计数器。
某台水泵的设备详情页,带有三个大型仪表
带实时仪表的设备详情
显示产量和能耗数据的工厂地图
地图上的工厂

Fleet、ERP 和项目组合

Fleet 演示在西班牙和葡萄牙的地图上跟踪 48 辆车,包含路线、停靠点、车辆表格和告警列表。ERP 演示以 KPI 卡片、图表、仪表和客户地图组成的仪表板开场,随后是客户、计划、报表和分析页面。Portfolio 演示用甘特图安排 12 个项目和 520 个任务,并显示关键路径。

Linux 上的车队运营应用:KPI 卡片、带车辆和路线的地图、车辆表格和告警
实时车队运营:KPI 卡片、带车辆和路线的地图,以及两个表格。
带有 KPI 卡片、图表、仪表和地图的 ERP 仪表板
ERP 仪表板
按司机着色的每周配送日历
配送计划日历
带有仪表、气泡图、地图和树状图的项目组合总览
项目组合总览
带关键路径的项目组合甘特图
带关键路径的项目组合甘特图
以彩色泳道绘制的枢纽网络图
枢纽网络图
绑定到数据集的组织结构图
来自数据集的组织结构图

sgcUI 为 Linux 桌面带来什么

sgcUI 是一套原生 UI 产品,共享同一个核心、同一个主题引擎和同一种工作方式。在 Linux64 上,整个套件的 FireMonkey 控件都可以使用:

Linux 上的 sgcCharts:带目标区间的范围面积图、折线图和柱状图
sgcCharts
Linux 上的 sgcGauges 图库:径向、环形、罗盘、时钟、数字和 LED 仪表
sgcGauges
Linux 上的 sgcPlanner 甘特图,带依赖链接、基线和关键路径
sgcPlanner 甘特图
Linux 上的 sgcPivotGrid,带热力图单元格和字段列表
sgcPivotGrid
Linux 上的 sgcMaps,带图层面板、缩放按钮和比例尺
sgcMaps
Linux 上的树状图和漏斗图
树状图和漏斗图

表格值得单独配一张图。这是 Ubuntu 上拥有 100,000 行数据的 FilterAndFind 演示,包含表头过滤按钮、过滤行和“Ask the grid”输入框。鼠标滚轮滚动流畅,按 Ctrl+End 可直接跳到第 100,000 行。

Linux 上包含 100,000 行的 sgcGrid,带表头过滤和过滤行
Ubuntu 上包含 100,000 行的 sgcGrid。

您需要准备什么

Linux64 上的 sgcUI 已在 Ubuntu 22.04 和 Ubuntu 24.04 上使用 Delphi 13 和 FMXLinux 1.84 测试通过。

构建您的第一个 Linux64 应用

1安装 FMXLinux在 IDE 内通过 GetIt 安装
2连接 LinuxPAServer 和 Linux SDK
3添加平台在 FireMonkey 项目中添加 Linux 64-bit
4运行同一个窗体,运行在 Linux 桌面上
  1. 通过 GetIt 安装 FMXLinux,然后重启 IDE。
  2. 在 Linux 机器上启动 PAServer,在 IDE 中创建连接配置文件并导入 Linux SDK,与任何 Delphi Linux64 项目的做法相同。
  3. 把 sgcUI 的 Source 文件夹添加到 Linux 64-bit 库路径(Tools, Options, Language, Delphi, Library),这样编译器就能找到该平台所需的 sgcUI 单元。
  4. 打开或新建一个 FireMonkey 应用,在 Projects 窗口中添加 Linux 64-bit 目标平台并选中它。
  5. 把 sgcUI 控件放到窗体上并运行。IDE 会编译项目,通过 PAServer 部署,并在 Linux 桌面上启动。

无需编写任何 Linux 专用代码。下面是 Hello Grid 快速入门的完整源代码,窗体上有一个 TsgcFMXGrid,其三列在设计器中定义:

uses
  System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Forms,
  // sgc
  sgcGrid_Data, sgcGrid_FMX;

procedure TfrmHelloGrid.FormCreate(Sender: TObject);
begin
  { BeginUpdate / EndUpdate repaint the grid once, after the last row }
  Grid.Data.BeginUpdate;
  try
    { AppendRow(Key, [City, Country, Population]) }
    Grid.Data.AppendRow('Madrid', ['Madrid', 'Spain', 3416771]);
    Grid.Data.AppendRow('Paris', ['Paris', 'France', 2102650]);
    Grid.Data.AppendRow('Berlin', ['Berlin', 'Germany', 3755251]);
    Grid.Data.AppendRow('Rome', ['Rome', 'Italy', 2749031]);
  finally
    Grid.Data.EndUpdate;
  end;
end;

图表的用法也一样。TsgcFMXChart 控件绘制一个 TsgcChart 组件,每个系列也是一个组件,这里是 TsgcChartSeries_Line。唯一的代码就是添加数据点:

uses
  // sgc
  sgcCharts_Chart, sgcCharts_Series, sgcCharts_FMX;

const
  CS_VISITS: array [0 .. 6] of Integer = (420, 515, 480, 610, 590, 380, 350);

procedure TfrmHelloChart.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  { X is the day, Y the visitors. The chart repaints by itself }
  for i := Low(CS_VISITS) to High(CS_VISITS) do
    serVisits.AddXY(i + 1, CS_VISITS[i]);
end;

在 Projects 窗口中选择 Windows、macOS 或 Linux 64-bit,这两个窗体就能在各个平台上运行。

从窗体到高级应用

上面的 Suite 演示由相同的部件构建,其源代码随 sgcUI 一起提供。以下思路可以让大型 Linux64 应用更易于维护:

立即体验:274 个已编译的 Linux64 演示

要在 Linux 上看到 sgcUI 运行,您不需要 Delphi、FMXLinux 或许可证。每个产品的 FireMonkey 演示共 274 个程序,均已为 Linux64 编译并打包在一个压缩包中:

下载 sgcUI_bin_linux64.tar.xz

tar -xJf sgcUI_bin_linux64.tar.xz
./run.sh              # choose a demo from the list
./run.sh Charts       # only the demos of one product

# or start one demo directly
cd Grid/FilterAndFind
GDK_BACKEND=x11 ./FilterAndFindFMX

这些演示可在 Ubuntu 22.04 或更高版本上运行,也可在其他 glibc 2.34 或更高版本并带有 GTK3 的发行版上运行,需使用 X11 或 XWayland 显示。带在线地图的演示还需要 libcurl 和互联网连接。详情请参阅压缩包中的 README.txt。

注意事项。Linux64 上不支持打印到打印机、屏幕阅读器支持和自定义窗口标题栏,浮动停靠面板也被禁用。FireMonkey 控件的其余功能与其他平台使用相同的代码。详细信息请参阅 sgcUI 页面和帮助中的 Platforms 主题。

一套代码,覆盖所有桌面

Windows、macOS,现在还有 Linux64,使用相同的 FireMonkey 窗体和相同的 sgcUI 控件。下载已编译的演示程序,在您自己的 Linux 桌面上运行看看。

有问题或反馈?请联系我们,回复您的是编写这些代码的人。