大家都知道,在一般的数据库程序里都要用到数据模块,而且通常的做法是,
将DM(数据模块名)放到Option的Forms选项里左边的Auto-create forms列表里的最顶端,
但这样的结果是,所有子窗口调用的DM都是同一个实例,而我的程序是采用MDI窗口技术的,
可以允许同时打开多个子窗口,如果有用户同时打开多个子窗口,并且这几个子窗口
都调用DM里的相同数据控件来做不同的查询操作时,程序就会提示出错(因为同一个数据控件要
被几个不同的子窗口调用来做不同的查询操作,当然会报错)。 我在C++Builder里是这样解决的,我可以将DM放在右边的Available forms列表里,
通过命令来动态生成不同的实例,比如在每一个子窗口的头文件里加入如下一行代码:
Tdm *DM;然后在子窗口的OnCreate事件里调用如下命令来动态生成新的实例:
DM = new Tdm(this);
//此DM仅仅属于此子窗口,跟其它子窗口没有冲突。在OnClose事件里写入如下命令来删除实例:
delete DM;
Action = caFree;像C++Builder的这种做法,在Delphi里应该怎么实现呢?
将DM(数据模块名)放到Option的Forms选项里左边的Auto-create forms列表里的最顶端,
但这样的结果是,所有子窗口调用的DM都是同一个实例,而我的程序是采用MDI窗口技术的,
可以允许同时打开多个子窗口,如果有用户同时打开多个子窗口,并且这几个子窗口
都调用DM里的相同数据控件来做不同的查询操作时,程序就会提示出错(因为同一个数据控件要
被几个不同的子窗口调用来做不同的查询操作,当然会报错)。 我在C++Builder里是这样解决的,我可以将DM放在右边的Available forms列表里,
通过命令来动态生成不同的实例,比如在每一个子窗口的头文件里加入如下一行代码:
Tdm *DM;然后在子窗口的OnCreate事件里调用如下命令来动态生成新的实例:
DM = new Tdm(this);
//此DM仅仅属于此子窗口,跟其它子窗口没有冲突。在OnClose事件里写入如下命令来删除实例:
delete DM;
Action = caFree;像C++Builder的这种做法,在Delphi里应该怎么实现呢?
解决方案 »
- savetofile应用问题
- 关于Delphi delete 虚拟
- 心情愉快 (小散200分)
- double类型的数据相除问题?
- 请教delphi访问xml的问题
- 有三个Webbrowser放在panel中,现在我用Webbrowser的bringTofront切换,但是切换的时候闪烁太严重,请问有没有方法解决??
- 关于WebBrowser提交的一个小问题!100分
- www.programfan.com 这里不错哦!
- 怎么会这样呢?怎么会这样??
- Delphi5的程序在Delphi6中不能编译,请帮忙!
- 命命管道在两个进程间的通信问题.
- 怎样把一个图片以二进制形式存放到一个文件中比如(*.ini),在线等待
知不过是delete DM变成dm.free罢了
DM.free;
Action=caFree;