将各个功能作成分离的DLL模块,模块中需要包括窗体和对应的数据库组件(公用数据库组件也可以根据情况放置在主程序中,使用USE调用主程序单元即可),动态加载这些模块,但关闭时,释放模块空间。

解决方案 »

  1.   

    一点建议:
    Form根据需要创建,不要在系统初始化的时候自动创建,应该可以节省许许多多的资源。
      

  2.   

    窗体都是自动创建。程序启动时非常耗资源的,应该把模态窗体(ShowModal的窗体后面我会说名用法)动态创建。而不是让Application 自动创建。把自动创建的窗体改成手工创建的方法是:在 Menu project|Options选项的 Forms Tab页中把要手工创建的窗体移到右边的listbox中也就是 AutoCreate-变为 Available-forms。哪些只需要手工创建您自己拿主意,我觉得自动创建的form 越少越好。除了MainForm, DataModule 、报表窗体和极少数的底层窗体自动创建外其他的窗体全部手工创建。
    我们动态创建Form2
    implementation
      uses Unit2;//(包含Form2)
    procedure TFrmBackZip.OKBtnClick(Sender: TObject);
    begin
      Form2 := TForm2.Create(self);
      try
        Form2.ShowModal;
      finally
        Form2.Free;//要释放 
      end;
    end;
    另外如果不想用ShowModal;
    用Show;要这样
    procedure TFrmBackZip.OKBtnClick(Sender: TObject);
    begin
      Form2 := TForm2.Create(self);
      Form2.Show;//用户可以离开这个窗体干别的事
    end;这样其他引用的地方要小心了,引用它是先 assigned
      if Assigned(Form2) then Form2.Show;
    中间释放这个窗体应该 还加一句 
      Form2.Free;
      Form2 := nil; 
    程序退出时应该监察是否释放了这个窗体对象!
      if Assigned(Form2) then
      begin
        Form2.Free;//这句少不了。
        Form2 := nil;
      end;你应该多看看书.delphi入门到精通讲得不错。