很多控件都有一个CreateParams过程,用来修改创建控件时的一些参数?我想问一下如何Override这个过程?我知道TFORM的书写格式,可如果在FORM上加一个EDIT,那么如何Override这个EDIT的CreateParams呢?
谢谢

解决方案 »

  1.   

    override   重载  // 简单地说就是子类方法重新改写父类方法
    procedure yourproc(params: yourtype);override;//声明子类方法时加上override,表示子类将重载父类的方法
    假设你定义了一新基类如下:
    type
      
      TClass1=Class
        private
          
        protected
          varStr:string;
          procedure Method001;dynamic
        public
          constructure Create;
    end;
     方法的实现如下:
     TClass1.Create;
     begin
       varStr:='this is the first class create method.';
     end;       
     
    TClass1.Method001;
     begin
     ///
     end;        TClass1.Method002;
     begin
      ///
     end;       
    而现在由于需要你要创建一个新的类,而却要拥有TClass1的所有可以继承的方法。那么构建后如下:
    type
      
      TClass1=Class
        private
          varStr:string;
        protected
          procedure Method001;override;
        public
          constructure Create;
    end;
     方法的实现如下:
     TClass2.Create;
     begin
       inherited Create;{注意了,在这儿如果你想让在对象创建时仍然使  varStr保持父类的值'this is the first class create method.'那么此处久的使用inherited关键字调用Create构造器的时候调用父类的构造器方法实现的内容。反之则不。}
     
     end;       
     
    TClass2.Method001;
     begin
       Inherited Method001;{合上述一样}
     end;        TClass2.Method002;
     begin
      ///
     end;  
      

  2.   

    也就是说,你得动态创造这个新的edit类,
    或单独先写这个类,注册,再拖到窗体上。
      

  3.   

    噢,谢谢各位,不过其实并不是我不懂override的概念,而是不知道该怎么写格式。我的目的已经实现了。用的就是BIGBEN的方法 
    TEditx = class(TEdit)
      procedure CreateParams(var Params :TCreateParams); Override;
    end;
    然后在FORM声明中加一个TEditx实例就OK了,以前我曾在FORM中用
    procedure TEdit.CreateParams(var Params: TCreateParams); Override;重载这个方法,老是报错。
    呵呵,现在明白了。不过还是谢谢。