Delphi、C++ Builder & .NET sgcUI 的一部分

sgcDashboard,适用于 Delphi、C++ Builder & .NET 的仪表盘与 KPI 卡片

无需编写布局代码即可构建业务仪表盘。把磁贴放到 12 列网格上,在每个磁贴中放入 KPI 卡片、图表、地图或报表预览,只需一个属性即可把整个界面切换为深色主题,并让用户拖动、调整大小并保存自己的布局。磁贴启动器则为应用程序提供分组磁贴的开始界面。

VCL、FireMonkey、WinForms、WPF、Avalonia12 列磁贴网格,自动流式排列KPI 卡片可输出为 PNG 或 SVG,Linux64 同样支持包含在 sgcUI Professional 中
Basic 演示:响应式网格中的仪表盘磁贴和 KPI 卡片

仪表盘所需的一切

八个分组,十八项功能,附带真实的组件和属性名称以及每个帮助主题的链接。标有“注册版”的功能不包含在免费的 .NET 社区版中。

布局与内容

自动为您放置磁贴的网格,以及展示数字的卡片。

sgcDashboard Basic 演示,12 列网格上有六个磁贴和四张 KPI 卡片

布局与内容

无需布局代码的响应式磁贴网格

仪表盘是一个磁贴网格,在任何窗口大小和任何 DPI 下都必须保持整齐。把仪表盘放到窗体上,添加磁贴,并为每个磁贴指定列、行和跨度。网格根据可用宽度计算列宽,按显示器 DPI 缩放间距和行高,当磁贴所需行数超出可显示范围时垂直滚动。重叠的磁贴每次下移一行,绝不会叠在一起。由于布局集中在一个引擎中,相同的磁贴单元格在 VCL、FireMonkey 和 .NET 视图上给出相同的排列。

  • TsgcVCLDashboard,带 Columns(默认 12)、RowHeight(120)、Gap 和 Padding(12)
  • TsgcVCLDashboardTile,带 Col、Row、ColSpan 和 RowSpan
  • 隐藏的磁贴(Visible 为 False)不占用单元格
  • 已放置的单元格和矩形可通过 Layout.PlacedCell 和 Layout.Rect 读取
阅读帮助主题
仪表盘包含四个带迷你图的 KPI 磁贴、一个事件日志和一个服务器列表

布局与内容

添加磁贴,由自动流式排列来放置

当仪表盘的内容取决于用户或数据时,您不会想去计算坐标。将磁贴的列和行保持为 -1,自动流式排列会把它放入第一个空闲位置,从上到下扫描行、从左到右扫描列。只固定列时,磁贴会落到该列的第一个空闲行。同一个仪表盘中可以混用固定磁贴和流式磁贴。

  • AutoFlow 默认开启;新磁贴的 Col 和 Row 为 -1,跨度为 3 乘 2
  • 显式指定的单元格先放置,流式磁贴填充剩余空间
  • 跨度会被限制,因此磁贴不会超出最后一列
  • 同一个布局引擎 TsgcDashboardLayout 驱动 VCL、FireMonkey 和 .NET
  • 支持阿拉伯语和希伯来语的从右到左:磁贴从右侧开始排列,磁贴标题和 KPI 卡片已镜像,而趋势箭头和迷你图保持原有方向
阅读帮助主题
承载地图、PDF 查看器和报表预览的仪表盘磁贴

布局与内容

在磁贴中放入任意控件

磁贴是带可选标题栏的容器,因此可以承载您界面需要的任何内容:图表、表格、地图、PDF 查看器、报表预览或普通备注框。把控件的父级设为该磁贴,并将其对齐到客户区。Suite 演示在一个仪表盘中承载了 sgcCharts、sgcMaps、sgcPDF 和 sgcReports,全部遵循仪表盘主题。磁贴可以去掉标题栏,呈现整洁的满铺图表,也可以保留标题栏作为标题。添加磁贴时,仪表盘按行增长并垂直滚动。

  • 每个磁贴上的 Title 和 ShowHeader
  • ParentTheme 让磁贴跟随仪表盘,或保留自己的 Theme
  • 磁贴内的 sgcUI 控件会采用浅色或深色主题
  • 在 FireMonkey 上使用 TsgcFMXDashboardTile 效果相同
阅读帮助主题
四张带数值、趋势箭头和迷你图的 KPI 卡片

布局与内容

带趋势和迷你图的 KPI 卡片

每个仪表盘开头都是一行重要的数字:收入、订单、流失率、响应时间。KPI 卡片在一个组件中以大字号显示数值、图标、带文字的趋势箭头、页脚行和近期数值的小型迷你图。新数据到达时调用 AddValue,迷你图随之滚动;MaxPoints 决定保留多少历史数据。AccentColor 可让您按所测量的内容为卡片着色,卡片会跟随所在仪表盘的浅色或深色主题。

  • TsgcVCLKPICard,带 Title、Value、Icon、FooterText 和 AccentColor
  • Trend:ktUp、ktDown 或 ktNeutral,带 TrendValue 文本
  • 用于迷你图的 AddValue、ClearValues 和 MaxPoints
  • AddValue 是线程安全的,因此可由工作线程提供数据
阅读帮助主题

布局与内容

用于开始界面的磁贴启动器

许多应用程序以开始界面启动:每个模块一个磁贴,按区域分组,并显示其中待处理内容的数量。磁贴启动器用一个控件绘制这个界面。磁贴有小、中、宽、大四种尺寸,并按带标题的分组排布,因此大磁贴留下的空位会由后面的小磁贴填补。分组可以并排放置并水平滚动,也可以垂直堆叠并垂直滚动,整个启动器会跟随浅色或深色主题。

  • TsgcVCLDashboardTileLauncher 和 TsgcFMXDashboardTileLauncher,在 .NET 中为 TsgcWinFormsDashboardTileLauncher、TsgcWpfDashboardTileLauncher 和 TsgcAvaloniaDashboardTileLauncher
  • Groups 和 Tiles,带有 Caption、Subtitle、Size(dtsSmall、dtsMedium、dtsWide、dtsLarge)、Color、ImageIndex 以及绘制成胶囊形状的 Badge
  • Orientation、CellSize、Spacing、GroupColumns 和 GroupSpacing 决定布局
  • 单击、Enter 或空格键时触发 OnTileClick。方向键可跨分组在磁贴之间移动,Home 和 End 分别移到第一个和最后一个磁贴
  • 屏幕阅读器会看到可调用的磁贴列表,SaveToPNG 无需窗体即可渲染启动器

磁贴启动器包含在包括 Community 在内的所有版本中。

阅读帮助主题

内置磁贴、数据源与交叉筛选

磁贴从同一个数据源自动填充数据,一次点击即可相互筛选。

SalesExplorer 演示:按欧洲区域筛选的图表、仪表、网格、地图和透视表磁贴,网格上方是筛选栏

内置磁贴

自动填充数据的图表、仪表、网格、透视表和地图磁贴

大多数仪表盘会用五种方式展示同样的行:用图表展示各区域的收入,用仪表展示合计,用网格展示记录,用透视表按产品汇总,用地图展示客户。内置磁贴本身已经包含控件。设置好它的数据源和列,分组、求和与列出行的工作就由它代劳,不需要任何把数据移入控件的代码。内置磁贴仍然是磁贴,因此有标题栏、单元格和主题,用户可以像对待其他磁贴一样移动、调整大小、保存和加载它。

  • TsgcVCLDashboardChartTile、GaugeTile、GridTile、PivotTile 和 MapTile,FireMonkey 中名称相同
  • DataSource 以及为磁贴分组并汇总的只读 View
  • 产品控件是公开的(Chart、Gauge、Grid、Pivot、Map),因此可以照常设置样式
  • 工作线程添加的行由磁贴移交到主线程

每个磁贴都需要对应的 sgcUI 产品及其桥接包:sgcCharts、sgcGauges、sgcGrid、sgcPivotGrid 或 sgcMaps。磁贴包含在所有版本中,社区版也不例外。在 .NET 中,图表、仪表、网格、透视表和地图磁贴适用于 WinForms、WPF 和 Avalonia。

阅读帮助主题

数据源

一个数据源为所有磁贴提供数据

当数字来自同一个查询时,所有磁贴都应显示相同的行。TsgcDashboardDataSource 只保存一份行数据,任意数量的磁贴都可以通过各自的视图读取:图表按一列分组,仪表对另一列求和,网格列出各行。可以用自己的行填充它,复制一个数据集,或者连接 sgcGrid 或 sgcPivotGrid 的表并跟随其变化。把大量修改包在一次更新里,磁贴也只会刷新一次。

  • Columns、AppendRow、Clear、BeginUpdate 和 EndUpdate
  • LoadFromDataSet 复制 TDataSet;在 .NET 中 LoadFrom 接受 DataTable
  • Table 可连接任意 IsgcUITable,例如网格或透视网格
  • 视图可按求和、计数、平均值、最小值、最大值或不汇总来聚合,并且线程安全

数据源与框架无关,包含在所有版本中。

阅读帮助主题

交叉筛选 仅限注册版

点击一根柱子,其他所有磁贴随之变化

销售经理发现欧洲区域落后,想看详细情况。使用交叉筛选,点击欧洲柱子就会筛选同一数据源的其他所有磁贴:仪表对欧洲的行求和,网格列出这些行,透视表按产品显示它们,地图只保留相应的标记。被点击的图表保留所有柱子。网格上方的筛选栏为每个条件显示一个标签,另有一个“全部清除”标签,再次点击同一根柱子即可取消筛选。

  • 图表数据点、网格单元格、透视表行和地图标记都会生成条件,仪表随之变化
  • 不同字段上的条件以 AND 组合
  • 仪表盘上的 ShowFilterBar、ClearFilters 和 OnFilterChanged
  • 每个磁贴的 CrossFilterSource 和 CrossFilterTarget,以及供代码使用的数据源 Filter

