NewTabSheet: array of TTabSheet;

procedure TForm1.Create(Sender:Tobject)
var
  i:integer;
begin
  setlength(NewTabSheet,9);
  for i:=0 to 9do
  begin
    NewTabSheet[i] := TTabSheet.Create(pg1);
    NewTabSheet[i].Parent := pg1;
    NewTabSheet[i].PageControl := pg1;
    NewTabSheet[i].Caption := inttostr(i);
    NewTabSheet[i].Show;
  end;
end;其他没有任何代码
退出时报 Invalid pointer operation到底怎么回事啊求各位大侠指点一下

解决方案 »

  1.   

    NewTabSheet[i] := TTabSheet.Create(Self);  //这里改成self
    NewTabSheet[i].PageControl := pg1;  //把原来上面那句parent去掉
    NewTabSheet[i].Caption := inttostr(i);
    NewTabSheet[i].Show;
      

  2.   

    SetLength(NewTabSheet,9)//这里只有9个元素for i:=0 to 9 do //这里按照10个元素循环了。改成 for i:=0 to 8 do
      

  3.   

    宿主关系问题,你这样写程序关闭了但是TTabSheet 没有释放
      

  4.   

    1)将 NewTabSheet 定义为窗体的 private 数组变量
    2)在 FormClose事件中
    var
      k: integer;
    begin
      for k := Low(NewTabSheet) to High(NewTabSheet) do 
        if Assigned(NewTabSheet[k]) then
            NewTabSheet[k].Free;
    end;