【问题标题】:Unicode in Delphi form TRectangle TTextDelphi形式的Unicode TRectangle TText
【发布时间】:2013-06-15 20:43:57
【问题描述】:

我是 Delphi 的新手,在 DelphiXE4 编辑器中我正在尝试在表单上制作棋盘 gui,使用 x64 TRectangle 作为棋盘(替代颜色)。我想添加 unicode 棋子,但是在 ObjectInspector 属性中,当我添加 unicode 时,它​​会在表单上逐字显示。如何将 Unicode 添加到 TText(以便表单将 unicode 显示为棋子)? (在我想将拖放添加到 TRectangles/unicode 国际象棋之后 - 有什么想法吗?)。

Rectangle63: TRectangle;
Rectangle64: TRectangle;
Text1: TText;
Text2: TText;

这是显示问题的屏幕截图:

非常感谢您的帮助,谢谢

编辑: Jeroen 的回答为我解决了这个问题(我通过将实际的 unicode 棋子图像复制/粘贴到 TText 文本属性中来解决这个问题)。到目前为止,我添加了 exe 的屏幕截图。接下来我想将 DRAGNDROP 添加到这些片段中.....

编辑2: (已修复 Jeroen 字体大小问题) 修复了 unicode black king 显示-见截图:

【问题讨论】:

  • 嗨 David-thx 回复-该项目是 Firebird 桌面 ..使用 System.SysUtils、System.Types、System.UITypes、System.Rtti、System.Classes、System.Variants、FMX。类型,FMX.Controls,FMX.Forms,FMX.Dialogs,FMX.StdCtrls,FMX.Objects;我猜这使它成为 FMX?
  • OK-thx for link-我看到它是 FireMonkey(不是我称之为 Firebird-它是从哪里来的!?-对不起)FMX。我的问题仍然存在,但我如何使用 Xe4(VCL 或 FMX)在 Delphi 中使用 unicode 棋子来完成这个国际象棋 gui 项目?
  • 谢谢,这样更好。我没有明确表示您应该保留一般的 delphi 标签。我加回来了。因此,通常您标记问题 delphi delphi-xe4。当然,如果你问一个你认为不依赖于版本的问题,你可以省略版本标签。
  • 你应该说“(在我想将拖放添加到 TRectangles/unicode 国际象棋之后 - 任何想法?)。”在一个单独的问题中。
  • 嗨,Jeroen..我仍然无法让 DND 处理此问题,因此发布了一个新问题以寻求有关此 DragNDrop 的帮助-see stackoverflow.com/questions/17232577/…

标签: delphi unicode firemonkey delphi-xe4


【解决方案1】:

Unicode Chess Pieces 可以在任何 Delphi 应用程序中显示,前提是您喜欢在 Unicode 中包含 Glyphs 的各种 CodePoints 代表 Chess Pieces

其实,什么平台,什么开发环境都无所谓 你可以使用,只要它们支持 Unicode 并且你有正确的字体。

你需要:

  1. 一种输入这些 Unicode 代码点的方法
  2. 在您的目标平台上将这些 Unicode 代码点表示为字形的字体

从最后一个开始,对于Microsoft Windows,这些字体可以正常工作:

Microsoft Windows 有两种输入方法:

  1. 如果您在注册表中启用它:在键盘上通过Alt-codes 输入hexadecimal Unicode CodePoint 数字
  2. copy/paste 它们来自以文本形式提供它们的应用程序(即Unicode Input: Selection from Screen

对于复制/粘贴,我经常使用支持 Unicode 的 Web Browser 转到包含正确字符的网页,或者使用 Character Map 应用程序搜索它们。

为了使复制/粘贴更容易:

  • 这些是白色碎片:♔♕♖♗♘♙
  • 这些是黑色碎片:♚♛♜♝♞♟

FireMonkey 表单示例,所有部分都在 1 TTextTTRectangle

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [dkDesktop, dkiPhone, dkiPad]
  DesignerMobile = False
  DesignerWidth = 0
  DesignerHeight = 0
  DesignerDeviceName = ''
  DesignerOrientation = 0
  object Rectangle1: TRectangle
    Height = 50.000000000000000000
    Width = 80.000000000000000000
    object Text1: TText
      Color = claBlack
      Height = 50.000000000000000000
      Text = #9812#9813#9814#9815#9816#9817#9818#9819#9820#9821#9822#9823
      Width = 80.000000000000000000
    end
  end
end

编辑

我认为您的表单文件中存在字体大小问题。使用表单文件的文本创建一个新问题。有两种方法:

  1. 打开记事本,并在记事本中打开表单随附的 .FMX 文件;将文本复制到剪贴板
  2. 在 Delphi 中,右键单击表单然后选择“查看为文本”,选择所有文本并将其复制到剪贴板,右键单击您的表单文本然后选择“查看为表单”。

将代码粘贴到http://pastebin.com/https://gist.github.com/,然后在新问题中发布该链接。在您在这里发表评论之后,我会看看。

【讨论】:

  • 感谢 Jeroen 的帮助回复。我真的不知道如何使用您在此处提供的代码,因为我是 DelphiXE4 的初学者。但是,仅使用您的建议将实际的 unicode 图像复制/粘贴到 TText 文本属性框中即可显示 unicode(请参阅我编辑屏幕截图的原始问题)。顺便说一句,黑王 unicode 图像与白王的字体不同!无论如何,我现在应该研究如何在这个 Delphi 代码中启用拖放功能...谢谢和最良好的祝愿
  • 查看我即将对答案进行的编辑。我也是初学者(:
  • 示例代码现在在这里:bitbucket.org/jeroenp/besharp.net/commits/…
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 2023-03-12
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
相关资源
最近更新 更多