五分钟上手 sgcUI
sgcUI 是适用于 Delphi、C++Builder 和 .NET 的十七款原生界面产品,由一个安装程序统一安装。本页将安装试用版,在窗体上放置一个带实时数据行的表格,展示 C++Builder 和 C# 中的相同代码,然后各用一次调用将整个应用程序切换为深色模式和从右到左布局。
sgcUI 是适用于 Delphi、C++Builder 和 .NET 的十七款原生界面产品,由一个安装程序统一安装。本页将安装试用版,在窗体上放置一个带实时数据行的表格,展示 C++Builder 和 C# 中的相同代码,然后各用一次调用将整个应用程序切换为深色模式和从右到左布局。
每个产品没有单独的安装程序。一个 Delphi 试用版和一个 C++Builder 试用版即可安装全部十七款产品,.NET 版本则来自 NuGet。
下载试用版(Delphi 或 C++Builder)并运行。试用版会安装每款产品的试用版本,包含演示和帮助,无需许可证。
选择要安装到的 Delphi 或 C++Builder 版本,从 Delphi 7 和 C++Builder 2007 直至 RAD Studio 13。安装程序会为每个版本编译包,并在 IDE 中注册设计时包。
sgcGrid、sgcCharts、sgcDashboard 及其他控件构建在 sgcUICore 之上,sgcReports 则构建在 sgcPDF 之上。安装程序会按此顺序编译,因此无需手动添加任何内容。
每个产品都有自己的组件面板页: SGC Grid, SGC Navigation, SGC Toolbar, SGC Editors, SGC Charts, SGC Dashboard, SGC Gauges, SGC PivotGrid, SGC Planner, SGC Diagram, SGC Wizard, SGC Maps, sgcPDF、sgcReports、SGC RichEdit、SGC Spreadsheet 和 SGC Chat。
为您的界面框架添加相应的包,例如 esegece.sgcGrid.WinForms、esegece.sgcGrid.Wpf 或 esegece.sgcGrid.Avalonia。它会自动引入 esegece.sgcGrid 和 esegece.sgcUICore。
每个 .NET 产品还提供带有 .Community 后缀的免费 Community 包,例如 esegece.sgcGrid.Community。注册版包则包含全部功能、完整源代码和商业许可证。对于 Delphi,免费的 Delphi Community 版只安装 sgcGrid。
创建一个 VCL 应用程序,将 SGC Grid 面板页中的 TsgcVCLGrid 拖到窗体上,双击窗体生成 FormCreate,然后输入下面的代码。按 F9 运行。C++Builder 和 .NET WinForms 应用程序中的相同表格见其他选项卡。
uses
SysUtils, Classes, Controls, Forms,
sgcGrid_Columns, sgcGrid_Data, sgcGrid_VCL;
type
TForm1 = class(TForm)
sgcVCLGrid1: TsgcVCLGrid;
procedure FormCreate(Sender: TObject);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
sgcVCLGrid1.Align := alClient;
// the columns: field name, caption and data type
sgcVCLGrid1.Columns.Add('Symbol', 'Symbol');
sgcVCLGrid1.Columns.Add('Price', 'Price', gdtFloat).DisplayFormat := '0.00';
sgcVCLGrid1.Columns.Add('Volume', 'Volume', gdtInteger);
// one row per key, the values in column order
sgcVCLGrid1.Data.AppendRow('MSFT', ['MSFT', 412.5, 1200]);
sgcVCLGrid1.Data.AppendRow('AAPL', ['AAPL', 228.1, 3400]);
// later, from any thread: update a row by key and field name
sgcVCLGrid1.Data.UpdateRow('MSFT', ['Price', 'Volume'], [413.1, 1350]);
end;
AppendRow 按列顺序接收各个值。UpdateRow 接收字段名,因此只携带价格的消息只会更新价格,而尚不存在的键则会被插入。也可以在设计时使用 Columns 编辑器添加列,同一面板页中的 TsgcGridSource_DataSet 可以从任意 TDataSet 填充表格。
#include <vcl.h>
#include "sgcGrid_Columns.hpp"
#include "sgcGrid_Data.hpp"
#include "sgcGrid_VCL.hpp"
void __fastcall CreateGrid(TForm *Form)
{
TsgcVCLGrid *Grid = new TsgcVCLGrid(Form);
Grid->Parent = Form;
Grid->Align = alClient;
// the columns: field name, caption and data type
Grid->Columns->Add("Symbol", "Symbol", gdtText);
Grid->Columns->Add("Price", "Price", gdtFloat)->DisplayFormat = "0.00";
Grid->Columns->Add("Volume", "Volume", gdtInteger);
// one row per key, the values in column order
Grid->Data->AppendRow("MSFT", OPENARRAY(Variant,
(Variant("MSFT"), Variant(412.5), Variant(1200))));
Grid->Data->AppendRow("AAPL", OPENARRAY(Variant,
(Variant("AAPL"), Variant(228.1), Variant(3400))));
}
C++Builder 通过 C++Builder 安装程序生成的头文件和库使用相同的组件。Delphi 开放数组使用 OPENARRAY 宏传递。也可以不写代码,直接将 TsgcVCLGrid 放到窗体上,在对象检查器中设置列。
// dotnet add package esegece.sgcGrid.WinForms
using System;
using System.Windows.Forms;
using esegece.sgcGrid;
internal static class Program
{
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Form oForm = new Form { Text = "My first sgcUI form", Width = 640, Height = 360 };
TsgcWinFormsGrid oGrid = new TsgcWinFormsGrid { Dock = DockStyle.Fill };
oGrid.Columns.Add("symbol", "Symbol");
oGrid.Columns.Add("price", "Price", TsgcGridDataType.gdtFloat).DisplayFormat = "0.00";
oGrid.Columns.Add("volume", "Volume", TsgcGridDataType.gdtInteger);
oGrid.Data.AppendRow("MSFT", "MSFT", 412.5, 1200);
oGrid.Data.AppendRow("AAPL", "AAPL", 228.1, 3400);
oGrid.Data.UpdateRow("MSFT", new[] { "price", "volume" }, new object[] { 413.1, 1350 });
oForm.Controls.Add(oGrid);
Application.Run(oForm);
}
}
类名沿用 Delphi 的命名:WinForms 使用 TsgcWinFormsGrid,WPF 使用 TsgcWpfGrid,且各自都有相同的 Columns 和 Data 成员。WinForms 包面向 .NET Framework 4.7.2 以及适用于 Windows 的 .NET 8、9 和 10。
每个 sgcUI 控件默认都遵循应用程序的主题和方向。一次调用即可将它们全部以深色模式重绘,另一次调用则可为阿拉伯语或希伯来语镜像整个应用程序。
uses
Classes,
sgcUICore_Theme, sgcUICore_Theme_VCL;
procedure ApplyAppSettings(aDark, aRightToLeft: Boolean);
begin
// every sgcUI control whose Theme is utDefault repaints in the new theme;
// True also themes the standard controls of every open form
if aDark then
sgcUISetApplicationTheme(utDark, True)
else
sgcUISetApplicationTheme(sgcUISystemTheme, True);
// mirrors every open form and the sgcUI controls that follow it
if aRightToLeft then
sgcUISetApplicationBiDiMode(bdRightToLeft)
else
sgcUISetApplicationBiDiMode(bdLeftToRight);
end;
这两个函数都位于 sgcUICore_Theme 中。传入 True 时,请添加 sgcUICore_Theme_VCL(或 sgcUICore_Theme_FMX),这样窗体上的标准控件也会应用主题。sgcUISystemTheme 返回操作系统的浅色或深色选择。在 C++Builder 中,包含 sgcUICore_Theme.hpp 并进行相同的调用。自身 Theme 为 utLight、utDark 或 utCustom 的控件会保持该设置。
using esegece.sgcUICore;
// follow the light or dark choice of Windows, and theme the forms too
sgcUIApplication.SetTheme(sgcUIApplication.SystemTheme(), true);
// or force dark mode
sgcUIApplication.SetTheme(TsgcUITheme.utDark);
// mirror every open form and the sgcUI controls that follow it
sgcUIApplication.SetRightToLeft(true);
sgcUIApplication 是 esegece.sgcUICore 中的静态类,由 WinForms、WPF 和 Avalonia 共用。对于单个控件,标准属性仍然有效:WinForms 中为 RightToLeft,WPF 和 Avalonia 中为 FlowDirection。
套件演示是同时使用多款产品的完整应用程序。演示源代码随试用版提供,位于 Demos\Suite 下。
| 套件演示 ERP、Factory、Fleet、Markets 和 Portfolio,已编译,可直接运行。 | 打开 | |
| 17 款产品 标准版:sgcGrid、sgcNavigation、sgcToolbar 和 sgcEditors。专业版增加 sgcCharts、sgcDashboard 和 sgcGauges。企业版增加 sgcPivotGrid、sgcPlanner、sgcDiagram、sgcWizard、sgcMaps、sgcPDF、sgcReports、sgcRichEdit、sgcSpreadsheet 和 sgcChat。 | 打开 | |
| 功能对比 并排展示每款产品在 Delphi、C++Builder 和 .NET 中的功能。 | 打开 | |
| 在线帮助 安装、按产品和框架划分的快速入门、应用程序主题以及从右到左布局。 | 打开 | |
| 定价 标准版、专业版和企业版,或任意单个产品。 | 打开 | |
| 下载试用版 Delphi 和 C++Builder 安装程序、已编译的演示以及 NuGet 包列表。 | 打开 |
每款产品都有自己的快速入门,列在入门页面上。
每款 sgcUI 产品都附带五个适用于 Delphi (VCL) 的 QuickStart 演示,从第一个窗体到一个小型的完整应用程序,并提供一份 PDF 指南,逐步讲解这些演示。
| sgcCharts 第一个折线图、在对象检查器中设置的标题、坐标轴和图例、实时数据源、点击、十字准线和缩放事件,以及绑定到数据集的销售应用程序。 | 打开 | |
| sgcChat 第一次会话、支持 Markdown 的气泡、回复和表情回应、聊天面板上的回声机器人、主题,以及 AI 助手应用程序。 | 打开 | |
| sgcDashboard 带有 KPI 卡片的第一个仪表板、12 列磁贴网格、实时数据、主题,以及带有图表磁贴的销售仪表板。 | 打开 | |
| sgcDiagram 第一个图示、流程图形状、带撤销功能的视图事件、主题,以及支持 JSON、PNG 和 SVG 导出的流程图编辑器。 | 打开 | |
| sgcEditors 窗体上的第一批编辑器、读取和写入值、主题、验证,以及基于数据表单构建的联系人应用程序。 | 打开 | |
| sgcGauges 第一个径向仪表、刻度和彩色区间、阈值报警、主题和皮肤,以及泵站监视器。 | 打开 | |
| sgcGrid 第一个网格、类型化列、就地编辑、数据集连接,以及带有筛选、分组和合计的订单应用程序。 | 打开 | |
| sgcMaps 第一张带标记的地图、通过代码添加的标记和标签、形状、地图事件,以及门店定位器。 | 打开 | |
| sgcNavigation 第一个导航栏、通过代码构建的菜单、文档选项卡、主题和样式,以及一个小型邮件客户端。 | 打开 | |
| sgcPDF 第一个单页 PDF、使用字体、形状和图像绘制、跨多页的表格、PDF 查看器,以及发票生成器。 | 打开 | |
| sgcPivotGrid 第一个数据透视网格、行、列和值、合计和格式规则、数据集连接,以及销售分析应用程序。 | 打开 | |
| sgcPlanner 第一个日程表、其视图和资源、用鼠标和键盘编辑的约会、基于同一数据的甘特图和看板,以及团队计划器。 | 打开 | |
| sgcReports 第一个报表、来自数据集的数据列表、分组和合计、导出和打印,以及开票应用程序。 | 打开 | |
| sgcRichEdit 第一个富文本文档、格式工具栏、样式、表格和图片、文件格式,以及邮件合并应用程序。 | 打开 | |
| sgcToolbar 第一个工具栏、各种类型的项目、动作和状态栏、主题,以及一个小型文本编辑器。 | 打开 | |
| sgcWizard 第一个三页向导、步骤和按钮的外观、验证和跳过的页面、主题和过渡效果,以及一个入职引导应用程序。 | 打开 |
TsgcFMXGrid,WPF 使用 TsgcWpfGrid,Avalonia 使用 TsgcAvaloniaGrid,它们都有相同的 Columns 和 Data。帮助中为每个产品和每个框架都提供了快速入门。