动态创建你的控件,不一定要注册到组件面板上去。当你写好控件的时候,最好先用动态创建来做测试,否则你的程序的Bug可能搞垮Delphi IDE。动态创建的方法是:var
  AObject: TYourClass;begin  AObject := TYourClass.Create(...).
  //使用的你的控件
  AObject.Free;end;
    

解决方案 »

  1.   

    如果不注册到Delphi的控件面板,就只能动态创建了.把它当作普通的类用吧.
      

  2.   

    我个人认为写组件最好注册了再测试和调试,因为这样方便一些,另外,不注册而动态创建可能不能发现某些问题。再说,注册了以后也可以很方便的卸掉阿。—————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
    I.Desire := '加不加分随你';
    —————————————————————————————————
        
      

  3.   

    component->install package->edit/remove随你
      

  4.   

    包含控件所在单元,然后引用那个类就可以了,注册不注册是给delphi的ide看的。
      

  5.   

    包含控件所在单元,然后引用那个类就可以了,注册不注册是给delphi的ide看的。
      

  6.   

    这是我试着写的一个控件,用处只是画一个框子,请问它有什么问题?unit main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TOcoolEdit=class(TCustomControl)
      protected
        procedure Paint; override;
      public
        constructor Create(AOwner:TComponent); override;
      end;
      TMainForm = class(TForm)
        Button: TButton;
        procedure ButtonClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      MainForm: TMainForm;
      OcoolEdit: TOcoolEdit;
    implementation{$R *.dfm}constructor TOcoolEdit.Create(AOwner:TComponent);
    begin
      inherited Create(AOwner);
    end;procedure TOcoolEdit.Paint;
    begin
      Canvas.Rectangle(0,0,100,200);
    end;procedure TMainForm.ButtonClick(Sender: TObject);
    begin
      OcoolEdit.Paint;
    end;end.
      

  7.   

    constructor TOcoolEdit.Create(AOwner:TComponent);
    begin
      inherited Create(AOwner);
    end;
    这个没有必要,可以去掉你在使用这个控件的时候没有创建它的实例
    应该这样:procedure TMainForm.ButtonClick(Sender: TObject);
    begin
      OcoolEdit := TOcoolEdit.Create(MainForm);
      OcoolEdit.Paint;
    end;注意在MainForm的Close里面要释放OcoolEdit对象
    procedure TMainForm.FormClose(Sender: TObject; var Action: 
    TCloseAction);begin
      OcoolEdit.Free;
    end;
      

  8.   

    其实你也不用调用TOcoolEdit.Paint,这个由Windows自己会在需要调用的时候调用的。
      

  9.   

    下面这句在编译时报错:procedure TOcoolEdit.Paint;
    begin
      Canvas.Rectangle(0,0,100,200);
    end;改成下面的写法不报错了,但如何在tabcontrol或pagecontrol上画个框子呢?
    procedure TOcoolEdit.Paint;
    begin
      MainForm.Canvas.Rectangle(0,0,100,200);
    end;
      

  10.   

    控件注册一次后,只要你不改变文件位置,以后随便改都不用在注册了,应为Delphi会在用到你的空间的地方,直接调用你的空间源文件进行联编
      

  11.   

    下面这句在编译时报错:procedure TOcoolEdit.Paint;
    begin
      Canvas.Rectangle(0,0,100,200);
    end;改成下面的写法不报错了,但如何在tabcontrol或pagecontrol上画个框子呢?
    procedure TOcoolEdit.Paint;
    begin
      MainForm.Canvas.Rectangle(0,0,100,200);
    end;