2014-10-09 112 views
3

我想在TextRect程序中应用一些文本格式,但我没有找到任何文档。在德尔福的帮助中,参考TextRect,表示TextFormat变量只能有3个值:tfAutoText, tfText, tfPlainText。但是在StackOverflow中,我发现了一些带有其他文本格式值的TextRect示例,如tfEndEllipsis。我在德尔福帮助搜索这个,我发现other set与许多文本格式值。当我尝试它们时,具有这3个值的第一组完全不起作用,但第二组工作。我很困惑。哪一组是好的?看起来第二个是,因为它工作。但是,那么第一套是什么?哪些是TTextFormat(s)值(在TextRect中使用)及其含义?

下面的值(来自第二组)是什么意思? :

  • tfCalcRect
  • tfEditControl
  • tfExpandTabs
  • tfExternalLeading
  • tfModifyString
  • tfNoClip
  • tfNoPrefix
  • tfRtlReading
  • tfWordBreak

其他是显而易见的......

+0

只是为了澄清答案,tfAutoText,tfText,tfPlainText的集合不存在,如果它确实会与实际的TTextFormat分配不兼容 - 它是完全不同的类型。它不在VCL源代码中的任何地方 - 我搜索了整个事物。我编辑了docwiki谈话页面来请求修复。基本上,忽略它,并使用第二个。 – 2014-10-09 18:49:42

回答

4

documentation是错误的。列出的三个枚举类型值(tfAutoText,tfText,tfPlainText)不存在。

您需要阅读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; 

这些值直接映射到由Win32 API函数DrawTextEx使用的标志。你可以通过阅读该函数的documentation找出它们的含义。

+2

'tfComposited'标志是例外,不能与'TCanvas.TextRect'方法一起使用。它没有映射到'DrawTextEx'函数的格式化选项,但是内部映射到'DrawThemeTextEx'函数的'DTT_COMPOSITED'选项。 – TLama 2014-10-09 18:11:51

相关问题