在应用了皮肤的程序中制作透明的文本编辑控件(如:TcxMemo)

我要在程序中显示一段信息,因为需要让文字的背景透明,我首先使用静态文本控件来实现

遇到需要进行编辑的时候,静态文本控件就不能满足要求了,这就使我想到了可不可以制作一个透明的文本编辑控件

首先上网查了一下,发现有一个方法比较可行,就是将控件的border设置为none,然后将背景色设置为窗口的背景色

首先设置背景颜色:cxmemo1.Style.Color := Form1.Color;

在没有使用TdxSkinController控件使程序换肤的情况下,上述方法可行

但是我使用了TdxSkinController进行皮肤设置

这样一来,上述代码运行的结果并不是显示皮肤的背景色,而是窗口本来的背景颜色clBtnFace

其实这种方法是可行的,只是上述代码无法取得正在显示的皮肤的颜色,可以使用下面这条语句:

cxmemo1.Style.Color := RootLookAndFeel.Painter.DefaultContentColor;

经过试验这样就可以使TcxMemo的背景颜色和窗口颜色一致了

接下来就是设置Border了,刚开始我将TcxMemo控件的BorderStyle属性设置为ebsNone

这样虽然在设计的时候并没有显示边框,可是在运行时仍然有边框存在, 

经过不断的试验我发现将AssignedValues属性的第三个设置为True,就可以在运行时取消控件的边框

经过以上两步就成功实现了透明的TcxMemo控件,当然其它文本编辑控件也适用

我也是在自己摸索着学习,有错误之处希望指出。

另外不知道有没有高人知道AssignedValues里的属性都代表什么意思?

虽然设计出了透明的文本编辑控件,但仍有许多地方不明白。

(2010年4月21日补充)

通过上述方法适用于大部分的SKin风格,但不是全部,今天经过试验,对于“Office2010Black”风格的皮肤来说,控件的背景色仍为白色

可通过下面代码更改背景颜色:

首先在Uses中加入dxSkinsLookAndFeelPainter

Uses

      dxSkinsLookAndFeelPainter

然后写如下代码:

   var
      APainterInfo: TdxSkinLookAndFeelPainterInfo;
      APainter: TcxCustomLookAndFeelPainterClass;
   begin
      if GetExtendedStylePainters().GetPainterByName(dxSkinController1.SkinName, APainter) then
      begin
         GetExtendedStylePainters().GetPainterData(APainter, APainterInfo);
         cxmemo1.Style.Color:= APainterInfo.Skin.GetColorByName('LayoutControlColor').Value;

      end;

   end;

转载于:https://www.cnblogs.com/baoluo/archive/2011/04/19/2021414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值