最近设计了一套系统,首先是登陆,然后是进入主窗体,问题出现了,我在主窗体里调用另一个窗体,结果是:如果我只调用一次然后关闭再关闭主窗体,没有问题,两次也可以,可是如果是三次的话,再关闭主窗体就有问题了。出现了如下错误提示:Exception EaccessViolation in module fx_cy.exe at 000F3E54. access violation at address 004F3E54 in module 'fx_cy.exe'.Write of address 04CE878C.
高手帮忙啊
高手帮忙啊
解决方案 »
- 如何让DBGrid绘制的时候精确定位到每一个单元格的颜色?
- tclientdataset中的Locate和Findkey在执行效率上的区别大么?
- 如何在FORM上动态设置2维坐标系?
- oo技术讨论群201584874
- 如何取得数据库里面的一个值???
- 三层结构,SQL2000数据库,在客户端更新数据时狂慢!
- 我的程序缩小到工作闸,那么要鼠标到它上面才可以显示提示消息.我如何控制提示消息自动显示一段时间消失
- 使'panel控件'上的'五个Image控件'在for...do...语句中显示图片
- 如何实现PING功能测试某一IP地址通迅状况?
- delphi调用C#的DLL
- 谁有 XLSReadWriteII 控件的注册版(含源代码)?
- 能不能让DBGrid总是有网格线呢?
这是调用
Application.CreateForm(TFordtdh, Fordtdh);
Fordtdh.ShowModal;
这是fordtdh show的时候
ADOQuery3.Connection:=mainform.ADOConnection1;
ADOQuery3.SQL.Text:='select * from czhbj';
ADOQuery3.Active:=true;
DataSource3.DataSet:=ADOQuery3;
ADOQuery4.Connection:=mainform.ADOConnection1;
ADOQuery4.SQL.Text:='select * from xfjlb where (ls_zh='''+dm.zhuohao+''''+') and (ls_tinghao='''+dm.th+''''+')' ;
ADOQuery4.Active:=true;
DataSource4.DataSet:=ADOQuery4;
timer1.enabled:=true;
Timer2.Enabled:=true;
Forhyxgxx.Timer1.Enabled:=true;
Forhyxgxx.Timer2.Enabled:=true;
Forhygl.Timer1.Enabled:=true;
Forhygl.Timer2.Enabled:=true;
GroupBox2.Caption:='';
ADOQuery1.Connection:=mainform.ADOConnection1;
ADOQuery1.sql.Text:='select * from czhbj';
ADOQuery1.Active:=true;
DataSource1.DataSet:=ADOQuery1;
关闭时
Timer1.Enabled:=false;
主窗体关闭时
adoquery100.SQL.Text:='select * from xtrz';
adoquery100.Open;
adoquery100.Append;
adoquery100.FieldByName('xt_czy').AsString:=dm9.xm;
adoquery100.FieldByName('xt_czsj').AsDateTime:=now;
adoquery100.FieldByName('xt_czbh').AsString:=dm9.bh;
adoquery100.FieldByName('xt_czx').AsString:='餐饮管理主系统';
adoquery100.FieldByName('xt_sm').AsString:='退出系统';
adoquery100.Post;
mainform.Close;
forjddlz.Close;
要注意的是動態創建一定要在用完之後FREE掉,不然就會有你現在的問題,而且最好不要循環調用 mainform.Close;
forjddlz.Close;還有就是這兩句反過來試試,因為主窗口CLOSE後,應該程序就結束了,其它語句找不到載體
FreeAndNil(Fordtdh);
----------------------------------------------------------------
花自飘零水自流,一种相思,两处闲愁。
此情无计可消除,才下眉头,又上心头。
----------------------------------------------------------------
这里只说子窗体的释放,在子窗体的Onclose加上:
Action:=Free;
Fordtdh:=nil;
如果你是动态创建该窗口的,那么应该删除工程文件里相应的窗口创建代码;
其次,MDI子窗口释放的时候,在OnClose事件里要设置
Action := caFree;
Tordthd := nil;
最后必须释放创建的窗体,如果是showmodal调用,建议如下:
Form1 := TForm1.Create(Application);
try
Form1.ShowModal;
finally
Form1.Free;
end;