@@@我想从TDBGrid继承一个子类,可以实现奇偶行的颜色交替,但遇到了问题,请大家帮忙看看@@@(50分)

  • 主题发起人 maple_guo
  • 开始时间
// 注意,我说的问题是,如果颜色设置跟default的一样的话,
// 在设计期是可以看到效果的,不过一运行就全变成黑的了。
容易解释,设计期Color设成跟Default一样的话DFM不保存,
然后FSelectedCellBackColor值在运行期初始化的时候不会被赋值,(因为没保存)。
所以FSelectedCellBackColor值就是private区的初始化值0,也就是黑色。
程序中使用FSelectedCellBackColor来画也就是黑色了。
 
To Passion:
那就是default的用法不对啰,那么default的作用是什么呢,为了减少DFM的SIZE[?]
如果用了default就应该在create中初始化吗[?]
谢谢![:D]
 
to maple_guo:
Default的意思是当你的颜色与 default 的颜色相同时 dfm 不用存储它。但是,这并不等于
当你把颜色设为Default颜色时,属性的颜色就为Default的颜色,你必须得在构造函数中显示
地加上一条赋值语句,这样当你把颜色设为Default颜色时,属性的颜色才为Default的颜色。
这是编写控件的基本常识。
如果不在构造函数中显示加上一条赋值语句的话,Integer类型的属性默认值为0,Color类型的
属性默认值为clBlack,String类型的属性值为'',因此,当你把颜色设为Default颜色时,出现
黑色也不足为奇了。
 
再说一句,Default是当你的颜色与 default 的颜色相同时 dfm 不用存储它,除此之外,它
没有任何含义。试想,如果dfm没有存储该属性值,那么,在dfm装载时,就不会调用相应的
get或set方法,而你又没有在构造函数中显示的赋值,那么该属性值到底为什么呢?那就是
我是上面所说的,Integer类型的为0,Color类型的为clBlack,String类型的为'',……
 
default是是否把这个值当称是默认值。
在窗体上点击右键,选择查看DFM文本,你看看窗体的文件,不是每个控件每个属性都保存,而是只有改变过的才保存。
为改变的就是Default值。
那么当你设置成Default时,窗体设计器永远把这个属性当成Default,而不保存它。
所以Default是告诉窗体设计器这个值按照默认值来,不要保存。
而属性的默认值要在Create中设置。
 
好,明白了,谢谢各位![:D]
 
多人接受答案了。
 
顶部