我正在尝试将符号对话框中Microsoft Word所示的Wingdings字体中的符号打印为字符代码129到138的符号(' 1'到' 10'圆圈')和140到149(白色' 1'到' 10'在黑色圆圈')但只有那些' 1',白色' 2',white' 4' &安培;白色' 5'如果显示正确,出现在打印列表中的其他符号(包括位置1到20)将显示为矩形。
以下代码使用Delphi 5和Rave Reports 4.0(pre-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时代,我没有正确地逐步完成字符集,但由于我的无知,我不确定如何更改此代码以便访问正确的符号。
答案 0 :(得分:1)
不了解报告的特性,但这个示例在现代Delphi版本中有效(如果使用Char
而不是AnsiChar
则显示空矩形)
var
i: integer;
begin
Canvas.Font.Name := 'Wingdings';
Canvas.Font.Charset := SYMBOL_CHARSET;
for i := 128 to 128 + 21 do
Canvas.TextOut(0, 20 * (i - 128), AnsiChar(i));