簡體   English   中英

如何在 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

當我從上面的網站復制“帶圓圈”的文本並粘貼到我的備忘錄上時,它可以工作,顯示為“帶圓圈”。 但我想讓我的用戶能夠在我的應用程序中應用格式。

例如,我想要一個快速按鈕來將“圓圈”格式應用於當前 TMemo 選定的文本:用戶選擇一個文本,單擊此快速按鈕,然后選定的文本將獲得“圓圈”格式。

在此處輸入圖像描述

這很容易。 如果您查看 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;

你會得到想要的行為:

將字母和數字轉換為環繞版本的 TMemo 的屏幕截圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM