問題は、画面のデバイス コンテキストとフラグ DT_CALCRECT を使用したTCustomLabel.AdjustBoundsへの呼び出しから始まります。DoDrawTextしたがって、そのデバイス コンテキストに何かが描画されると、画面に描画されます。DT_CALCRECTフラグはそれを防ぐ必要がありますが、呼び出しDrawThemeTextExはVcl.Themes.TUxThemeStyle.DoDrawTextDT_CALCRECT + LOptions.dwFlags DTT_CALCRECT を無視するように見え、必要な四角形のみを計算する必要があるデバイス コンテキストにペイントします。なぜそうなるのかは(まだ)わかりませんDrawThemeTextExが、それは出発点です。
更新 1:
Delphi 2009 はこの影響を受けないようですが、DrawThemeTextEx も呼び出します。唯一の違いは、Options レコードの未使用フィールドがすべてゼロであるのに対し、Delphi XE2 ではゴミが含まれていることです。おそらく、DrawThemeTextEx ではそれらをゼロにする必要があります。
更新 2:
Delphi 2009 と XE2 の違いは、Delphi 2009 では DTT_CALCRECT だけでなく DTT_COMPOSITE も指定されていることです。
Delphi 2009 では、DTT_COMPOSITE は常に設定されています。
Options.dwFlags := DTT_TEXTCOLOR or DTT_COMPOSITED or DTT_GLOWSIZE;
一方、XE2 では、ラベルがガラスに描かれている場合にのみフラグが設定されます。
if csGlassPaint in ControlState then
Include(LFormat, tfComposited);