我想在Paintbox中绘制TEdit的主题边框。代码必须在Windows Vista和7下运行。我尝试了以下操作。它仅适用于Windows XP。
var
Details: TThemedElementDetails; //uses Themes
begin
if ThemeServices.ThemesEnabled then
begin
Details := ThemeServices.GetElementDetails(teEditRoot);
ThemeServices.DrawElement(PaintBox1.Canvas.Handle, Details, PaintBox1.ClientRect);
end;
end;
在Windows XP下,一切正常。但在Windows Vista和7下,边框涂成深灰色。所有4面都是相同的颜色。但Vista下的TEdit看起来不同:顶部边框呈深灰色。右边框为中灰色。左边和右边的边框为浅灰色。我希望你能理解其中的差异。如何以正确的方式绘画?谢谢!
答案 0 :(得分:5)
尝试:
R := Rect(15, 15, 80, 30);
DrawThemeBackground(ThemeServices.Theme[teEdit], PaintBox1.Canvas.Handle, EP_EDITBORDER_NOSCROLL, ETS_NORMAL, R, @R);
/// DrawThemeBackground(ThemeServices.Theme[teEdit], PaintBox1.Canvas.Handle, EP_EDITTEXT, ETS_NORMAL, R, @R); <<< XP Behaviour
如果您希望您的代码在XP中运行,您应该使用该条件,就像在WinXP上一样,您应该使用第二个。