TTextFormat(s) 值(在 TextRect 中使用)有哪些及其含义?

Mar*_*unu 3 delphi text-formatting

我想在TextRect程序中应用一些文本格式,但我没有找到任何文档。在 Delphi 帮助中,TextRect参考文献中说 TextFormat 变量只能有 3 个值:tfAutoText, tfText, tfPlainText。但在 StackOverflow 上,我发现了一些TextRect具有其他文本格式值的示例,例如tfEndEllipsis. 我在 Delphi 帮助中搜索了此内容,并发现了其他包含许多文本格式值的集合。当我尝试它们时,具有这 3 个值的第一组根本不起作用,但第二组有效。我很困惑。哪一套好呢?看来第二个是,因为它有效。那么,第一组的用途是什么?

以下值(来自第二组)的含义是什么?:

  • tfCalc矩形
  • tfEditControl
  • tf展开选项卡
  • tf外部领先
  • tf修改字符串
  • tfNoClip
  • tf无前缀
  • tfRtl阅读
  • tfWordBreak

其他的就很明显了...

Dav*_*nan 5

文档是错误的此处列出的三个枚举类型值 ( tfAutoTexttfTexttfPlainText) 不存在。

您需要阅读该Vcl.Graphics单元的源代码才能了解这一点。来源看起来像这样:

type
  TTextFormats = (tfBottom, tfCalcRect, tfCenter, tfEditControl, tfEndEllipsis,
    tfPathEllipsis, tfExpandTabs, tfExternalLeading, tfLeft, tfModifyString,
    tfNoClip, tfNoPrefix, tfRight, tfRtlReading, tfSingleLine, tfTop,
    tfVerticalCenter, tfWordBreak, tfHidePrefix, tfNoFullWidthCharBreak,
    tfPrefixOnly, tfTabStop, tfWordEllipsis, tfComposited);
  TTextFormat = set of TTextFormats;
Run Code Online (Sandbox Code Playgroud)

这些值直接映射到 Win32 API 函数使用的标志上DrawTextEx。您可以通过阅读该函数的文档来了解它们的含义。

  • `tfComposited` 标志是例外,不能与 `TCanvas.TextRect` 方法一起使用。它不映射到“DrawTextEx”函数的格式化选项,但在内部映射到“DrawThemeTextEx”函数的“DTT_COMPOSITED”选项。 (2认同)