请指教 Delphi 工程编译运行的过程,
如各级组件如何逐层逐个构造的,他们构造顺序,
以及资源文件(包括res、dfm等)的加载在什么时候,创建窗体在什么时候,再什么时候才开始运行我们编写的代码。现在有个实际的问题是:
工程里有个 ADOConnection1,设计时是打开的,
即 Connected = True,请不要叫我设成 False,我必须要这么做的,
这样运行后 ADOConnection1 会自动 Connect,
而我不希望这样,用
procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOConnection1.Connected := False;   //慢了!
  //ADOConnection1.ConnectionString := '...';
  //ADOConnection1.Connected := True;
end;
不起效果,程序总是在运行到这段代码之前就已经尝试 Connect 了,
那有办法在程序装载完 dfm 中 ADOConnection1 的属性值时,马上改变 Connected = False,也就不让它自动 Connect 吗?总之让它不要自动连接就是了。诸位请指教,不尽感激。分数自然不成问题。

解决方案 »

  1.   

    那你为什么一定要Connected = True呢??
      

  2.   

    你是不是用到了data module?
      

  3.   

    在FormCreate的时候创建DataModule,在DataModule中用Procedure或者Function实现具体操作,再在主窗口给个按钮激发后台的操作就行了。
      

  4.   

    to xjjrocker(了无痕) 
    我就是这么做的,
    问题在于creat DataModule的时候,ADOConnection1 就自动连接了。
      

  5.   

    建立的顺序在工程设置里有
    还有,我要提醒你的是,不要在设计期将Connection的Connected 设置为True
    调试期还可以,只是发布这样做是不明智的
    原因很简单
    如果你在设计期Connected 就是False,那么程序运行的时候初始化时Connection会按你开发的时候的ConnectionString去连服务器,后果你知道了?
      

  6.   

    如果你在设计期Connected 就是False
    应该是
    如果你在设计期Connected 就是True
      

  7.   

    很简单啊,在编译前将ADONCONN的字符窜去掉就可以了
      

  8.   

    晕呢;ADOConnection1.Connected := False;  你写在DataModule的Create中不就结了?
      

  9.   

    sephil(NAILY Soft 【哈里波特大】:
    你说的对,我就是“知道”这个“后果”啊。。 S.F.(吃青春饭的) 们:
    你们没看到我的代码吗??请认真看一下问题哦。
      

  10.   

    ADOConnection1.Connected := False;   //慢了!
    不推荐
    你在设计期\编译前就应该先把Connected属性改成False
      

  11.   

    在设计中使用 fr 等时 ADOConnection1 自动打开了,发布时忘了改该属性的话发布后使用就出错,我也经尽量注意了,还是时有发生,所以我想从根本上解决问题。delphi 的编译是一步步的加载过程,我想应该可以在哪个环节进行控制的。而且,我也想深入学习 VCL 源码。