并且,程序可以响应form.close事件,但不能结束query
解决方案 »
- 关于IShellWindows在Vista下的问题
- 关于delphi中编辑菜单
- 各位大虾,请帮小弟一个忙
- 如何实现XP?
- 三层架构中怎样处理数据同步?(高分酬谢!
- 得到三个三角,散600,这是第三个100分, 12:02结贴
- 如何禁止RxRichEdit中图片的缩放操作?
- 10月10号, Borland大赛交稿时间已到, 不知大家参加了没有? 完成了吗? 交了什么作品啊?
- DELPHI新手问题 如果改变 DELPHI 的IDE 的风格
- 再问前几天问的一个问题:关于打印用dbgrid显示查询结果的问题
- 我做了一个多选项查找功能(代码内详),为什么只查一次可以,查第二次就什么都查不到了?
- 关于程序发布问题?
将就的法子:循环中间加上Application.ProcessMessage;退出时间中再加带有Application.ProcessMessage的循环延时。
query.sql.clear;
query.sql.add(sql);
query.open;
running:=true; // 全局布尔变量
while ((not query.eof) and (running)) do
begin
......
处理数据;
Application.ProcessMessage; //增加这一行
query.next;
end;
triggerquery.sql.Clear;
triggerquery.Prepare;
triggerquery.Open;
triggerquery.First;
Running:=true;
while (not triggerquery.Eof) and (Running) do
begin
application.ProcessMessages;
key:=triggerquery.Fields[2].Asstring;
gjz:=triggerquery.Fields[4].Asstring;
APage:=GetAPageCfg(inipath, triggerquery.Fields[0].Asstring, key);
处理数据;
triggerquery.Next;
end;
end;
while ((not query.eof) and (running)) do
begin
......
处理数据;
query.next;
application.ProcessMessages;
if not running then break;
end;
可用timer实现上面功能timer.interval=40; 1000interval 对应 1秒:
dbclick timer:
procedure timer.ontimer;
begin
处理数据;//可能是个耗时操作。
end;修改While循环如下就可以了:
first;
while ((not query.eof) do
begin
......
if not timer.enabled then Exit;
query.next;
end;
procedure button1.click;
begin
running:=一个布儿值;
timer.enabled:=running;
end;
如果用了就有可能出问题的.
应用程序关闭了,但是由于打开Query而在数据库上添加的进程并不会主动关闭阿!!!!