delphi - 如何在 Delphi 备忘录上进行 Unicode 修饰

标签 delphi delphi-10.3-rio

我有一个小的 Delphi 10.3.3 应用程序,它有一些文本编辑功能,使用用户输入文本的 TMemo。
我正在尝试包含一些格式选项,如本网站提供的内容:
http://qaz.wtf/u/convert.cgi?text=How%20do%20it%20on%20Delphi
当我从上面的站点复制“圈出”文本并粘贴到我的备忘录上时,它起作用了,显示为“圈出”。但我想让我的用户能够在我的应用程序中应用格式。
例如,我想要一个速度按钮将“圆圈”格式应用于当前 TMemo 选定的文本:用户选择一个文本,单击此速度按钮,然后所选文本将获得“圆圈”格式。
enter image description here

最佳答案

这相当容易。如果您查看 enclosed alphanumerics 的 Unicode 图表,您意识到以下映射是有效的:

function EncircleChr(AChr: Char): Char;
begin
  case AChr of
    '0':
      Result := Chr($24EA);
    '1'..'9':
      Result := Chr($2460 + Ord(AChr) - Ord('1'));
    'a'..'z':
      Result := Chr($24D0 + Ord(AChr) - Ord('a'));
    'A'..'Z':
      Result := Chr($24B6 + 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;
你得到了想要的行为:
Screenshot of a TMemo with letters and digits transformed into their encircled versions.

关于delphi - 如何在 Delphi 备忘录上进行 Unicode 修饰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63539291/

相关文章:

delphi - 如何使用Delphi写入超过物理RAM的巨大JPEG?

delphi - 获取 Delphi 中 OpenSSL DLL 的版本和/或位置?

Delphi firemonkey进程间通信有可能吗?

delphi - 如何查看 Delphi 应用程序的 Apple Notarize 日志

delphi - 这是Rio上的System.Net.HttpClient中的错误吗?

delphi - 在 FMX 中加入多个图像?

delphi - "Object Aware"图形用户界面控件

delphi - GetEnumName TypeInfo 问题(pascal/Delphi 控制台)

android - 在 Delphi 10.3 Rio 中写入外部 SD 卡

delphi - Delphi 10.3 中使用 HTTPRIO 进行基本身份验证