Tcontrol 的color属性为什么在TEdit里可以用,而在tbutton里不能用?请帮忙解答一下,谢谢!!

解决方案 »

  1.   

    这是类继承关系:
    TControl->TWinControl->TButtonControl->TButton
    TControl->TWinControl->TCustomControl->TCustomEdit->TEdit从这个关系图 你应该可以看出来:
    他们虽然都继承自TControl、TWinControl 
    但是TButtonControl、TCustomControl才是她们各自形成自己后来具体样式的关键,具体的就要你自己去看了!
    找本书,或者干脆研究源代码!
    希望所说的对你有些用处!!
      

  2.   

    直接Ctrl+鼠标左键
    进去看看TEdit和TButton是怎么定义的
      

  3.   

    我现在就是一直在研究他们的代码才觉得疑惑啊.Tbutton直接继承自Twincontrol,也就是Tedit类的Color属性应该是在TcustomEdit实现的有效性,可在TCustomEdit里根本没有找到相关的信息,如果我假设TCustomEdit没有处理,那么
    我从Tbutton继承过来一个Tmybutton类,然后定义一个color属性,按他们的继承方法应该是,Tmybutton也是继承自Twincontrol或Tcontrol的处理方法,可是没有实现!
      

  4.   

    看了看delphi的源代码实现,Tcontrol的属性是protected的,TEdit在published的属性中定义了color的属性,而tbutton没有
    从这个现象来推断,delphi的继承类可以修改基类属性的作用域
      

  5.   

    修正一下,Tcontrol的color属性是protected的