筛选栏不会被打印或导出。交叉筛选属于注册版,社区版不包含。

阅读帮助主题

响应式布局与运行时设计器

窄屏上使用更少的列,仪表盘由用户自己搭建。

响应式布局

桌面上十二列,手机上四列

为宽屏显示器设计的仪表盘,在窄窗口或手机上会变得难以阅读。启用断点后,仪表盘会根据自身宽度选择尺寸类别:宽类别使用 Columns,中等和紧凑类别使用更少的列和各自的单元格。默认情况下每个跨度都会自动缩放,因此大多数仪表盘无需额外配置,也可以只在某一个类别中隐藏磁贴,例如在手机上隐藏大地图。

  • Breakpoints.Enabled、CompactWidth(600)、MediumWidth(1024)、CompactColumns(4)和 MediumColumns(8)
  • 每个磁贴的 CompactCell 和 MediumCell,以及每个类别的 Visible
  • ActiveBreakpoint 和 OnBreakpointChanged
  • 打印和 PDF 按页面宽度排列磁贴

断点包含在所有版本中,默认关闭。社区版没有 SaveLayout,因此断点在那里可以工作,但不会被保存。

阅读帮助主题

运行时设计器 仅限注册版

用户自己搭建仪表盘,并支持撤销

每个部门都想要略有不同的仪表盘。与其每次需求都交付一个,不如让用户自己搭建。在编辑模式下,每个磁贴都可以移动和调整大小,点击即可选中;设计面板可以从调色板添加内置磁贴、编辑所选磁贴的属性、删除磁贴,并撤销或重做最近的步骤。用 SaveLayout 保存结果后,运行时添加的磁贴会连同其设置和数据源一起恢复。

  • 仪表盘上的 EditMode、SelectedTile、AddTile 和 RemoveTile
  • Undo、Redo、CanUndo 和 CanRedo,共 50 步;编辑模式下为 Ctrl+Z、Ctrl+Y 和 Delete
  • TsgcVCLDashboardDesignPanel 和 TsgcFMXDashboardDesignPanel,WinForms、WPF 和 Avalonia 有对应组件
  • OnTileAdded、OnTileRemoving 和 OnSelectionChanged

运行时设计器属于注册版,社区版不包含。

阅读帮助主题

询问仪表盘

所有磁贴共用一个 AI 查询栏,而数值始终留在您的应用程序中。

询问仪表盘

输入一个问题,由合适的磁贴来回答

用户不想自己去找包含答案的磁贴。把一个 AI 查询栏连接到仪表盘路由器,一个输入框就能服务整个屏幕。路由器会选出问题所指的磁贴,把它带入视图并置于最前,再把问题交给它的网格或透视表引擎。图表、仪表和地图磁贴也会参与:仪表和 KPI 卡片根据自己的标题和数值在本地回答,图表或地图磁贴则会被显示并获得焦点。在注册版中,像“显示 West 区域的销售额”这样的问题还会设置交叉筛选 Region = West。

  • TsgcVCLDashboardAI 和 TsgcFMXDashboardAI;.NET 中为 TsgcWinFormsDashboardAI、TsgcWpfDashboardAI 和 TsgcAvaloniaDashboardAI
  • 磁贴类型:网格、透视表、KPI、图表、仪表、地图和数据
  • 用于带筛选回答的 LastFilter 和 ApplyFilters;Undo 会移除筛选
  • 未设置提供程序时,由本地规则路由器选择磁贴

隐私:提供程序只能看到问题、磁贴标题和类型以及列名。KPI 卡片的值、仪表的值和列的值绝不会离开应用程序,建议的筛选值也会在本地对照数据进行校验。路由器包含在所有版本中;带筛选的回答属于注册版。

阅读帮助主题

用户布局与实时数据

让用户自行安排起始页并保存,再通过网络为其提供数据。

用户布局与实时数据 仅限注册版

用户拖动并调整磁贴大小

在共享的起始页上,每位用户都希望把不同的数字放在最前面。开启拖动后,用户可通过标题栏移动磁贴;开启调整大小后,角落的手柄可改变其跨度。鼠标移动时,目标单元格绘制在磁贴下方,磁贴会吸附到网格。按 Esc 取消。标记为锁定的磁贴永远不会移动。再结合下面的保存布局,每位用户都保留自己安排的起始页,而您仍可决定存在哪些磁贴。

  • 仪表盘上的 AllowDrag 和 AllowResize
  • 磁贴上的 Locked 使其固定不动
  • 每次拖动或调整大小后触发 OnLayoutChanged
  • FireMonkey 仪表盘的行为相同

社区版通过代码构建固定布局;运行时拖动和调整大小属于注册版。

阅读帮助主题

用户布局与实时数据 仅限注册版

保存每位用户的布局并恢复

