本人已经写好一个控件,在加载到FORM里时,出现错误:Control" has no parent window.请问怎样解决这个问题(自定义控件的父类是TListView)?解决后马上给分!!!

解决方案 »

  1.   

    public
      constructor Create(AOwner: TComponent);override;constructor TMyListView.Create(AOwner: TComponent);
    begin
      //自己添加的内容
      ...............
      //
      inherirted;
    end;
      

  2.   

    没有指定 Parent 代码能看看吗 ?
      

  3.   

    constructor TImageListView.Create(AOwner: TComponent);
    var
        templi: Tlistitem;
        tempbmp: Tbitmap;
        strDir,Dir:string;
        f:TSearchRec;
        FileName:String;
        i:integer;
    //    imagelist:TImageList;
    //   listname:TComponentName;
    begin
         inherited Create(AOwner);
         clear;
         FImageChangeLink := TChangeLink.Create;
         FImages:= TCustomImageList.Create(Self);
         FImages.height:=70;
         FImages.width:=70;
         strDir:='e:/bmp/';
         if strDir[Length(strDir)]<>'/' then
            strDir:=strDir+'/'
         else
            Dir:=strDir+'*.bmp';     if FindFirst(Dir,faAnyFile,f)=0 then
           begin
             i:=0;
             repeat
                strDir:='e:/bmp/';
                FileName:=f.Name;
                strDir:=strDir+FileName;
                templi:= self.Items.Add;
                templi.Caption:=FileName;
                tempbmp:=Tbitmap.Create;
                tempbmp.LoadFromFile(strDir);                           //加载位图
                tempbmp.Canvas.StretchDraw(Rect(0,0,70,70),tempbmp);    //缩放位图
                FImages.add(tempbmp,nil);
                FImages.Replace(i,tempbmp,nil);                      //释放图片
                templi.ImageIndex:= i;
                i:=i+1;
                tempbmp.Free;                                           //释放位图
             until FindNext(f)<>0;
         findclose(f);
      end;
    end;
    请问PARENT怎么指定
      

  4.   

    要不将FImages:= TCustomImageList.Create(Self);放在外边覆盖原来的Create  , 
      

  5.   

    我在上面的代码中加了一句:
    FImageChangeLink := TChangeLink.Create;
    FImages:= TCustomImageList.Create(Self);
     FImages.GetParentComponent;   //添加的语句但是结果还是同样的错误,请问应该怎样指定FImages的Parent呢?谢谢!
      

  6.   

    protected
         procedure SetParent(AParent: TWinControl); override;procedure TImageListView.SetParent(AParent: TWinControl);
    begin
      inherited SetParent(AParent);
      //将Create中一些代码移到这里来,这时候已经有了Paren。
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  7.   

    我加入了下列代码:
    procedure TImageListView.SetParent(AParent: TWinControl);
    begin
      inherited SetParent(AParent);
      FImageChangeLink := TChangeLink.Create;
      FImages:= TCustomImageList.Create(Self);
      FImages.SetSubComponent(true);
      FImages.height:=70;
      FImages.width:=70;
    end;
    但是还是出现相同的错误,请指教,谢谢!
      

  8.   

    把后面的代码都靠过了阿。总是将Parent还不存在时就直接或者间接用到Parent的代码都放到SetParent之后。—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  9.   

    设定 FImages.ParentWindow 指向 Form1.Handle ;
      

  10.   

    FImages.ParentWindow := Form1.Handle ;