DevExpress VCL 控件 v24.1
立即下载
RAD Studio 12.1 支持
高 DPI 支持
数据感知控件和菜单
功能区控件
图表控件
立即下载
一旦您准备好升级,只需登录 DevExpress 客户端中心并下载适当的安装程序即可继续。
您的反馈非常重要。请查看下面有关VCL的功能 的描述,并留下您的反馈。
RAD Studio 12.1 支持
DevExpress VCL v24.1 和 v23.2.6+ 正式支持 Delphi 12.1 和 C++ Builder 12.1(适用于 32 位和 64 位)。如果您之前安装了 RAD Studio 12.1,请应用其补丁 1,因为它解决了Delphi 64 位编译器的RSS-536不兼容问题(文章)。此外,请注意由于 System.Generics.Defaults 单元更改导致我们的富文本编辑器中出现 已知的性能问题。
高 DPI 支持
#增强的高 DPI 分辨率和矢量皮肤/图像支持
除了新功能之外,我们还专注于修复错误,尤其是与高 DPI 相关的问题、矢量皮肤和性能瓶颈。最终,我们希望我们的 VCL UI 组件在这些方面更加精致、现代,并在所有竞争对手中脱颖而出(UI 很重要,这几乎影响到每个 VCL 客户)。
从技术上来说,许多“修复”都是“功能”。我们最近开始发布更多错误报告(例如,来自我们的内部/私人测试),并在所有错误报告中包含更多信息,例如之前/之后的屏幕截图和示例 - 每个人都可以查看这些信息并分析所涉及工作的复杂性。
#新矢量主题 - Windows 11 (WXI) Compact
我们现在推出了 WXI Compact Skin - WXI 皮肤的克隆,具有更小的填充和边距,你们中的许多人已经习惯了传统的 DevExpress VCL 皮肤,例如 Bezier、Office 等。

要启用新的 WXI Compact Skin,请分配WXICompact给TdxSkinController组件的SkinName属性。

#设计时更轻松地为图像列表分配 SVG
在 v24.1 中,DevExpress VCL Ribbon(和其他 UI 控件)允许您使用单个图像列表来显示大 SVG 图标和小 SVG 图标。借助此功能,您只需指定一个小 SVG 图标,我们就会自动将其放大(例如,在控件需要 Ribbon 中大图标的地方)。这将提高整体可用性,并将花费的时间/维护时间减少一半。
根据我们的路线图调查投票,我们让客户能够使用UseRegularAsLarge、LargeSize和相关 SVG 图像选项来使用新旧图标分配策略。现有应用和使用习惯将不受影响。

#设计时向导和对话框中的布局和图像修改
VCL v24.1 在关键设计时区域(向导、设计器和对话框) 包含数十种布局和“光栅到矢量”图像调整。高 DPI 支持至关重要,我们希望在这方面设定最高标准(就开发人员可用性和速度而言)。

数据感知控件和菜单
#辅助功能增强和键盘支持
DevExpress ExpressBars 和 ExpressNavBar Suite 的先前版本包含部分可访问性支持(由 Microsoft Active Accessibility 或MSAA提供支持)。我们最初希望使用 MSAA 来支持剩余的 VCL 控件,但研究表明这在技术上不可行。事实证明,这种基于 COM 的技术对于现代可访问性要求和像我们这样的高度交互的 UI 控件来说已经过时了。
因此,我们构建了一个新引擎来持续改进与可访问性相关的功能(它由 Microsoft UI Automation 或UIA 提供支持- 用于 DevExpress WinForms 和 WPF 产品)。UIA 为我们提供了更大的灵活性,并允许引入以下与可访问性相关的 v24.1 功能:
UIA 驱动的控件现在包括名称、描述等自动化选项。
UIA 驱动的控件现在包括专门的事件,用于在运行时定制自动化选项。
UIA 支持的控件目前包括按钮、复选框、单选按钮、组框、面板、文本编辑器、按钮编辑器和标签。

我们在这方面的努力将持续到 2024-2025 年,并将包括对关键不受支持的组件的增强:
数据网格(关键导航和“只读”场景,在第一个版本中可能没有数据编辑和其他复杂的交互)
表单布局管理器(包括布局组、选项卡等)
导航和菜单(功能区和标准工具栏中的关键场景)
TreeList、Scheduler、Pivot Grid 和其他流行的数据编辑器(内置编辑器和独立编辑器中的关键场景)

