循环语句写错了,你只检查了第一页。
while Item<=TableControl1.Tabs.Count do
  begin 
    if TabControl1.Tabs.Strings[Item]=Name then
      begin
        {检查结果已存在,使其处在最上方(可见)}
        TabControl1.TabIndex:=TabI;
        break;
      end   
     else 
      Item:=Item+1;
  end;  // 循环结束;if Item>TableControl1.Tabs.Count then  // 没有找到。
   TabControl1.Tabs.Add(Name);

解决方案 »

  1.   

    while Item<TableControl1.Tabs.Count do
      

  2.   

    我试过了仍旧不能完成,调试时出现如下警告:"Project ProjectMain.exe raised exception class ElistError With message 'Failed to retrieve tab at index 0'.Process stopped.Use Step or Run to continue."并且在代码编辑窗口中出现一个绿色的小箭头指着:if if TabControl1.Tabs.Strings[Item]=Name then
    小的实在不知为什么,请指教!
      

  3.   

    while Item<TableControl1.Tabs.Count do
      ...
    因为TabControl1.Tabs.Strings[Item]是从0开始。
      

  4.   

    回复人:Apollo47()说对了一部分,可当TableControl1.Tabs.Count=0时就会有问题了。我想应该这样,你试一下。
    var
      Item:Integer;
      Name:String;  
    begin
      Item:=0;
      while  Item<TabControl1.Tabs.Count do
        begin
          if TabControl1.Tabs.Strings[Item]=Name then
            begin
              {检查结果已存在,使其处在最上方(可见)}
              TabControl1.TabIndex:=TabI;
              break;
            end
          else
            begin
              Item:=Item+1;
            end;
        end;  
    if Item>=TableControl1.Tabs.Count then  // 没有找到。
      TabControl1.Tabs.Add(Name);end.
      

  5.   

    xhjdm(宣洪) 说得很对,还有应把 TabControl1.TabIndex:=TabI;
     改成 TabControl1.TabIndex:=Item;