用户安排好的布局必须在重启后恢复。一次调用即可将网格参数以及每个命名磁贴的单元格和可见性写成紧凑的 JSON,另一次调用则应用它。磁贴按名称匹配,未知名称会被忽略,文本中缺失的磁贴保留其单元格,因此在新版本中添加磁贴后,旧的已保存布局仍可加载。JSON 小巧易读,因此您可以随应用程序提供默认布局,并提供一个重置按钮来重新加载它。

  • SaveLayout 和 LoadLayout 返回并应用 JSON 字符串
  • SaveLayoutToFile、LoadLayoutFromFile、SaveLayoutToStream、LoadLayoutFromStream
  • 保存时为不带 BOM 的 UTF-8,加载时会跳过 BOM
  • 可按用户将该字符串存储在文件、注册表或数据库中
阅读帮助主题

用户布局与实时数据 仅限注册版

直接来自网络的实时 KPI

运营界面显示的数值每秒都在变化。sgcDashboardWS 桥接从 sgcWebSockets 客户端的每条 JSON 消息中读取一个数字,并推送到卡片中,迷你图也一并更新。趋势箭头会自动跟随前一个数值。在 Delphi 2010 及更高版本中,文本更新在主线程中运行,因此客户端可以使用任何线程模式。非有效 JSON 的消息,或其路径不是数字的消息会被忽略,因此嘈杂的数据流绝不会破坏界面。

  • TsgcDashboardSource_WebSocket、TsgcDashboardSource_MQTT(带 Topic)和 TsgcDashboardSource_SSE
  • ValuePath 例如 data.items[0].value,ValueFormat 默认为 %.2f
  • TitlePath 和 TrendValuePath 可将更多字段复制到卡片中
  • 每次更新后触发 OnValue 事件

该桥接需要 sgcWebSockets。在社区版中,请通过 Value 和 AddValue 用代码为卡片提供数据。

阅读帮助主题

主题、图像与平台

整个界面风格统一,同样的卡片可输出为图像,同样的设计适用于每个目标平台。

深色主题下的 sgcDashboard 磁贴,包含 KPI 迷你图、实时图表、地图、PDF 查看器和报表预览

主题、图像与平台

一个属性为整个仪表盘设置主题

深色的控制室和明亮的办公室需要同一个界面的两种外观。设置仪表盘主题后,它会作用于每个磁贴、每张 KPI 卡片以及其中的 sgcUI 控件,因此图表、仪表和表格一起切换。主题类型与每个 sgcUI 产品使用的相同,所以整个应用程序可以遵循同一个设置。需要突出显示的磁贴可以保留自己的主题,而仪表盘的其余部分则跟随全局主题。

  • 仪表盘上的 Theme := utDark 或 utLight
  • 磁贴通过 ParentTheme 跟随,或保留自己的 Theme
  • KPI 卡片和无界面 KPI 图像使用相同的调色板
  • 可在运行时更改,例如通过日夜切换开关
阅读帮助主题

主题、图像与平台

可用于邮件和网页的 KPI 卡片图像

仪表盘上的数字常常也需要用在别处:晨报邮件、内部网页面或 PDF。TsgcDashboardKPI 无需窗口,也无需 VCL 或 FireMonkey 即可渲染同一张卡片,因此控制台程序、Windows 服务或 Linux64 服务器都能生成。宽度和高度为逻辑像素,缩放系数可生成清晰的高 DPI 图像。可用于定时报表:用仪表盘所用的同样查询构建卡片,并把图像附加到邮件中。

  • SaveToPNG 保存到文件或流,例如 320 乘 160、缩放 2 得到 640 乘 320 的图像
  • SaveToSVG 输出清晰的矢量图
  • Card.KPI.SaveToPNG 保存屏幕上卡片所显示的内容
  • 可在所有平台构建,包括 Linux64
阅读帮助主题

主题、图像与平台

桌面、移动和 .NET 上的同一个仪表盘

只需编写一次仪表盘,即可复用设计。FireMonkey 仪表盘、磁贴和 KPI 卡片可在 Windows、macOS、iOS 和 Android 上运行,.NET 移植版则为 WinForms、WPF 和 Avalonia 提供相同的类。由于同一个布局引擎在所有平台上计算单元格,已保存的布局在每个目标平台上含义相同。每个目标平台的演示集也相同:Delphi 和 C++ Builder 提供 Basic、LiveKPI、SaveLayout 和 Suite,.NET 则提供 WinForms、WPF 和 Avalonia 版本。

  • TsgcFMXDashboard、TsgcFMXDashboardTile、TsgcFMXKPICard, TsgcFMXDashboardTileLauncher
  • TsgcWinFormsDashboard、TsgcWinFormsKPICard 及其 WPF 和 Avalonia 对应组件
  • Delphi 7 到 13 的 VCL,自 XE6 起的 FireMonkey,C++ Builder 2007 到 13
  • .NET Framework 4.7.2、.NET 8、.NET 9 和 .NET 10