#数据感知控件的不区分重音操作支持
使用 v24.1,您可以配置如何处理字母中的各种变音符号(变音符号、重音符、锐音符和其他重音符)。例如,如果您在搜索框中输入“Joao”,数据网格过滤结果将包括同时包含“João”和“Joao”的数据记录。有关更多信息,请阅读以下来自维基百科的引文:
变音符号 (也称变音标记、变音点、变音符号或重音符)是添加到字母或基本字形上的字形。该术语源于古希腊语διακριτικός (diakritikós,意为“区分”),源自διακρίνω (diakrī́nō,意为“区分”)。变音符号是名词,但有时也用作定语,而变音符只是形容词。一些变音符号,如尖音符 ⟨á⟩、重音符 ⟨à⟩ 和扬抑符 ⟨â⟩(均显示在“a”上方),通常称为重音符。变音符号可能出现在字母上方或下方,也可能出现在其他位置,如字母内部或两个字母之间。
您可以使用TdxDiacriticStringOptions类 全局启用或配置不区分重音的操作:
ComparisonMode:允许您在比较模式(自动、敏感、不敏感)之间切换。默认情况下(敏感),我们不会忽略重音。不敏感模式对于拥有来自不同国家/数据的用户的全球组织非常有用(例如,员工或商品的名称可能使用不同的语言)。
NormalizationMode:指定在不区分变音符号模式下用于字符串比较的字符串规范化算法(Fast、System)。默认算法(Fast)比操作系统相关算法(System)快 3 倍。
注意:TdxDiacriticStringOptions在服务器模式下不起作用 - 请改用数据库排序选项。
受影响的文本比较操作和控制功能包括:
排序
分组
增量搜索
自动过滤行
查找面板等。
此行为扩展到以下控制:
导航控制
功能区和标准工具栏
查找编辑器
数据网格
数据透视网格
树形列表
其他数据绑定控件(由我们的数据控制器提供支持)。
#图像控件中的编辑操作(旋转、裁剪、翻转等)
现在,您可以使用编辑上下文菜单命令调用TcxImage和TcxDBImage组件的图像编辑器对话框。我们的设计时图像选择器对话框也包含新的编辑命令。编辑命令可解锁基本的图像编辑操作:
裁剪并拉直
调整亮度、对比度和饱和度
镜子
旋转等等。
图像编辑器保留操作历史记录,并提供撤消和重做功能。一旦关闭编辑器并保存更改,修改将无法撤消。


#图像控件中的 EXIF 元数据支持
在 v24.1 中,我们的图像控件(TcxImage和TcxDbImage)读取并解释图像中的 EXIF 元数据,并相应地修改图像显示。例如,我们的图像控件会根据方向元数据自动旋转图像(与标准 TImage 控件和某些图像查看器不同)。
受影响的基于图像的场景(将发生旋转)包括:
数据网格单元
TreeList 单元格
垂直和属性网格单元格
以前,这需要一个复杂的自定义解决方案,并手动调用 Rotate 方法。自行实施自定义解决方案(例如,网格中的图像旋转或独立图像编辑器)的客户可以使用静态功能切换禁用此默认行为。TdxGPImage.DefaultImageExifAutoRotation类属性值定义图像编辑器是否根据 EXIF 元数据旋转图像。
#基于字段名称的数据感知控件表达式
使用 v24.1,您可以{FieldName}在条件格式规则的公式表达式中使用基础名称而不是显示名称来引用字段。以前,您只能使用显示名称/标题或索引。此功能将帮助您为条件格式规则创建公式。
这对于支持多种语言的 VCL 应用程序或其他不能依赖字段标题的场景(由于其动态特性,例如翻译成另一种语言)很有用。
在我们的在线文档 中查看条件格式表达式的表达式语法示例。
功能区控件
#VCL 功能区控件的 Office 365 样式
我们的 VCL Ribbon Control 附带了新的 Office 365渲染样式。使用我们的新 Office 365 样式时,Ribbon 控件会在 Ribbon 表单顶部显示一个搜索框,并在 Ribbon UI 的右下角显示“显示功能区”选项。

