【问题标题】:Special unicode characters in TButton.Caption (instead of icons)TButton.Caption 中的特殊 unicode 字符(而不是图标)
【发布时间】:2016-10-05 14:29:52
【问题描述】:

是否可以从键盘输入特殊的 Unicode 字符,链接下面的?

U+2603  ☃   SNOWMAN
U+2604  ☄   COMET
U+2605  ★   BLACK STAR
U+2606  ☆   WHITE STAR
U+2607  ☇   LIGHTNING
U+2608  ☈   THUNDERSTORM
U+2609  ☉   SUN
U+260A  ☊   ASCENDING NODE
U+260B  ☋   DESCENDING NODE

例如,我希望有带有向上/向下 arrows 的按钮,而不加载图像。

我已尝试在键盘上输入 Alt+08593,但会插入其他字符(不是预期的箭头)。


更新:
原因是懒惰。我懒得搜索图标或创建自己的图标。例如,您可以简单地替换臭名昭著的“保存”软盘图标。随便看看:??????。砰!好的。对吧?

更新:
似乎有些字符,例如???? (green book = 128215) 不被 Delphi 接受,复制/粘贴。

更新:
有一个不错的组件可让您将 unicode 字符放入图像列表中:
https://github.com/EtheaDev/IconFontsImageList

【问题讨论】:

  • @MatheusOliveira-加油!我只是说我不想要那个(出于我的原因)。请务必阅读问题:)
  • 好的。我有一个解决方案:Delphi 不允许您直接输入 unicode 代码,但您可以在 Word(或其他 unicode 编辑器)中输入,然后在 Delphi 中复制过去。作品!没有可怕的图像列表(和 Photoshop 工作)的酷按钮。
  • 上次使用Delphi已经有一段时间了,但是没有转义序列什么的,比如#$0000?请参阅stackoverflow.com/questions/302409/… 的第二个答案
  • 你也可以在代码中设置标题,比如FormCreate:CometButton.Caption := #$2604;
  • @MatheusOliveira 你在说什么,Delphi 对 Unicode 有很好的支持,而且这些字符很容易用在按钮标题中

标签: delphi unicode delphi-xe7


【解决方案1】:

Delphi IDE 不接受那么高的 ALT 键代码。几种选择:

  • 从其他地方粘贴文本。
  • 直接在 .dfm 文件中输入数字代码。

作为第二种方法的示例,请在 .dfm 文件中为按钮标题属性尝试以下操作:

Caption = #8592#8593#8594#8595

您还提到了绿皮书 U+1F4D7。那是来自 BMP 外部,因此使用代理对进行编码:

Caption = #55357#56535

我的猜测是,只要您希望字形以彩色或不同大小显示,您就会发现使用文本使这变得不可能。您还可能会遇到不包含所选字符字形的字体。所以你会发现使用图片是最稳健的方法。

【讨论】:

  • 似乎有些字符如?(绿皮书128215)不被Delphi接受,复制/粘贴。 xahlee.info/comp/unicode_office_icons.html
  • 典型的故障模式是字体不包含字符的字形,或者 IDE 可能无法从 BMP 外部粘贴。 .dfm 中的编码将始终在第二个方面起作用,但显然您的字体必须始终包含字形。是的,该代码点在 BMP 之外,需要两个字符元素对其进行编码。
  • 所以绿皮书是#55357#56535
  • 更新:不是Delphi的问题。其他程序也未能显示“绿皮书”字符。奇怪,因为多个网站都说这个字符是有效的。
  • 塔霍马很古老。但这是你的问题。现在看起来很容易,但你会在某个时候被咬。 ....
【解决方案2】:

或者,如果您有一个十进制值表:

9731  ☃   SNOWMAN
9732  ☄   COMET
9733  ★   BLACK STAR
9734  ☆   WHITE STAR
9735  ☇   LIGHTNING
9736  ☈   THUNDERSTORM
9737  ☉   SUN
9738  ☊   ASCENDING NODE
9739  ☋   DESCENDING NODE

那么你就可以在Delphi中按如下方式使用键盘了。

Button1的标题改为雪人:

  1. Alt+F12 将表单编辑为文本

  2. Ctrl+E进入增量搜索模式

  3. 输入Button1,或者尽可能多地输入来定位Button1的定义

  4. Caption = 属性定义的右侧(我在这里假设为 VCL)输入#,后跟相关的 Unicode 值,例如#9731

    Caption = #9731

  5. 如果你想要文字和雪人,字符代码放在引号之外,例如

    Caption = 'Snowman = '#9731

更多关于# 语法的信息(通常在 Delphi 源代码中输入,而不是在表单文件的文本视图中输入)可以通过阅读 控制字符串 找到,因为它们是实际调用,在the online documentation

【讨论】:

  • 令我震惊的是,与 David 的讨论建议您可以使用此方法对任何 Unicode 字符进行编码,前提是您知道如何将其分解为正确的块。按钮使用的字体是否包含所需的字符,那是完全不同的鱼。
猜你喜欢
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多