阅读帮助主题

无障碍

面向屏幕阅读器的 UI Automation、键盘和高对比度,无需任何设置。

无障碍

无需鼠标即可在磁贴间移动并重新排列

sgcDashboard 将仪表板及其磁贴连同标题和位置、每个磁贴中承载的控件,以及带有标题、值、单位和趋势的 KPI 卡片向 Microsoft UI Automation 公开。

  • 方向键在磁贴之间移动,Home 和 End 转到第一个或最后一个磁贴,Enter 把焦点移入焦点磁贴
  • Ctrl+Shift+方向键移动磁贴(AllowDrag),Alt+Shift+方向键调整其大小(AllowResize),除非仪表板已锁定
  • 仪表板是 Tab 停靠点,并显示可见的焦点环
  • 在 Windows 高对比度主题下,磁贴外观使用系统颜色,KPI 卡片的强调色和趋势颜色被系统颜色取代

无障碍功能在每个版本中默认开启,包括免费的社区版,可用于 VCL(Delphi 和 C++Builder 从 Delphi 7 到 Delphi 13 的每个版本)、Windows 上的 FireMonkey,以及 WinForms、WPF 和 Avalonia。在 Delphi 和 C++Builder 中,AccessibleName 和 AccessibleDescription 设置向 UI Automation 公开的名称和说明,在 .NET 中,各框架标准的无障碍名称和帮助文本起同样的作用。请参见无障碍符合性报告。

阅读帮助主题

查看 sgcDashboard 的实际效果

sgcUI 套件演示中的 sgcDashboard:使用内置模拟数据、可离线运行的完整应用程序。

谁在用 sgcDashboard 构建应用

ERP 中的管理层和销售仪表盘

ERP 的起始页以带趋势箭头的 KPI 卡片显示收入、未结订单、逾期发票和流失率,下方磁贴中是销售图表和重点客户表格。每晚服务会将同样的卡片渲染为 PNG,用于管理层邮件,数字和颜色与屏幕上完全一致。

  • KPI 卡片
  • 磁贴中的任意控件
  • 无界面 KPI 图像
  • 主题
运行 Suite 演示

运营与 IoT 控制室

工厂中的墙面屏幕显示产线吞吐量、温度和报警数量。MQTT 数据源在读数到达时将其推送到各自的卡片中,迷你图显示最近几分钟的变化,深色主题让房间在夜间保持安静。相邻磁贴中的仪表和图表遵循同一个主题。

  • MQTT 数据源
  • 迷你图
  • 深色主题
  • 磁贴中的仪表
运行 LiveKPI 演示

桌面 SaaS 客户端中的个人起始页

在由多种角色使用的桌面客户端中,每位用户都把重要的磁贴拖到顶部,调整最常关注的图表大小,并隐藏其余内容。布局按用户保存为 JSON,并在下次登录时恢复,更新中新增的磁贴则会自动流入空闲空间。

  • 拖动与调整大小
  • SaveLayout 和 LoadLayout
  • 自动流式排列
运行 SaveLayout 演示

几行代码构建 KPI 仪表盘

Delphi、C++ Builder 和 C# 中使用相同的 API:网格上的磁贴、每个磁贴中带迷你图的 KPI 卡片、深色主题和已保存的布局。拖动和布局文件需要注册版。

12 列网格上的磁贴,每个磁贴中有一张 KPI 卡片,采用深色主题,布局保存到文件。拖动和布局文件需要注册版。

uses
  SysUtils, Controls, sgcUICore_Theme, sgcDashboard_KPI, sgcDashboard_VCL, sgcDashboard_KPI_VCL;
procedure AddKPI(aDash: TsgcVCLDashboard; const aName, aTitle, aValue,
  aChange: string; aCol: Integer; aTrend: TsgcDashboardKPITrend);
var
  oTile: TsgcVCLDashboardTile;
  oCard: TsgcVCLKPICard;
begin
  oTile := TsgcVCLDashboardTile.Create(aDash.Owner);
  oTile.Name := aName;
  oTile.Parent := aDash;
  oTile.Col := aCol;
  oTile.ColSpan := 4;
  oTile.Title := aTitle;
  oCard := TsgcVCLKPICard.Create(aDash.Owner);
  oCard.Parent := oTile;
  oCard.Align := alClient;
  oCard.Value := aValue;
  oCard.Trend := aTrend;
  oCard.TrendValue := aChange;
  oCard.AddValue(47);
  oCard.AddValue(52);
end;
procedure BuildDashboard(aOwner: TWinControl);
var
  oDash: TsgcVCLDashboard;
begin
  oDash := TsgcVCLDashboard.Create(aOwner);
  oDash.Parent := aOwner;
  oDash.Align := alClient;
  // drag, resize and layout files need the Registered edition
  oDash.AllowDrag := True;
  AddKPI(oDash, 'tileRevenue', 'Revenue', '12,480 USD', '+4.2 %', 0, ktUp);
  AddKPI(oDash, 'tileOrders', 'Orders', '1,284', '+8.1 %', 4, ktUp);
  oDash.Theme := utDark;
  if FileExists('layout.json') then
    oDash.LoadLayoutFromFile('layout.json');
  oDash.SaveLayoutToFile('layout.json');
