编写控件的问题
我要编写了一个控件,最简单的功能是:根据主程序中定义的一个变量的值(而不是通过改变控件的属性来改变字体的颜色)来自动改变控件中字体的颜色。
比如我在主程序中定义:MyValue=1;则控件字体颜色为红色
当MyValue=2;此时控件字体颜色为蓝色。
此过程不调用控件的属性,只是简单的改变MyValue的值来实现。
请问我在编写控件的时候该怎么处理呢?
问题点数:20、回复次数:7Top
1 楼shadowstar(CodeFast for Delphi & C++Builder)回复于 2005-11-18 16:47:26 得分 0
swith (MyValue)
{
case 1:
Font->Color = clRed;
break;
case 2:
Font->Color = clBlue;
break;
}Top
2 楼shadowstar(CodeFast for Delphi & C++Builder)回复于 2005-11-18 16:51:11 得分 12
void __fastcall SetMyValue(int Value);
__property int MyValue = { read = FMyValue, write = SetMyValue };
void __fastcall TMyControl::SetMyValue(int Value)
{
if (Value != FMyValue)
{
FMyValue = Value;
swith (Value)
{
case 1:
Font->Color = clRed;
break;
case 2:
Font->Color = clBlue;
break;
}
}
}
Top
3 楼zzq4823(高原猫)回复于 2005-11-18 17:21:17 得分 2
楼上正解,在控件中加入MyValue属性,在程序中设置该属性即可。Top
4 楼renhaobin2000()回复于 2005-11-18 17:30:27 得分 0
我说的是不通过更改控件的属性来完成,假如界面上有上千个颜色需要设置,那不是很慢吗?难道不能让控件去监视主程序中特定的变量,让控件根据变量的值来设定自己字体的颜色吗???Top
5 楼pp616(坏蛋)回复于 2005-11-18 18:03:22 得分 2
最好手里拿个调色板和笔然后自己在屏幕上画。不需要控件。Top
6 楼PPower(月亮光光,照地堂)回复于 2005-11-18 19:54:59 得分 2
用個定時器監視這個變量是否改動可以滿足你的想法。
但那樣做系統資源可是嚴重浪費哦。用屬性來做多容易。Top
7 楼zqhkd(zqh)回复于 2005-11-18 21:15:37 得分 2
. 首先按照shadowstar的方法编写一个控件
. 而后编写一个线程,该线程负责刷新数据,即更新系统中各个控件的MyValu属性即可。
. 当然,也可用定时器,但正如PPower所说,资源开销太大。Top




