导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2003/9/3 11:06:59
标题:
加入我的收藏
楼主:
我在一个子窗口内的按钮的click事件里写这样的语句: application.CreateForm(Tf_seed_add,f_seed_buy_add); f_seed_add.showmodal; 不知道为什么,不打开这个窗口,程序能正常退出,如果打开过,主窗口关闭时会出错,出现我的附件中显示的这样的错误信息。为什么? 另:不知如何往贴子里贴图,还请指教。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/3 11:10:11
1楼:
你是不是没有写Destroy事件啊
----------------------------------------------
哇靠 ~~~~~~~~~~~~~~ 这个帖子一定要回!
作者:
2003/9/3 11:31:52
2楼:
咦,我的附件那儿去了? 谢谢redsworft 。 我试过在f_seed_add的destroy事件里写入f_seed_add.free这样写,出错信息是stcak overflow。 不写,出现类似汇编语言的窗口。这是怎么回事? 我极菜,还请指点。 另外,这个窗口里的几个Query组件的语句如果注掉,以上情况不发生,可是我怎么也看不出这几个query组件的语句有什么错呀。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/3 11:38:39
3楼:
试试 加一个 action:=cafree;在关闭的时候.我也是菜鸟
----------------------------------------------
-
作者:
2003/9/3 13:55:10
4楼:
你把application.CreateForm(Tf_seed_add,f_seed_buy_add);改成 application.Create(Tf_seed_add,f_seed_buy_add);应该就没有问题了 因为createform所创建的窗口是主窗口
----------------------------------------------
-
作者:
2003/9/3 14:42:46
5楼:
to sealcheng 不行呀,依然出现现那个汇编窗口。 to wwj213 也不行呀,改成create根本就编译不过去。 我想肯定是这里边的有关query组件的一些语句的问题,我再试试。 比如: with query_seed_name do begin databasename := datamodule1.Database1.DatabaseName; close; sql.Clear; str_sql := 'select id,name,seed_type from seed_name where flag = 'a''; sql.Add(str_sql); open; first; while not eof do begin cb_name.Items.Add(fieldbyname('name').AsString); next; end; end; 注了上述语句后,打开过这个窗口后,关闭主窗口就不会出错了。这是怎么回事? 谢谢几位的解答。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/3 15:28:38
6楼:
你这个 datamodule1 是不是在创建这个窗口之前创建了? 如果没有的的话 肯定会。。。。。。。 哪个“类似汇编语言” 是 CPU 状态调试窗口
----------------------------------------------
作者:
2003/9/3 15:36:52
7楼:
谢谢奇奇怪的解答,这个datamodule1当然是在这之前创建了,要不怎么编译得过。 我感觉最奇怪的是主窗口的关闭居然和它子窗口打开的一个normal窗口内的几个有关Query组件的语句有关。真是怪事,那位大虾遇见过这种问题,还请帮忙,我的活很急,可是卡到这里了,真急死我了。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/3 16:25:09
8楼:
顶
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/4 8:35:59
9楼:
编译器不能检查你是否创建了实列,只能检查你是否申明了实列的指针 你哪几个有关的Query是不是在子窗口中用过就Free了?而在主窗口关闭时又 拿来Close 了?? 一般用动态开控件时最好 要销毁时 Object.Free; Object := nil; 引用时 if Not Assigned(Object) then Object := TObject.Create(Self); Object.xxx; 这样就保证不会引用空指针了 用过的指针要设成 nil Assigned() 才能检查出来
----------------------------------------------
作者:
2003/9/4 9:47:03
10楼:
谢谢 skertone (奇奇怪) 谢谢老兄帮忙。 我在子窗口中并没有free之。 我今天一气之下卸了delphi7,重装了delphi5又重写上述语句试了试,结果这里说的问题和我另一个贴子里说的问题都不见了, http://bbs.2ccc.com/topic.asp?topicid=24283 我看还是我的D版delphi7有问题。看来我只能在delphi5里把程序重写了。 惨!!!55555555.........
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/4 14:54:38
11楼:
不对呀,老兄,我以为是delphi的问题,其实不然,我发现,在子窗口里用query,没有任何问题,可是如果在这个子窗口里按钮事件里以showmodal方式打开的窗口里再用若干个query,退出时一定出错。 这可怎么办,你的办法我试过了,没有用呀。 还请再帮我想想办法,谢谢了。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/4 16:17:36
12楼:
你不会不用吗!你试过这个吗 子窗口 主窗口 ↓ ↓ tform2.create(form1); 你的源代码能给我吗 sealcheng@163.com
----------------------------------------------
-
作者:
2003/9/4 16:48:33
13楼:
谢谢sealcheng (chengcheng) 我想可能是这里边的query组件太多了,不知怎么回事就出错。 打开窗口的次序是:主窗口-->子窗口-->showmodal一个normal窗口。 关键问题是在,如果这些query组件放在子窗口内,无论怎么检索都没问题,可是如果这些query放在第三个normal窗口内,则如果有两个以上query组件打开,则不是在第二个检索发生时出错就是在关闭主窗口时出错。(注意:是关闭主窗口)。 我的源程序马上发给你,我用的是delphi7,sql server 2000。 数据库你直接在sql server 2000里附加上就可以了。我用的是odbc连接。数据源名为seed_jinxiaocun,你的服务器用户密码什么的自己在datamodule1里改一改吧。谢谢,实在太谢谢你了。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/5 11:01:19
14楼:
try application.CreateForm(Tf_seed_add,f_seed_buy_add); f_seed_add.showmodal; finally f_seed_add.Free; end; 你创建窗体从来都不释放的?要随时养成这个良好的习惯,创建后必须释放,要不然程序有时候会出错我的哦
----------------------------------------------
-
作者:
2003/9/5 11:07:53
15楼:
还有需要提示一下,如果你创建的窗体里面有query,并且在创建窗体的时候就打开query,那么释放窗体的时候必须close掉query,否则在创建窗体释放时不仅速度慢还会报错的
----------------------------------------------
-
作者:
2003/9/5 14:34:29
16楼:
谢谢 welcomer 。 我创建窗口后总是在窗口的close事件里释放的。 我创建窗口时确实打开了query,但是在窗口关闭的时候我也试着加了query1.free,可是这样在关闭这个窗口的时候就出现了这种读地址错误。 好像是query过多有关系,我原来为同时记录编号和描述,每个下拉列表框都用了一个query,这样窗口内有七八个query,后来,所有的下拉列表都用同一个query,窗口内只有一个query,这样就不会出错了。这是为什么?
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2003/9/6 11:12:04
17楼:
看来就是Query用的太多了,我这样作就没问题了,只用一个query,需要同时保存编号和描述的地方我就声明一个数组,把编号存在数组内,取编号的时候按下拉列表框返回的itemindex到数组里取编号,这样就没问题了。 我想可能是query占用的资源太多,线程太多,就出问题了。 谢谢大家这两天的关心和帮助。谢谢。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福