sorun ekranın aygıt içeriğini ile DoDrawText
bir çağrı ve bayrak DT_CALCRECT ile TCustomLabel.AdjustBounds
başlar
. Dolayısıyla, bu cihaz bağlamında herhangi bir şey boyadığında, ekrana boyanacaktır.
DT_CALCRECT
bayrağının bunu engellemesi gerekir, ancak
Vcl.Themes.TUxThemeStyle.DoDrawText
numaralı
DrawThemeTextEx
numaralı çağrı DT_CALCRECT + LOptions.dwFlags DTT_CALCRECT öğesini göz ardı eder gibi görünür ve yalnızca gerekli dikdörtgeni hesaplaması gereken aygıt bağlamına boyar. Bilmiyorum neden
DrawThemeTextEx
bunu (henüz), ama bir başlangıç noktasıdır.
GÜNCELLEME 1:
Delphi 2009 bu etkilenecek gibi görünüyor ama aynı zamanda DrawThemeTextEx çağırır etmez. Gördüğüm tek fark, Seçenek kayıtlarının kullanılmayan tüm alanlarının sıfır olması, Delphi XE2'de ise çöp içermesidir. Belki DrawThemeTextEx bunların sıfır olması gerekiyor.
GÜNCELLEME 2:
Delphi 2009 ve XE2'de arasındaki fark Delphi 2009 değil sadece DTT_CALCRECT aynı zamanda DTT_COMPOSITE belirtilen olmasıdır.
DTT_COMPOSITE hep ayarlanır Delphi 2009'da
: etiket cama boyanmış ise XE2'de bayrağı sadece ayarlanır oysa
Options.dwFlags := DTT_TEXTCOLOR or DTT_COMPOSITED or DTT_GLOWSIZE;
:
if csGlassPaint in ControlState then
Include(LFormat, tfComposited);
http://qc.embarcadero.com/wc/qcmain.aspx?d=102146 – hikari