单元相互引用问题,高手请进

hzm_8 2009-06-08 02:14:12
有三个窗体 form_main ,form1 ,form2 .

form_main 是主窗口, form_main 中 ShowModal 打开 form1 , form1中有个adoTable , form1 中 ShowModal 打开了 form2

现在我在form2中写了一段脚本意思是编辑form1中的adoTable数据集,form2 used 了form1 。

form2 中大脚本写到:
Form1.ADOTable.Edit ; //第1句
Form1.ADOTable.Append ; //第2句
Form1.ADOTable.FieldByName('bh').AsString:='01'; //第3句
Form1.ADOTable.Post ; //第4句

为什么编译时没问题,但运行时总停在
Form1.ADOTable.Edit ; //第1句

报错误:
Access violation at address 005D0B4D in module 'project1.exe' Read of address 000002F8'.Process stopped.
Ues step or Run to continue .

各位大哥快帮忙吧,我实不知道为什么了。
...全文
30 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
luntanwujianhua 2009-06-10
  • 打赏
  • 举报
回复
肯定出錯啦。哪有這樣用的。Form2中應有個數據源 DataSource。把字段都綁定在這個dsScouce。
編輯的時候,到From1去編輯。Datasource.dataSet := ADOTable;
然後在Form1中編輯ADOTable。就可以了、
t8543 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 hzm_8 的帖子:]
form2 中大脚本写到:
Form1.ADOTable.Edit ; //第1句
Form1.ADOTable.Append ; //第2句

[/Quote]
lz是添加還是修改???
starluck 2009-06-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hzm_8 的回复:]
除了form_main 是在程序开始创建的,form1是临时动态创建的

form1_main中按钮有下面脚本在需要时打开form1

form1 := Tform1.create(self) ;
form1.showmodual;
form1.free ;


form1中又有按钮,在需要时打开form2 ,同样form2 也是动态创建的,form1,form2在主程序开始运行后都不自动创建。另外Form1.ADOTable是在开的状态。
[/Quote]

這個 Form1 是FORM1單元中的全局變理還是在MAIN裏面又重新聲明的?
火龙岛主 2009-06-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hzm_8 的回复:]
如何不让 ADOTable 释放?

[/Quote]

放到单独的datamodule中,或者动态判断
if ADOTable1 <> nil then
do。。。
hzm_8 2009-06-08
  • 打赏
  • 举报
回复
如何不让 ADOTable 释放?
Corn1 2009-06-08
  • 打赏
  • 举报
回复
估计这个ADOTable已经被释放掉了
hzm_8 2009-06-08
  • 打赏
  • 举报
回复
除了form_main 是在程序开始创建的,form1是临时动态创建的

form1_main中按钮有下面脚本在需要时打开form1

form1 := Tform1.create(self) ;
form1.showmodual;
form1.free ;


form1中又有按钮,在需要时打开form2 ,同样form2 也是动态创建的,form1,form2在主程序开始运行后都不自动创建。另外Form1.ADOTable是在开的状态。
s11ss 2009-06-08
  • 打赏
  • 举报
回复
对,必须先创建Form1,再创建Form2
yct0605 2009-06-08
  • 打赏
  • 举报
回复
查看工程文件里面的窗体创建顺序和窗体常见的代码,你的窗体是动态创建的还是直接创建的?
纯冰糖 2009-06-08
  • 打赏
  • 举报
回复
哪个窗体实例还未创建。你看一下窗体创建的顺序
bdmh 2009-06-08
  • 打赏
  • 举报
回复
跟一下,肯定是某个实例无法访问,你是如何创建的窗体
s11ss 2009-06-08
  • 打赏
  • 举报
回复
Form1.ADOTable.Open?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