图表控件
#次要轴
如果您需要显示具有不同测量单位的多个刻度,则辅助轴会很有用。现在,您可以使用SecondaryAxes.AxesX和SecondaryAxes.AxesY属性来添加和配置参数主轴(X 轴)和值主轴(Y 轴)的补充轴。
以下代码片段创建了值的次轴并将其与 XY 图中的第一个系列关联。有关可用选项的详细信息, 请参阅TdxChartSecondaryAxes类描述。
Delphi var ADiagram: TdxChartXYDiagram; AAxisY: TdxChartSecondaryAxisYCollectionItem; AXYSeries: TdxChartXYSeries; begin if dxChartControl1.DiagramCount = 0 then Exit; ADiagram := dxChartControl1.Diagrams[0] as TdxChartXYDiagram; if ADiagram.SeriesCount = 0 then Exit; ASeries := ADiagram.Series[0]; AAxisY := ADiagram.SecondaryAxes.AxesY.Add; ASeries.View.AxisY := AAxisY.Axis; AAxisY.Title.Text := 'Income (USD)'; AAxisY.Title.Alignment := TdxAlignment.Center; AAxisY.Appearance.Color := TdxAlphaColors.Gray; end;

#对数尺度
当您需要显示相差很大数量级的值范围时,对数刻度会很有用。现在,您可以将 Logarithmic 属性设置为True 或 False,以在轴 ( TdxChartCustomAxis ) 的对数和标准数字刻度之间切换。LogarithmicBase属性可帮助您指定对数的底数(对于轴的对数刻度 - 默认值为 10)。

#通过事件自定义点和段的颜色
您可以处理OnGetSeriesPointDrawParameters和OnGetValueLabelDrawParameters事件来根据特定条件自定义各个系列点和相关值标签。
示例 1:为系列中的所有点标记生成唯一的填充颜色(欧洲人口)。
Delphi
procedure TFeaturesDemoMainForm.cdLineGetSeriesPointDrawParameters(
Sender: TdxChartCustomDiagram;
AArgs: TdxChartGetSeriesPointDrawParametersEventArgs);
var
ALineDrawParameters: TdxChartLineSeriesPointDrawParameters;
APalette: TdxChartPalette;
APaletteItem: TdxChartPaletteItem;
begin
APalette := TdxChartStandardPaletteRepository.FindPalette('Slipstream');
if AArgs.SeriesPoint.Series.Caption = 'Europe' then
begin
if AArgs.DrawParameters.ClassType <> TdxChartLineSeriesPointDrawParameters then Exit;
ALineDrawParameters := AArgs.DrawParameters as TdxChartLineSeriesPointDrawParameters;
APaletteItem := APalette.GetColorsForIndex(AArgs.SeriesPoint.Index);
ALineDrawParameters.MarkerAppearance.FillOptions.Color := APaletteItem.Color;
end;
end;
示例 2:显示价值标签的不同测量单位(百万或千美元)。
Delphi
procedure TMyForm.cdAreaGetValueLabelDrawParameters(Sender: TdxChartCustomDiagram;
AArgs: TdxChartGetValueLabelDrawParametersEventArgs);
begin
if AArgs.SeriesPoint.Value >= 1000 * 1000 then // Millions
AArgs.Text := Format('%.1fM', [AArgs.SeriesPoint.Value / (1000 * 1000)])
else if AArgs.SeriesPoint.Value >= 1000 then // Thousands
AArgs.Text := Format('%.0fk', [AArgs.SeriesPoint.Value / 1000])
else
AArgs.Text := Format('%0f', [AArgs.SeriesPoint.Value]);
end;
在我们的在线文档 中查看面积图、折线图、条形图、饼图视图的更多代码示例。
#调色板
现在,您可以使用Palette属性在调色板之间切换,这些调色板的颜色集应用于单个简单系列值和 XY 系列。以下代码片段将预定义的调色板(“自然色”)应用于图表控件:
Delphi
dxChartControl1.Palette := TdxChartStandardPaletteRepository.FindPalette('Nature Colors');您还可以添加TdxChartPaletteRepository组件来创建和管理自定义调色板。以下代码片段创建一个具有三种颜色的用户调色板,并将该调色板应用于图表控件:
Delphi var AChartPalette: TdxChartUserPalette; begin AChartPalette := dxChartPaletteRepository1.CreateItem; AChartPalette.Name := 'My Palette 1'; // Assigns a unique palette name AChartPalette.Count := 3; // Sets the size of the palette item array AChartPalette.Items[0] := TdxChartPaletteItem.Create(TdxAlphaColors.Red); AChartPalette.Items[1] := TdxChartPaletteItem.Create(TdxAlphaColors.Green); AChartPalette.Items[2] := TdxChartPaletteItem.Create(TdxAlphaColors.Blue); dxChartControl1.Palette := AChartPalette; end;
如果需要,您还可以在运行时在调色板之间切换。

您可以在我们的在线文档 中找到有关预定义和自定义调色板的更多信息
渝公网安备50010702505508