程序的主窗体Form1,Form1上有一个ADOQuery1控件
另有一个DataModule1,DataModule1上有一个ADOConnection1,从DataModule1继承一个窗体DataModule2
设计时,将Form1上的ADOQuery1的Connection属性设置成DataModule1.ADOConnection1如果工程中的程序如下
begin
Application.Initialize;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
这里没有创建DataModule1,运行时,ADOQuery1.Connection 指向的是DataModule2.ADOConnection1如果程序改为
begin
Application.Initialize;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
这里创建了DataModule1,运行时,ADOQuery1.Connection 指向的还是DataModule2.ADOConnection1如果程序改为
begin
Application.Initialize;
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
运行时,ADOQuery1.Connection 指向的才是DataModule1.ADOConnection1我可以理解为运行时其实指向的是TDataModule1的ADOConnection1,但是这个是个什么机制,弄不明白,望高手指教
另有一个DataModule1,DataModule1上有一个ADOConnection1,从DataModule1继承一个窗体DataModule2
设计时,将Form1上的ADOQuery1的Connection属性设置成DataModule1.ADOConnection1如果工程中的程序如下
begin
Application.Initialize;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
这里没有创建DataModule1,运行时,ADOQuery1.Connection 指向的是DataModule2.ADOConnection1如果程序改为
begin
Application.Initialize;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
这里创建了DataModule1,运行时,ADOQuery1.Connection 指向的还是DataModule2.ADOConnection1如果程序改为
begin
Application.Initialize;
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
运行时,ADOQuery1.Connection 指向的才是DataModule1.ADOConnection1我可以理解为运行时其实指向的是TDataModule1的ADOConnection1,但是这个是个什么机制,弄不明白,望高手指教
解决方案 »
- dbgrid控件列宽自动调整
- 请问一下.如何安装dev express?我下auto installer.装了.但打开ide时....
- 大家帮忙看看,这样做程序还会做多线程处理吗?
- Delphi2009 VCL源代码中大量出现的新的宏定义编译CLR,有什么新的意图或用途呢?
- xpmenu导致的问题
- 关于如何调用及取回存储过程的输出参数。。
- 请教用硬盘加密的方式的系统,机器码为空怎么办
- 关于系统字体的简单问题,麻烦了,在线等待
- 求助:我的 scoket 为什么不能把图片传过去,我是错在哪里?谢谢!
- (to snowty)你去你的帖子那里跟一下,叫我一声大哥哥,我把最后的内容写给你
- 请问:如何在程序中向某个网站提交表单? 谢谢!!
- 如何在INTRAWEB程序中执行JAVA SCRIPT代码?
Application.Initialize;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.并没有创建TDataModule2的实例,能行?
发个源码给我看看
[email protected]没有创建Tdatamoduale的对象,
从TDataModule1继承,上面所有的DataModule2的创建都换成
DataModule2 := TDataModule2.Create(Application);
代码我给你发过去了
新问题又来了,如果是有窗口的话,就是按照上面的写法,为什么ADOQuery1的Connection又会是空的呢?我越来越模糊了
赋值了再编译,不好!
这些我明白
但是实例毕竟是DATAMODULE2,属性中设置的是DataModule1中的连接,可以理解他在编译时是和先产生的TDataMoudle1连接,但是程序中明明产生了DataModule1的实例,他还是连在DataModule2上,用代码写没有问题这个我也知道,我的问题是为什么我在设计时指定的是DataModule1会有这种效果,还有,当DataModule2有窗口,不是只写类的时候他的连接又正确了
阳春三月,和Borland专家--刘艺相约上海!
http://expert.csdn.net/Expert/topic/2749/2749208.xml?temp=.2271692
同意这种说法!