可能我还是没表达清楚,现在是单独的两个问题:
1.你说的为每个page设置独有的数据环境,这是可以,不过我现在情况比较特殊,我表单里面每个page用到的数据表有一样的也有不一样的,而5个page几乎没有共用的数据表,也就是说,Form的Load事件一个表都不用打开,全部在page各自的Activate事件中单独打开。现在问题来了,Form的Load事件之后要执行Form里面
每个page里面
每个子控件的init事件,如果我所有控件全是用代码启动的话那当然没问题,可是我在学会这个之前都是用表单控件集拖的,而这些控件数据源绑定的就是数据库中的表,这样执行init事件的时候就会出现找不到某些数据表,因为还没有开始执行Activate事件。要解决这个问题,要么将所有控件都用程序启动,要么直接在表单的Load事件中打开所有要用到的表,我选择了后者。
2.整个系统里面我计划就用两个表单,一个Login一个Main,Login比较简单不说了,Main这个表单作为系统主界面,里面是一个有5个page的pageframe,每个page代表一个模块,界面你之前看过了。现在需要在一些时候用控件Click显示一个新的表单,原表单不关闭。新表单我是用程序启动的,而用程序启动的新表单,其数据环境都是空白的(这个我试过,不设置数据环境的话GRID就是空的),需要重新设置,而设置的时候需要再从已经打开的数据库中读取数据表数据,而这时原表单没关闭,所以会报错“文件正在使用”,我是这么理解的。解决的方法我是在设置Main的数据环境时use xsk
shared order xh in 0,然后将新表单的DataSession设为2,这样就不会报错了。就是不知道shared打开数据表会不会有什么弊端。