加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 绘制TEdit的主题边框

发布时间:2020-12-15 09:27:35 所属栏目:大数据 来源:网络整理
导读:我想在Paintbox中绘制TEdit的主题边框.代码必须在 Windows Vista和7下运行.我尝试了以下操作.它仅适用于Windows XP. var Details: TThemedElementDetails; //uses Themesbegin if ThemeServices.ThemesEnabled then begin Details := ThemeServices.GetEleme
我想在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看起来不同:顶部边框呈深灰色.右边框为中灰色.左边和右边的边框为浅灰色.我希望你能理解其中的差异.如何以正确的方式绘画?谢谢!

解决方法

尝试:

R := Rect(15,15,80,30);
DrawThemeBackground(ThemeServices.Theme[teEdit],PaintBox1.Canvas.Handle,EP_EDITBORDER_NOSCROLL,ETS_NORMAL,R,@R);
/// DrawThemeBackground(ThemeServices.Theme[teEdit],EP_EDITTEXT,@R); <<< XP Behaviour

如果你想让你的代码在XP中运行,那你就应该有条件,就像在WinXP上你应该使用第二个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读