end;

阅读帮助主题 →

C++ Builder 中的同一个仪表盘,使用生成的头文件。

#include <vcl.h>
#include "sgcUICore_Theme.hpp"
#include "sgcDashboard_KPI.hpp"
#include "sgcDashboard_VCL.hpp"
#include "sgcDashboard_KPI_VCL.hpp"

void AddKPI(TsgcVCLDashboard *aDash, const String aName, const String aTitle,
  const String aValue, const String aChange, int aCol,
  TsgcDashboardKPITrend aTrend)
{
  TsgcVCLDashboardTile *oTile = new TsgcVCLDashboardTile(aDash->Owner);
  oTile->Name = aName;
  oTile->Parent = aDash;
  oTile->Col = aCol;
  oTile->ColSpan = 4;
  oTile->Title = aTitle;
  TsgcVCLKPICard *oCard = new TsgcVCLKPICard(aDash->Owner);
  oCard->Parent = oTile;
  oCard->Align = alClient;
  oCard->Value = aValue;
  oCard->Trend = aTrend;
  oCard->TrendValue = aChange;
  oCard->AddValue(47);
  oCard->AddValue(52);
}

void BuildDashboard(TWinControl *aOwner)
{
  TsgcVCLDashboard *oDash = new TsgcVCLDashboard(aOwner);
  oDash->Parent = aOwner;
  oDash->Align = alClient;
  // drag, resize and layout files need the Registered edition
  oDash->AllowDrag = true;
  AddKPI(oDash, "tileRevenue", "Revenue", "12,480 USD", "+4.2 %", 0, ktUp);
  AddKPI(oDash, "tileOrders", "Orders", "1,284", "+8.1 %", 4, ktUp);
  oDash->Theme = utDark;
  if (FileExists("layout.json"))
    oDash->LoadLayoutFromFile("layout.json");
  oDash->SaveLayoutToFile("layout.json");
}

阅读帮助主题 →

C# 中的 WinForms 版本,类名与 Delphi 相同。

using System.Windows.Forms;
using esegece.sgcDashboard;
using esegece.sgcUICore;

public static class KpiDashboard
{
    // One KPI tile with a sparkline, placed on the dashboard grid.
    static void AddKPI(TsgcWinFormsDashboard aDash, string aName, string aTitle,
        string aValue, string aChange, int aCol, TsgcDashboardKPITrend aTrend)
    {
        var oTile = new TsgcWinFormsDashboardTile();
        oTile.Name = aName;
        oTile.Title = aTitle;
        oTile.Col = aCol;
        oTile.ColSpan = 4;
        var oCard = new TsgcWinFormsKPICard();
        oCard.Dock = DockStyle.Fill;
        oCard.Value = aValue;
        oCard.Trend = aTrend;
        oCard.TrendValue = aChange;
        oCard.AddValue(47);
        oCard.AddValue(52);
        oTile.Controls.Add(oCard);
        aDash.Controls.Add(oTile);
    }

    public static void Build(Form aForm)
    {
        var oDash = new TsgcWinFormsDashboard();
        oDash.Dock = DockStyle.Fill;
        oDash.Theme = TsgcUITheme.utDark;
        oDash.AllowDrag = true; // drag and layout files: Registered edition
        AddKPI(oDash, "tileRevenue", "Revenue", "12,480 USD", "+4.2 %", 0, TsgcDashboardKPITrend.ktUp);
        AddKPI(oDash, "tileOrders", "Orders", "1,284", "+8.1 %", 4, TsgcDashboardKPITrend.ktUp);
        AddKPI(oDash, "tileChurn", "Churn", "2.4 %", "-0.3 %", 8, TsgcDashboardKPITrend.ktDown);
        aForm.Controls.Add(oDash);
        if (System.IO.File.Exists("layout.json"))
            oDash.LoadLayoutFromFile("layout.json");
        oDash.SaveLayoutToFile("layout.json");
    }
}
dotnet add package esegece.sgcDashboard.WinForms

阅读帮助主题 →

运行 sgcDashboard 演示

Delphi 和 C++ Builder 有六个演示,.NET 有十个演示,全部包含在已编译演示的下载中。

Basic

Basic

12 列网格上的六个磁贴和四张 KPI 卡片,其他磁贴中有日志和列表。这是了解布局引擎和主题切换的最快方式。

仅限注册版 LiveKPI

由 sgcDashboardWS 桥接提供数据的 KPI 卡片,消息到达时数值跳动、迷你图增长。需要 sgcWebSockets。

仅限注册版 SaveLayout

通过标题栏拖动磁贴,通过手柄调整大小,将布局保存为 JSON,重启演示后即可看到布局已恢复。

