帮忙给程序改错。急急急!!!(50分)

  • 主题发起人 主题发起人 wp531
  • 开始时间 开始时间
W

wp531

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序有四个窗口,table1属于form4,datasource1、query1属于form3,
一开始form3.datasource1.dataset:=query1;在form4的输入按钮的click事件中,
有3行代码:
Form3.DataSource1.DataSet := Table1;
Table1.Edit;
Table1.Append;
可是每当程序运行到第一行时,就出错了。而我又新建立的新程序做试验,却可以通过,
不知问题出在什么地方了。错误提示是:Access violation at address 004AE33D in
module 'lib.exe'.Read of address FFFFFFFF.这时我发现table1.active:=False;
改为true后,程序刚一启动就死了。但在试验中,query1和table1的active属性都为true;
说明:form3为MDIChild类型,form4是自动创建的窗口。
 
我又重新试验了一下,发现这和MDI类型的窗口有关,不知道为什么?
请高手解答!急急急!!!
 
能先说明一下你的窗体的创建顺序和程序是什么结构的?MDI的吗?
 
可能是你的 FORM3 没有创建,修改如下:
if not Assigned(Form3) then
Form3:=TForm3.Create(Applicatioin);
Form3.DataSource1.DataSet := Table1;
// Table1.Edit; //这句不要
Table1.Append;

另外:在 FORM3 地 ONCLOSE 中加入:
Action:=caFree;
 
多数情况是因为form3的实例未建立就进行操作出错.
 
我是通过form1(主窗口)打开form3,再通过Form3打开Form4的,Form3和Form4都是
子窗口,Form3和Form4都是通过Create创建的。
如果不用MDI类型的窗口的话,就可以顺利通过。
????
 

Form3:=TForm3.Create(Applicatioin);
Form3.DataSource1.DataSet := Table1;
form3.show;
form3.update;
Table1.Edit;
Table1.Append;
一定要先form3.show。
 
試一試下面的
unit3.TForm3(self.owner).DataSource1.DataSet := Table1;
Table1.Edit;
Table1.Append;
(unit3是單元名,建造form4時﹐owner一定要是form3
如 form4:=Tform.create(self)


 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部