我使用的是DevExpress编辑器库6.45中的TcxDBImgage(用于 Delphi 2009),这个图像组件作为内置的弹出菜单组件,带有菜单项“加载”、“保存”等。
我正在开发非英语语言的应用程序,我想覆盖这些菜单项的标题。
我检查了DevExpress Delphi 代码,看看这些标题是如何加载的,代码是:
procedure RefreshCaptions;
begin
with FEditPopupMenu do
begin
Items[0].Caption := cxGetResourceString(@cxSMenuItemCaptionCut);
Items[1].Caption := cxGetResourceString(@cxSMenuItemCaptionCopy);
Items[2].Caption := cxGetResourceString(@cxSMenuItemCaptionPaste);
Items[3].Caption := cxGetResourceString(@cxSMenuItemCaptionDelete);
Items[5].Caption := cxGetResourceString(@cxSMenuItemCaptionLoad);
Items[6].Caption := cxGetResourceString(@cxSMenuItemCaptionSave);
end;
end;
function cxGetResourceString(AResString: TcxResourceStringID): string;
var
AIndex: Integer;
begin
AIndex := GetResOriginalStringIndex(AResString);
if AIndex <> -1 then
Result := FResStrings[AIndex]
else
Result := LoadResString(AResString);
end;
字符串
而dcr文件( Delphi 编译器生成的文件)包含常量:
#define cxEditConsts_cxSMenuItemCaptionCut 64713
#define cxEditConsts_cxSMenuItemCaptionCopy 64714
#define cxEditConsts_cxSMenuItemCaptionPaste 64715
#define cxEditConsts_cxSMenuItemCaptionDelete 64716
#define cxEditConsts_cxSMenuItemCaptionLoad 64717
#define cxEditConsts_cxSMenuItemCaptionSave 64718
cxEditConsts_cxSMenuItemCaptionCut, "Cu&t"
cxEditConsts_cxSMenuItemCaptionCopy, "&Copy"
cxEditConsts_cxSMenuItemCaptionPaste, "&Paste"
cxEditConsts_cxSMenuItemCaptionDelete, "&Delete"
cxEditConsts_cxSMenuItemCaptionLoad, "&Load..."
cxEditConsts_cxSMenuItemCaptionSave, "Save &As..."
型
所以,这应该是以某种方式可定制的。可能的问题是-我如何在我的项目的 Delphi 代码中覆盖这些常量,使用TcxDBImage组件?
我应该用某种方式重新定义resourcestrings吗?我应该用STRINGS表创建 *.res文件吗?我检查了我的项目和DevExpress组件的res文件(例如使用Visual Studio作为res文件的编辑器),它们只包含Icon和Version,没有字符串表。
我知道文档https://docs.devexpress.com/VCL/154039/ExpressCrossPlatformLibrary/how-to/localize-an-application和https://docs.devexpress.com/VCL/154011/ExpressCrossPlatformLibrary/concepts/localizer-editor-ui,但我没有Localizer编辑器,我不确定最近的文档是否可以应用于我的DevExpress组件版本。
1条答案
按热度按时间ijxebb2r1#
创建一个如下所示的单元,并将其包含在项目中的uses子句中。当然,您可以以相同的方式更改其他单元中的资源字符串。
字符串