Suite

在一个带主题的仪表盘中,集合了来自其他 sgcUI 产品的图表、地图、PDF 查看器、报表预览和 KPI 卡片。

SalesExplorer

SalesExplorer

一个包含 204 行销售数据的数据源为图表、仪表、网格、透视表和地图磁贴提供数据。点击某个区域的柱子、网格单元格、透视表行或地图标记,其他磁贴就会跟随筛选(注册版);缩窄窗口,磁贴会重新排列。Delphi VCL 和 C++ Builder,以及 .NET 中的 SalesExplorer(WinForms)和 SalesExplorerWpf。需要 sgcCharts、sgcGauges、sgcGrid、sgcPivotGrid 和 sgcMaps。

仅限注册版 Designer

运行时设计器:从设计面板的调色板添加内置磁贴,在编辑模式下移动并调整大小,编辑属性,删除,撤销和重做,并把仪表盘保存为 JSON。Delphi VCL 和 C++ Builder,以及 .NET 中的 DashboardDesigner(WinForms)和 DashboardDesignerWpf。

TileLauncher

包含三个分组以及各种尺寸磁贴、副标题、徽章和一个已禁用磁贴的开始界面。状态栏显示用鼠标、Enter 或空格键单击的磁贴,两个组合框用于切换方向和主题。TileLauncherFMX 在 FireMonkey 中实现相同的功能。

.NET 演示

适用于 WinForms、WPF 和 Avalonia 的 Basic、BasicWpf、BasicAvalonia、LiveKPI、SaveLayout、Suite、SalesExplorer、SalesExplorerWpf、DashboardDesigner、DashboardDesignerWpf、TileLauncher、TileLauncherWpf 和 TileLauncherAvalonia。

预编译演示

每款 sgcUI 产品的可直接运行的可执行文件,无需安装。

下载 sgcUI_bin.zip →

入门指南

适用于 Delphi (VCL) 的五个 QuickStart 演示位于 Demos\Dashboard\Delphi\00.QuickStart。PDF 指南逐步讲解这些演示:带有 KPI 卡片的第一个仪表板、12 列磁贴网格、实时数据、主题,以及带有图表磁贴的销售仪表板。

下载指南(PDF,英文) →

sgcDashboard 包含在哪些版本中

sgcDashboard 包含在 sgcUI Professional 和 Enterprise 中,也可单独购买。sgcDashboard 还包含在 All-Access 套餐中。

sgcDashboard 单品包

€199 / 开发者,含完整源代码,1 年更新。

购买 sgcDashboard → 查看价格 →

sgcUI Professional

Standard 加 sgcDashboard、sgcCharts和sgcGauges,起价 €529。

查看 Professional →

sgcUI Enterprise

全部 17 款 sgcUI 产品,起价 €699。

查看 Enterprise →

免费的社区版(NuGet 上的 esegece.sgcDashboard.Community)包含网格、磁贴、带迷你图的 KPI 卡片、无界面 PNG 和 SVG、主题、数据源、内置磁贴、响应式断点,以及面向所有磁贴的 AI 路由。它不包含运行时拖动与调整大小、SaveLayout 和 LoadLayout(因此布局不会被保存)、交叉筛选、运行时设计器、“询问仪表盘”的带筛选回答,以及 sgcDashboardWS 桥接。无论哪个版本,每个内置磁贴都需要对应的 sgcUI 产品及其桥接包。

功能社区版(免费)注册版
带跨度和自动流式排列的磁贴网格✓✓
带趋势和迷你图的 KPI 卡片✓✓
浅色和深色主题✓✓
输出为 PNG 和 SVG 的无界面 KPI 卡片✓✓
带分组磁贴、徽章和键盘导航的磁贴启动器✓✓
图表、仪表、网格、透视表和地图内置磁贴(每个都需要各自的 sgcUI 产品)✓✓
由多个磁贴共享的数据源✓✓
响应式断点✓ (不保存)✓
“询问仪表盘”面向所有磁贴的路由✓✓
带筛选栏的交叉筛选−✓
带设计面板和撤销的运行时设计器−✓
“询问仪表盘”的带筛选回答−✓
运行时拖动并调整磁贴大小−✓
SaveLayout 和 LoadLayout−✓
sgcDashboardWS 实时数据源(WebSocket、MQTT、SSE)−✓

支持的框架与平台

sgcDashboard 中的组件

