是继承的一个控件吗?在继承出的控件的创建函数中加入:
caption := '';
即可。

解决方案 »

  1.   

    我是直接继承的tpanel对于控件编程的经验很少,不知道该怎么处理。我看了panel的源码以及它父类、爷爷类、爷爷的爷爷类……看得我一头雾水,实在搞不明白它们是怎么工作的还请高手帮忙
      

  2.   

    其实在构造函数里设置其他的属性,像长度、宽度、颜色什么的都可以,甚至把caption属性值改为其他的都可以,就是置为空时有问题,百思不得其解
      

  3.   

    继承TPanel以后,它的Caption属性也一起继承了
    只要你在创建你继承类的实例时将这个对象的caption置空就行了
    何必管它类里面是什么呢?不过如果你真的要改就比较麻烦
    Caption里面的值它一般放在这个控件的类似资源文件中,可以找到处理这个属性的方法,重载一次就可以,然后置空
      

  4.   

    // 已测试过
      ...
      protected
        procedure CreateParams(var Params: TCreateParams); override;implementationprocedure TgalePanel.CreateParams(var Params: TCreateParams);
    begin
      Caption := '';
      inherited CreateParams(Params);
    end;
      

  5.   

    galeboy(狂风) (  )能说说你这是什么原理吗?
      

  6.   

    正象你所说的,他的爷爷类TWinControl在CreateParams设的Caption的值procedure TWinControl.CreateParams(var Params: TCreateParams);
    begin
      FillChar(Params, SizeOf(Params), 0);
      with Params do
      begin
        Caption := FText;
    所以要重载CreateParams,而不是Create;
    而FText是在TComponent中定义的私有变量,不能直接改,但Caption := ''
    会调用SetText...SetTextBuf...最后被改掉