1.比如StatusBar,他有COLOR属性,我想定义自己的COLOR属性,从我定义的方法中读取数值,要怎么做?
2.继承EXIT事件的时候,我 这么写为什么不对?
inherited CMExit(message);

解决方案 »

  1.   

    呵呵,我也想知道,也特别关注这一问题:我只知道中C++ 中是这样写的:
    Public TStatusBar1::public TStatusBar
    {
    TStatusBar1::Color=RGB(1,1,1);TStatusBar::Exit()://调用它的PARENT 类的Exit();
    }
      

  2.   

    1:你只要在重构StatusBar时,把COLOR属性的读写改成你的就完了;
    2:CMExit方法是TWinControl的private过程,对于以后的继承它的控件是不可见的;
      

  3.   

    1.如果我把读写方法改了,那么我以后用到这个控件的时候,启不是都改了,是这样写吗、
    property color:Tcolor read Fcolr write 我的方法2.我重构了edit的exit,如果不继承父类的方法(inherited exit),那我以后使用这个edit的时候,不是我写的onexit事件都没有用了吗?请指教?
      

  4.   

    TMyStatusBar = class(TStatusBar)
    private
       procedure SetMycolor(AColor : TColor);
       function  GetMyColor : TColor;
       //申明对CM_Exit的处理
       procedure CMExit(var Message: TCMExit); message CM_EXIT;
    protected
    public
       property Color : TColor read GetMyColor write SetMyColor;
    end;procedure TMyStatusBar.SetMyColor(AColor : TColor);
    begin
       ...
    end;function TMyStatusBar.GetMyColor : TColor;
    begin
       ...
    end;procedure TMyStatusBar.CMExit(var Message: TCMExit);
    begin
       inherited ; //调用父类处理
    end;
      

  5.   

    谢谢楼上的兄弟,
    一般我调用父类处理的时候,用
    inherited Keypress(key);//用KeyPress举个例子
    如果我不写  KeyPress ,是否也可以,我的object pascal还有很多漏洞,望指教。
      

  6.   

    可以,实际上inherited Keypress(key);是先调用其父类的Keypress,再运行你自己的代码。
    另外再说一下CMExit方法。你自己看一下TWincontrol的这个方法,实际上它就是简单的调用
    Onexit的句柄,其他什么都没做;