最近在做一个小项目,我将所有的窗体封装至dll当中.dll和exe都带包运行.exe和dll都将第一引用ShareMem.架构是这样
exe中DM为全局DataModule.里面放有dxSkinController1和cxLookAndFeelController1,用来做整个程序的界面外观控制.
TcxLocalizer,用来做汉化
再显示一个Main窗体.为所有窗体的MidForm.在此窗体调用封装好的Dll窗体..
但是实际调用中.Dll窗体装体调用后,有时会现现dll窗体中cxgrid没有完全汉化的问题,如分组栏是英文,列的过滤条件是中文.有时又完全汉化.   并且Dll窗体关闭出现问题.报下面的错误:
---------------------------
Application Error
---------------------------
Exception EAccessViolation in module uxtheme.dll at 00001531.Access violation at address 5ADC1531 in module 'uxtheme.dll'. Read of address 00000014.
---------------------------
确定   
---------------------------此问题应该是外观样式出现问题.难到是cx控件系列冲突的问题?还是我软件架构出现问题?我确定我程序当中没有引用TXPMainFest控件,所有的控件都是cx系列的.除了会使用delphi原装的Tpanel,TMainMenu,TPopupMenu,TAction,外.没有使用delphi原装的控件了.连按纽都用的cx系列的.我这样做就是为了风格统一.
以下是我初步分析,并且说明信息.使用当中.我还发现一个另外的问题.我写了一个对话框窗体taskform.dll,也封装成Dll.单次调用没问题.
单独出现没问题.如按纽触发.调用taskform.dll.在taskform.dll中的Form中点击相应的确认或取消按纽.没问题.
但是如果taskform.dll被调用二次以上.即taskform.dll中的对话框出现二次.关闭的时候会报下面的错:Application Error
First chance exception at $7C812A6B. Exception class EInvalidPointer with message 'Invalid pointer operation'. Process Project1.exe (2952)不知道有没有朋友做过封装dll窗体的项目.你们的项目中dll窗体与exe主窗体风格是怎么一至的?有何成功的解决方案?连续出现二次时,报'Invalid pointer operation'如何解决?

解决方案 »

  1.   

     我现在出现了类似的情况,在写远控时,DLL封装窗体时出现的,望高人指点
      

  2.   

    exe中DM为全局DataModule.里面放有dxSkinController1和cxLookAndFeelController1,怎么传到窗体DLL ?
      

  3.   

    我的工程里也使用了DLL封装窗体,但是DLL没有被调用,关闭的时候就直接报楼猪所出现的错误了。这是什么原因呢?我在百毒上搜索了一下,也有其他人遇到了这个问题,但是没有发现有答案。
      

  4.   

    二次调用报错的话  可能没有完全释放,你在dll再写一个方法 
    释放窗体,调用前先释放一下freeandnil(frmMain)