感谢axcyy网友的大力支持!动态建立索引的问题解决了,归纳如下。我的目的:
使用Table组件的AddIndex方法给一个已存在的数据表建立索引。问题的产生:
 建立一个空的窗体,放一个Table组件,一个DataSource组件,一个DBGird组件,和一个按钮。其中Table组件连接表,DataSource的DataBaseName属性为Table1,DBGird
的DataBaseName属性为DataSoure1,Table的DataBaseName为BDE_DB,Table属性为    Unsday.db,Active为true,然后建立按钮的Click事件。
 另:BDE别名:BDE_DB
        type: standard
       default driver: Paradox
         Endable Bcd: False
               Path: D:\Delphi\DBF
 然后编辑按钮Click事件代码:
procedure TForm3.Button1Click(Sender: TObject);
begin
Table1.Active:=False;
Table1.AddIndex('IdxStime','STIME',[ixPrimary]);//  其中STIME是一个字段名.
Table1.Active:=True;
end;保存并按F9运行,出现EBDEngineError异常,'Table is busy'错误。解决办法:
1. 在设计期间,将Table的Active属性改回缺省值False(原来我是设为True的,就是这个原因!)。
2. 代码没有问题,很多网友说的方法都是指代码,都可以的(谢谢大家!),我试过了,但关键是设计时的Active属性值须是False;
Table1.Active:=False;     //这个也不能少,就算不需要下面的第三步,也不能少.
Table1.Exclusive:=True;
Table1.AddIndex('索引名’,'要索引的字段',[索引选项]);
Table1.Exclusive:=false;
Table1.Active:=True;
3. 如果要在窗体建成后就看到数据,则同时把Table1.Active:=True;放到窗体的OnActive事件中。
这样以后,你可以在表窗体中看到数据,并且动态建立表索引。问题原因:
   Delphi的连接数据表的机制我还不太明白,它的帮助中也没有说这些。虽然Table的Active属性在设计时的缺省值是false,但我把它改为了true,连接数据表,因为我要在窗体出来后就看到表里的数据。这样就造成了问题。
   虽然问题的解决办法有了,但我还是不明白,想问问Borland公司的Delphi的开发人员,Active属性在设计时的值和代码指定值有什么不一样?设计时的Active为false,而我
在代码中不是早就有Active:=False;了吗,后者为什么不行?而现在的解决办法是:  1 在属性栏中的Active为False;         // 必须有
  2. .在窗体的OnActive事件中有语句Table1.Active:=True; //连接数据表,可不要
  3. 在建索引的代码中还要有Table1.Active:=False:  // 必须有注,第二步也可不要,区别是窗体建立时看不到表中数据。解决过程:
   这个问题困扰了我整整三天,这期间很多网友都给我出了主意,想办法,最终还是由网友axcyy通过实时QQ交流,并将源代码发给他调试,花费一个下午的时间才搞定。非常感谢axcyy网友的帮助,谢谢!另外:
   Delphi支持的paradox数据表db的相关特性也增加了困难,如在没有主索引的情况下不能建其它索引(DB表不如DBF表好).附:我在CSDN上的提问如下:
=====================================================================
最近我在用Table组件编写单机数据库程序,基中用到Table的AddIndex方法,可是看了
Delphi的连机帮助和资料上的例子,都不能达到结果,真的有点麻烦,现在我把开发过程
和各位说一下,希望高手和行家指点指点,我快被逼疯了。:(开发环境如下,家里和单位都是同样的运行结果。
 单位:Windows2000 professional,Delphi EnterPrise 6.0 (Build6.163)
       同系统装有Visiual Stuio 6.0 (VC,VB,VFP)(同装有问题吗?)  家里: Windows98第二版,Delphi EnterPrise 6.0 (Build6.163)
       同系统装有Visiual Stuio 6.0 (VC,VB,VFP)(同装有问题吗?)开发要求:
  使用Table组件的AddIndex方法给一个已存在的数据表建立索引。步骤:
1. 数据表为D:\Delphi\DBF\UnsDay.DB,Paradox的
2. 建立BDE别名:BDE_DB
        type: standard
     default driver: Paradox
        Endable Bcd: False
               Path: D:\Delphi\DBF
3. 建立一个空的的窗体,放一个Table组件,一个DataSource组件,一个DBGird组件,
  和一个按钮。
  Table组件连接表,DataSource的DataBaseName属性为Table1,DBGird的 
    DataBaseName属性为DataSoure1,Table的DataBaseName为BDE_DB,Table属性为
    Unsday.db,Active为true,然后建立按钮的Click事件。4.编辑Click事件代码:
procedure TForm3.Button1Click(Sender: TObject);
begin
Table1.Active:=False;
Table1.AddIndex('IdxStime','STIME',[ixPrimary]);//  其中STIME是一个字段名.
Table1.Active:=True;
end;5. 保存并按F9运行,出现EBDEngineError异常,'Table is busy'错误。问题:表是忙的?我的数据表这时除了Delphi在使用,没有其它程序在用。此时我在CSDN
      上问了一下,并查了一些资料,加入如下语句,但还是不行,问题依旧‘Table is 
      busy’。   Table1.Active:=False;
   Table1.Close;
   Table1.Exclusive:=True;   Table1.AddIndex('IdxStime','STIME',[ixPrimary]);   Table1.Exclusive:=False;
   Table1.Open;
   Table1.Active:=True;
   
  
   后又想到把其它组件与Table的连接断开,用Table的DisableControls和Enable
   Controls两个属性,编译运行,不行!
     Table1.DisableControls;
     Table1.Active:=False;
     Table1.Close;
     Table1.Exclusive:=True;     Table1.AddIndex('IdxStime','STIME',[ixPrimary]);     Table1.Exclusive:=False;
     Table1.Open;
     Table1.Active:=True;
     Table1.EnableControls;      想了很久,觉得表忙的话是不是有程序在用,或是组件?与是把Table组件与其它
   组件断开,去掉DataSoure和DBGird组件,再编译运行,不行!   然后我在www.yahoo.com中输入Table is busy关键字搜索到一篇英文资料,说是
   表好象要锁定什么的,于返回Delphi帮助,查到Table类的方法lock和unlock, 
      表忙的错误没了,可是又出现双重否定的结果,说是索引不能建在关闭的DataSet
   上,与是把DataSet打开(open或active:=true),又说索引不能建在打开的DataSeth ,天哪?索引即不能建在打开的数据集上,也不能在关闭的数据集上,那在
   什么上可建呢?我快疯了,感觉被BDE给嫖死了!!!!!!!!!      Table1.Active:=False;
      Table1.Close;
      Table1.Exclusive:=True;
      Table1.LockTable(ltWriteLock);  // 锁定表,一开始我是读锁定,不行,改成
                    //  写锁定是可以了。      Table1.AddIndex('IdxStime','STIME',[ixPrimary]);      Table1.UnLockTable(ltWriteLock);
      Table1.Exclusive:=False;
      Table1.Open;
      Table1.Active:=True;   已经过去两天了,我在CSDN上也提了很多个这样的问题,可最终还是没有建成索引,
  Delphi的帮助只介绍了AddIndex方法本身的用法,示例也就是一句,连Active要
  设成False的提示也没有,就是说AddIndex相关的其它东西都没有说。很多网友让
  我看帮助,可是我已经看了N次了,自认为英文还能过的去,实在不行时用金山词霸
  指点一下。  再次,我将Table的类库DBtables.pas中的AddIndex函数中的每一个执行语句后加
  入ShowMessage提示,想知道运行哪一个语句错了,可惜没有一个看到,可见连
   AddIndex函数体都没有进入,和我用F7调试结果一样,为什么呢?  然后我去看BDE,设置也是好的,用SqL Expoloer的SQL语句
   Create index idxstime on unsday (stime) 建立索引是可以的,BDE没问题
  呀。
  有哪位高手知道我的这个问题是怎么产生的?如何解决?是代码语句问题还是该语句  的相关配合设置没有设好?或是BDE有问题?    很多网友贴出来的关于AddIndex方法资料文章似乎和我已有一样,没有上机测试过,
  另外,Delphi的版本不同,同一方法的使用也有不一样的。这里谢谢了。  谁能告诉我如何DeBug???????????????????????????????????????????