以前是一个exe打天下,现在想进行模块化开发,方便维护,有些疑问,请大家指点小弟。1、我想把一些通用函数写在dll中,方便在各个地方调用,但是我这个dll中的自定义函数和过程达到了几十个之多,那么难道我在每个程序中都要把这些涵数都加载一次?有没有简单的方法可以一次加载dll中所有的函数?2、比如会员系统属于一个模块,业务系统属于一个模块,那么搞模块化开发,罗辑上是不是应该把这两个分别装到两个dll中去?dll可以封装窗口么?方不方便操作,通常是怎么做的呢?

解决方案 »

  1.   

    1. 写一个通用的单元静态调用这个dll,每个程式引用这个单元(通用的函数直接写在一个单元里面,其他程式调用这个单元就行了,没必要封装成dll);2. dll可以封装窗口,给你个Demo:http://download.csdn.net/detail/feiba7288/5094359
      

  2.   

    我在dll中写了下面代码,exe中已经可以调用显示出dll中的窗体,但关闭后,不能再次打开,点击后无任何反应,如果反复点关闭时,会报错。请问如何正确关闭,并能重复打开dll中的窗体呢?     DLL中的代码: Procedure showform;stdcall;
          Begin
          if Form1 = nil then
          Form1:=Tform1.create(application);
          Form1.show;
          End;      Procedure CLoseForm;stdcall;
          Begin
          Form1.Free;
          End;
    EXE中的调用代码:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    //Synapp(Application.Handle);
    Showform;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    CLoseForm;
    end;
      

  3.   

    用楼上的FreeAndNil      Procedure CLoseForm;stdcall;
          Begin
            freeandnil(form1)
          End;
    或者
          Procedure CLoseForm;stdcall;
          Begin
            form1.Free;
            form1 := nil;
          End;