【发布时间】:2016-12-28 09:38:28
【问题描述】:
我正在尝试将 Microsoft Word 在“符号”对话框中显示的 Wingdings 字体中的符号打印为字符代码为 129 到 138(圆圈中的“1”到“10”)和 140 到 149(白色“黑色圆圈中的 1' 到 '10')但只有 '1'、白色 '2'、白色'4' 和白色 '5' 的符号正确显示,打印列表中出现的其他符号覆盖位置 1 到 20显示为一个矩形。
以下代码使用 Delphi 5 和 Rave Reports 4.0(Unicode 之前)按预期工作,但使用 Delphi 10.1 和 Rave 11.0.12 时失败;
with Sender as TBaseReport do
begin
PushFont;
SetFont('Wingdings', 10);
FontCharSet := SYMBOL_CHARSET;
if NoteNo < 11 then
{0 - 10 = white (0) - (10).}
PrintTab(char(128 + NoteNo))
else
if NoteNo < 21 then
{11 - 20 = black (1) - (10).}
PrintTab(char(128 + 1 + NoteNo))
else
我假设现在处于 Unicode 时代,我没有正确地遍历字符集,但是由于我的无知,我不确定应该如何更改此代码以便访问正确的符号。
【问题讨论】:
-
从 pre-Unicode 迁移时的一些阅读:Delphi Unicode Migration for Mere Mortals: Stories and Advice from the Front Lines.
-
谢谢。我会感兴趣地研究这个(并将它添加到我的收藏列表中,以防我需要再次参考它)。