是这样的,我的程序FORM启动时,pagecontrol中有三个tabsheet,每个里面有个treeview,分别从三个数据库里提取数据动态显示在treeview里面。但是启动时,不能同时连接三个数据库啊,不晓得怎么搞(代码见下面),最后每个treeview都显示的最后一个数据库里的数据。我解决不了,所以就想在FORM启动时,只连接第一个数据库,把数据显示在第一个tabsheet的treeview里面,当点击第二个tabsheet标签时,再链接第二个数据库的内容显示在这个treeview里,当点击第三个tabsheet标签时,同样,链第三个数据库提取数据显示在treeview3里,但是点击tabsheet的触发函数不知道是哪个,这种方法解决一个就可以了,先谢过大家了,不知道看明白没有?procedure TForm2.FormShow(Sender: TObject);
const
  FrmConStrA1 = 'Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password="%s";Data Source="%s"';
  FrmConStrA2 = 'Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password="%s";Data Source="%s"';
  FrmConStrA3 = 'Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password="%s";Data Source="%s"';
  var
  constra1: string;
  constra2: string;
  constra3: string;
  begin
  ConStrA1 := Format(FrmConStrA1, ['', ExtractFilePath(Application.ExeName) + 'db3.mdb']);
  ConStrA2 := Format(FrmConStrA2, ['', ExtractFilePath(Application.ExeName) + 'db2.mdb']);
  ConStrA3 := Format(FrmConStrA3, ['', ExtractFilePath(Application.ExeName) + 'db1.mdb']);
  with DMDATA.ADOCON do
  begin
    close;
    ConnectionString := constra1;
    ConnectionString := constra2;
    ConnectionString := constra3;
    open;
  end;
end;

解决方案 »

  1.   

    〉〉pagecontrol中有三个tabsheet
    在 对应的tabsheet 打开的时候,才真正连接到数据库,
    其它的,没显示的 tabsheet ,你取数据到里面treeview也是浪费的,
      

  2.   

    先读进来,打开的速度不是快些吗?怎么一开始就连三个数据库,或者点tabsheet的触发函数是什么?
      

  3.   

    晕,    ConnectionString := constra1;
        ConnectionString := constra2;
        ConnectionString := constra3;其实到最后这个ADOCON 都是连接到最后一个上的,需要开三个ADOCON才可以
      

  4.   

    ×××××××××××我是楼主××××××××××××××基本上已经解决了,在PageControl1Change()里面写,但是新问题又出来了,
    我不可能每点一次tabsheet,数据就要重新加载一次吧,所以又有了一个判断:问:怎么判断tabsheet里的树,已经从数据库里调了数据,这要就可以不用再调一次了,请问这个判断该怎么写?
      

  5.   

    判断是否已经加载数据,可以用个一维数组保存是否加载的状态,每个下标一个TabSheet,点击之时就可以先判断。
      

  6.   

    设3个Boolean型的标志不就行了,加载前,判断这个标志,加载后把标志设为true