【问题标题】:Can I change font charset on TRadioButton in Delphi 6 / Delphi 7我可以在 Delphi 6 / Delphi 7 中更改 TRAdioButton 上的字体字符集吗
【发布时间】:2021-02-28 10:13:42
【问题描述】:

我在 Delphi 6 中构建了一个旧应用程序。正在定制用户可以更改屏幕字体和代码页的位置。我通过递归遍历所有表单、容器、控件等来做到这一点。

这在大多数情况下都有效。

但奇怪的是,我似乎无法更改 TRAdioButton 上的字体字符集。组标题工作正常,但里面的项目不继承容器字符集,尽管它们继承了字体。

示例文本以 ANSI 编码的中文输入,字符集 GB2312。

我查看了 ExtCtrls 的来源,并尝试了类似的东西

 TRadioButton(  thegroup.items[i] ).Font.Charset := programFilePrefFont.Charset;

.. 但它会导致 med 访问冲突。

我假设如果全局更改 Windows 区域设置,结果会有所不同,但这在 Win10 上很难。

我知道我可以与 TNT 合作,但这种变化涉及很多地方,所以暂时不做。这也变成了对好奇心的一点追求。

感谢您的任何意见。

【问题讨论】:

  • TpageControl 中的情况相同,它是 TTabSheet 子级,可能还有其他一些父/子关系。
  • 为什么不将您的软件更新到最新的 Delphi 版本?您有样式功能来使您的 GUI 看起来像您想要的那样。字符集和代码页也没有问题,因为字符现在是 16 位 (Unicode)。
  • 对于这个项目,现在无法更新。否则,我当然知道 D10.4 提供了我想要的一切。 (一般来说,我每次询问 D6 / D7 时都会收到此评论,这是正确的但不是真正有用的回答)

标签: delphi multilingual charset


【解决方案1】:

要更改TRadioGroupTRadioButton 的字符集,请使用组的Buttons 属性,而不是Items 属性。

例如

thegroup.Buttons[i].Font.Charset := programFilePrefFont.Charset;

【讨论】:

  • Delphi 6/7 中是否存在那个?
  • @HeartWare 是的,在 D7 中可以,无法与 D6 进行检查,但为什么不呢?
  • 因为当我需要访问 RadioGroup 的各个按钮时,我从未遇到过它(但这也可能是我找不到它)
  • 不幸的是,该属性不在 D6 中。我试图创建一个 TcustomRadioGroup 的子类并使 FButtons 可用,但没有运气。
  • 很遗憾,但你说的是“Delphi 6 / Delphi 7”。所以也许你可以将项目升级到 Delphi 7?否则,您可能需要将 TRadioGroup 替换为单独的 TGroupBoxTRadioButton
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多