我要在程序中显示一段信息,因为需要让文字的背景透明,我首先使用静态文本控件来实现
遇到需要进行编辑的时候,静态文本控件就不能满足要求了,这就使我想到了可不可以制作一个透明的文本编辑控件
首先上网查了一下,发现有一个方法比较可行,就是将控件的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;