我第一次编写一个最简单的非可视化控件,能注册到控件板上。我新建一个工程,在主窗体上放这个控件时,就跳出错误“Stack overflow--save you work and restart Delphi”。
全部代码如下:
unit Componentcxz;interfaceuses
  Windows, Messages, SysUtils, Classes;type
  TComponentcxz = class(TComponent)
  private
    { Private declarations }
    Fn:Integer;
    function Getn: Integer;
    procedure setn(const Value: Integer);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent);override;
    destructor Destroy; override;  published
    { Published declarations }
    property n: Integer read Getn write setn;
  end;procedure Register;implementationprocedure Register;
begin
  RegisterComponents('Samples', [TComponentcxz]);
end;{ TComponentcxz }constructor TComponentcxz.Create(AOwner: TComponent);
begin
  inherited;
  Fn:=234;
end;destructor TComponentcxz.Destroy;
begin  inherited;
end;function TComponentcxz.Getn: Integer;
begin
 result:=n
end;
procedure TComponentcxz.setn(const Value: Integer);
begin
   n:= Value
end;end.
请高手指教

解决方案 »

  1.   

    function Getn: Integer;
        procedure setn(const Value: Integer
    这两个应该在public下面吧
      

  2.   

    改一下就好了:
    unit Componentcxz;interfaceuses
      Windows, Messages, SysUtils, Classes;type
      TComponentcxz = class(TComponent)
      private
        { Private declarations }
        Fn:Integer;  protected
        { Protected declarations }
        function  Getn: Integer;
        procedure setn(Valu: Integer);
      public
        { Public declarations }
        constructor Create(AOwner: TComponent);override;  published
        { Published declarations }
        property n: Integer read Getn write setn;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Samples', [TComponentcxz]);
    end;{ TComponentcxz }constructor TComponentcxz.Create(AOwner: TComponent);
    begin
      inherited;
      Fn:=234;
    end;function TComponentcxz.Getn: Integer;
    begin
     result:=Fn;
    end;
    procedure TComponentcxz.setn(Valu: Integer);
    begin
      Fn:= Valu;
    end;end.