组件说明
TsgcVCLDashboard、TsgcFMXDashboard适用于 VCL 和 FireMonkey 的网格容器。
TsgcVCLDashboardTile、TsgcFMXDashboardTile带标题、可承载任意控件的磁贴。
TsgcVCLKPICard、TsgcFMXKPICard带趋势、页脚和迷你图的 KPI 卡片。
TsgcDashboardKPI框架无关的无界面 KPI 卡片,支持 PNG 和 SVG 导出。
TsgcVCLDashboardTileLauncher, TsgcFMXDashboardTileLauncher按带标题的分组排列四种尺寸磁贴的开始界面,支持徽章、滚动和键盘导航。
TsgcDashboardTileLauncher磁贴启动器与框架无关的模型和渲染器,支持无界面的 PNG 导出。
TsgcDashboardDataSource为内置磁贴提供数据、与框架无关的数据源。
TsgcVCLDashboardChartTile, GaugeTile, GridTile, PivotTile, MapTile内置磁贴,承载 sgcCharts、sgcGauges、sgcGrid、sgcPivotGrid 或 sgcMaps 的控件,每个产品一个桥接包,包含 FireMonkey 版本。
TsgcVCLDashboardDesignPanel, TsgcFMXDashboardDesignPanel运行时设计器的设计面板(仅限注册版)。
TsgcDashboardLayout布局引擎,在 Linux64 上同样可用。
TsgcDashboardSource_WebSocket、_MQTT、_SSEsgcDashboardWS 桥接的实时 KPI 数据源(仅注册版)。
目标组件平台
Delphi 7 到 13,VCLTsgcVCLDashboardWin32 与 Win64
Delphi XE6 到 13,FireMonkeyTsgcFMXDashboardWindows、macOS、iOS 和 Android
C++ Builder 2007 到 13TsgcVCLDashboard、TsgcFMXDashboard生成的 .hpp 头文件和静态库
Delphi 10.2 到 13,框架无关TsgcDashboardLayout、TsgcDashboardKPILinux64,布局引擎和无界面 KPI 卡片
.NET Framework 4.7.2、.NET 8、9 和 10TsgcWinFormsDashboard,以及 WPF 和 Avalonia 对应组件WinForms、WPF 和 Avalonia

常见问题解答

可以,在注册版中。AllowDrag 和 AllowResize 让用户通过标题栏移动磁贴并通过手柄调整大小,SaveLayoutToFile 或 SaveLayout 将结果存储为 JSON。LoadLayout 按磁贴名称恢复,因此布局在您的应用程序升级后依然有效。

任何控件。磁贴是一个容器:把控件的父级设为该磁贴,并将其对齐到客户区。Suite 演示承载了图表、地图、PDF 查看器和报表预览,磁贴中的 sgcUI 控件会遵循仪表盘主题。

需要。每个内置磁贴都需要各自的产品和桥接包:图表磁贴需要 sgcCharts,仪表磁贴需要 sgcGauges,网格磁贴需要 sgcGrid,透视表磁贴需要 sgcPivotGrid,地图磁贴需要 sgcMaps。仪表盘核心从不使用任何产品单元,因为 sgcDashboard 也可以单独销售。sgcUI Enterprise 包含全部这些产品。在 .NET 中,包括地图磁贴在内的每个磁贴都适用于 WinForms、WPF 和 Avalonia。请参阅内置磁贴。

可以,在注册版中。设置 EditMode,并把设计面板停靠在仪表盘旁边:用户可以从调色板添加内置磁贴,移动、调整大小和删除它们,编辑它们的属性,并撤销或重做每一步。SaveLayout 会保存结果,包括运行时添加的磁贴,LoadLayout 会重新创建它们。Designer 演示展示了完整流程。请参阅运行时设计器。

通过代码设置 Value 并调用线程安全的 AddValue。使用注册版和 sgcWebSockets 时,sgcDashboardWS 数据源会按 ValuePath 从每条 WebSocket、MQTT 或 SSE 消息中读取一个数字,并为您更新卡片及其趋势。

仪表盘和磁贴、带自动流式排列的网格布局、带迷你图的 KPI 卡片、无界面 PNG 和 SVG、主题、数据源、内置磁贴、响应式断点以及 AI 路由。它不包含运行时拖动与调整大小、SaveLayout 和 LoadLayout、交叉筛选、运行时设计器、AI 路由器的带筛选回答,以及 sgcDashboardWS 桥接。请参阅版本。

可以。TsgcFMXDashboard、其磁贴和 KPI 卡片自 Delphi XE6 起可在 Windows、macOS、iOS 和 Android 的 FireMonkey 上运行,使用与 VCL 仪表盘相同的布局引擎。尺寸与设备无关,并跟随窗体缩放。

可以。TsgcDashboardKPI 无需窗口,也无需 VCL 或 FireMonkey 即可绘制卡片,并将 PNG 或 SVG 写入文件或流。它可在所有平台构建,包括 Linux64,因此服务或 Web 服务器都可以生成这些图像。

支持。所有尺寸均为与设备无关的像素。VCL 仪表盘按显示器 PPI 除以 96 进行缩放,FireMonkey 仪表盘按窗体缩放比例缩放,因此磁贴、间距和行高在任何显示器上都保持比例。

sgcDashboard 帮助

3,000+开发者
20+年
761+组件
30+API 集成
5平台
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策

立即试用 sgcDashboard

sgcUI 试用版包含 sgcDashboard 和所有其他 sgcUI 产品。