如何在 Delphi 备忘录上进行 Unicode 修饰
How to do Unicode decoration on a Delphi memo
我有一个小型 Delphi 10.3.3 应用程序,它具有一些文本编辑功能,使用用户在其中键入文本的 TMemo。
我正在尝试包括一些格式选项,正如本网站提供的那样:
http://qaz.wtf/u/convert.cgi?text=How%20do%20it%20on%20Delphi
当我从上面的站点复制 'circled' 文本并粘贴到我的备忘录时,它起作用了,出现 'circled'。但我想让我的用户能够在我的应用程序中应用格式。
例如,我想要一个快速按钮将 'circle' 格式应用于当前 TMemo 选定的文本:用户选择一个文本,单击此快速按钮,然后选定的文本将获得 'circled'格式化。
这很容易。如果查看 enclosed alphanumerics 的 Unicode 图表,您会发现以下映射是有效的:
function EncircleChr(AChr: Char): Char;
begin
case AChr of
'0':
Result := Chr(EA);
'1'..'9':
Result := Chr(60 + Ord(AChr) - Ord('1'));
'a'..'z':
Result := Chr(D0 + Ord(AChr) - Ord('a'));
'A'..'Z':
Result := Chr(B6 + Ord(AChr) - Ord('A'));
else
Result := AChr;
end;
end;
因此,
function Encircle(const S: string): string;
var
i: Integer;
begin
SetLength(Result, S.Length);
for i := 1 to S.Length do
Result[i] := EncircleChr(S[i]);
end;
和
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.SelText := Encircle(Memo1.SelText);
end;
你得到了想要的行为:
我有一个小型 Delphi 10.3.3 应用程序,它具有一些文本编辑功能,使用用户在其中键入文本的 TMemo。
我正在尝试包括一些格式选项,正如本网站提供的那样:
http://qaz.wtf/u/convert.cgi?text=How%20do%20it%20on%20Delphi
当我从上面的站点复制 'circled' 文本并粘贴到我的备忘录时,它起作用了,出现 'circled'。但我想让我的用户能够在我的应用程序中应用格式。
例如,我想要一个快速按钮将 'circle' 格式应用于当前 TMemo 选定的文本:用户选择一个文本,单击此快速按钮,然后选定的文本将获得 'circled'格式化。
这很容易。如果查看 enclosed alphanumerics 的 Unicode 图表,您会发现以下映射是有效的:
function EncircleChr(AChr: Char): Char;
begin
case AChr of
'0':
Result := Chr(EA);
'1'..'9':
Result := Chr(60 + Ord(AChr) - Ord('1'));
'a'..'z':
Result := Chr(D0 + Ord(AChr) - Ord('a'));
'A'..'Z':
Result := Chr(B6 + Ord(AChr) - Ord('A'));
else
Result := AChr;
end;
end;
因此,
function Encircle(const S: string): string;
var
i: Integer;
begin
SetLength(Result, S.Length);
for i := 1 to S.Length do
Result[i] := EncircleChr(S[i]);
end;
和
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.SelText := Encircle(Memo1.SelText);
end;
你得到了想要的行为: