在你的自定义的控件的create中,应该把panel、image什么的cretae一下(delphi是不会为你做这些事情的),在进行适当的初始化,否则你用的是一个空的对象指针,当然是一堆错误!!!

解决方案 »

  1.   

    TImagepanel = class(TPanel)
    //建议改成这样,否者panel_1.parent:=self;会出错
      private
        { Private declarations }  protected
        { Protected declarations }
        top_p   :          integer;
        left_p  :          integer;
        bac_color   :      Tcolor;
        image_1:          Timage;
        panel_1:          Tpanel;
        statictext_1:     Tstatictext;
        sta_txt     :      string;//************************************定义缩约图的过程;
        Procedure  MakeStretchDraw(image_every:Timage) ;
      public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
        destructor  Destroy; override;
      published
        { Published declarations }
        Property   picture :Timage read image_1 write image_1 default nil;    {要显示的bitmap}
        Property   text    :string  read sta_txt write  sta_txt ;                           {图形文件的文件名}
        Property   color  : Tcolor  read bac_color write bac_color default $00ba8795;
        Property   top    :integer  read top_p write top_p default 0;
        Property   left   :integer  read left_p write left_p default 0;
       end;procedure Register;implementation//------------------------------------------------------------------------------
    procedure Register;
    begin
      RegisterComponents('w3_20', [Timagepanel]);
    end;
    //------------------------------------------------------------------------------
    destructor Timagepanel.Destroy;
    begin
         statictext.free;                  //添加
         image_1.free;                  //添加
          panel_1.free;                  //添加
         inherited destroy;
    end;
    //------------------------------------------------------------------------------
    constructor Timagepanel.Create(AOwner: TComponent);
    begin
         inherited create(AOwner);
         top_P := 0;
         left_p:= 0;
         bac_color:=$00ba8795 ;
    //----------------初始化 panel_1
         panel_1:=TPanel.create(self);                     //添加
         panel_1.parent:=self;    //添加,没有的话,你看不见panel——1
         panel_1.Top:=top_p;
         panel_1.Left:=left_p;
         panel_1.Width     :=100;
         panel_1.Height    :=120;
    //---------------初始化  statictext_1
         statictext_1:=TStatictext.create(self);            //添加
         statictext_1.Parent:=panel_1; {把statictext置于panel_1上}
         statictext_1.Align:=albottom;
         statictext_1.Caption:=sta_txt;
         statictext_1.color:=bac_color; {置背景颜色}
    //---------------初始化 image_1
         image_1:=TImage.create(self);                       //添加 
         image_1.Parent :=panel_1;     {把image_1置于panel_1上}
         image_1.Align:=alclient;
    //--------------画缩约图
         MakeStretchDraw(image_1);
    end;
    //------------------------------------------------------------------------------
    //**************************************
       Procedure Imagepanel.MakeStretchDraw(image_every:Timage) ;
         var
           var_image :Timage;
         begin
            var_image:= TImage.create(self);        //添加
           var_image.Picture:=image_ever.Picture;
           image_ever.Picture:=nil;
           var_image.AutoSize:=true;
           Image_ever.Canvas.StretchDraw(Image_ever.ClientRect,var_Image.Picture.Graphic);
           var_image.Picture.Free;
         end;
    end.
      

  2.   

    说错了请原谅:
       你得好好打基础了,不要急着做vcl控件,这需要较全面的知识,只会让你失去对delphi的信心
      

  3.   

    编译指示呢?编译指示呢?我虽然不太清楚你的错在那里,但是,但是,没有编译指示.
    我给你讲讲我的经历:有次学写类库,报错说资源找不到,后来加了编译指示{$r *.dfm}就可以了.是不是这问题?
      

  4.   

    谢谢: ibear(大熊) &
           greenwaterbluesky(我的家在碧水蓝天) &
           MooseWOler(Mr.Oler) &
           david_wwb(时代超人) &&……………………
    我会努力学的
        to:  greenwaterbluesky(我的家在碧水蓝天)
      你给我改的我试了比我的强的多!
      但还是有些问题的
      初始化 可能做得不够!
      明天继续!!
    谢谢大家!
      

  5.   

    欢迎还想提议的朋友!
    请E-mail:
       shadow-x.sohu.com
     将不甚感激!定当有分酬劳!!!!!!!!