程序概况:
主窗体,有数据显示控件
数据模块(DataModule)维护数据库连接(ADO)。
数据库文件(Access.MDB)为了程序可以支持拷贝后即可运行,因此ADO的连接字符串是根据当前路径生成的。
同时,要求主窗体在创建后即可以使用数据库连接。但是:取得当前路径一般使用Application.ExtractFilePath(),
且:Application对象似乎只有在窗体对象中才有效。无窗体的模块和DataModule中都不能使用。
即:当前路径必须要从DataModule外部传入才行。问题是:
为了让主窗体在显示时就可以使用数据,因此DataModule必须先创建
为了让DataModule可以取得当前路径,因此必须在DataModule前创建其他窗体,以访问Application对象
似乎是个先有鸡还是先有蛋的问题。请问有没有方法不需要创建额外的隐藏窗体取得当前路径?
主窗体,有数据显示控件
数据模块(DataModule)维护数据库连接(ADO)。
数据库文件(Access.MDB)为了程序可以支持拷贝后即可运行,因此ADO的连接字符串是根据当前路径生成的。
同时,要求主窗体在创建后即可以使用数据库连接。但是:取得当前路径一般使用Application.ExtractFilePath(),
且:Application对象似乎只有在窗体对象中才有效。无窗体的模块和DataModule中都不能使用。
即:当前路径必须要从DataModule外部传入才行。问题是:
为了让主窗体在显示时就可以使用数据,因此DataModule必须先创建
为了让DataModule可以取得当前路径,因此必须在DataModule前创建其他窗体,以访问Application对象
似乎是个先有鸡还是先有蛋的问题。请问有没有方法不需要创建额外的隐藏窗体取得当前路径?
工程文件中就引用了Forms单元,所以它肯定会在你的DataModule初始化之前创建
在DataModule中要引用Application对象,只要引用Forms单元就可以了
Application对象是在Forms单元中定义,并在单元的initialization部分初始化的
>>
Application对象是在Forms单元中定义,并在Controls单元的initialization部分初始化的
re ysai 谢谢!感谢您的回答,我就是要这个答案。
re getcurrentdir 获取当前路径,这个当前路径会根据系统当时的状况变化,我曾经这样做,但是因为不保险,所以没有采用。
没有说清楚问题,让大侠们费解了。
见谅!!
用GETGURRENTDIR这个SYSTEM单元的函数不就行了.一样可以取得当前路径
难道不会能过MainForm的onCreate/onClose事件写代码来打开关闭数据库链接吗?
如:创建了 执行文件的快捷方式 的情况
(必须要设置快捷方式的起始路径,而Windows右键菜单创建的快捷方式,在缺省状态是空值)MainForm的onCreate/onClose会影响整个程序的封装性。感谢关注!