如何给各控件设置颜色(100分)

  • 主题发起人 主题发起人 glink
  • 开始时间 开始时间
G

glink

Unregistered / Unconfirmed
GUEST, unregistred user!
我用了无数个TEdit、TListbox、TDBEdit、TDBMemo,我想使他们的颜色=clInfoBK,
使用如下方法:
for i:=0 to ComponentCount-1 do
begin
if pos(Components.className,'TEditTlistBoxTDBEditTDBmemo')>0 then
Components.color:=clInfoBk;
end;

但出现 没有定义的color 错误,
请教:如何实现我的要求?
 
clInfoBk是何种颜色?!
 
TWinControl(Components).Color:=clInfoBk
 
TButton是没有Color属性的,其他的你可以这么用。
with Form1 do
begin
for i:=0 to ComponentCount-1 do
begin
if Components is TListBox then (Components as TListBox).Color := clInfoBk;
if Components is TDBEdit then (Components as TDBEdit).Color := clInfoBk;
if Components is TDBMemo then (Components as TDBMemo).Color := clInfoBk;
end;
end;
 
把前面两者优化一下,结果就是

if components is TWincontrol then (com.. as TWincontrol).color := clInfobk;
因为components 类是没有color属性的,所以不行。
而twincontrol 是它的子类,而且它继承了tcontrol的这个属性。
 
TwinControl也没有Color属性啊
 
tcontrol有color属性,
 
if components is Tcontrol then (com.. as Tcontrol).color := clInfobk;
 
clInfoBk就是我提问题内容的背景色。
unreal的方法,我是知道的,但是我想有没有一个简单的办法。
杀大龙和LeeChange的方法都会出现 未定义的color错误,即没有color属性。
 
>>Components.color:=clInfoBk;
改为:
TEdit(Components).Color:=clInfoBk; //!!!
有点霸道,但不会出错,因为,Color属性实际上是在TControl中声明的(只是没有发布
而已),而你那几个控件发布的都是这个属性。
 
对不起,总是自己猜想,没有验证。。。我的程序没有通过。

因为在tcontrol 里,那个color 是 保护的,所以外面是不能对它操作。

龙丹的我试了,没有错。。可能是最有效的方法了。
如果怕不保险,可以用unreal 的方法,代码差不了多远的。
 
龙丹的方法很好。
另外注意:if pos(Components.className,'TEditTlistBoxTDBEditTDBmemo')>0 then
中'TEditTListBoxTDBEditTDBMemo'大小写敏感。TDBMemo不能写成TDBmemo。
我越来越喜欢这里了。感谢各位朋友!!!
 
多人接受答案了。
 
后退
顶部