2

我们在 Delphi 7 中使用一些 OLE 自动化来打开一个 word 文档,然后一旦加载,保存它,并将其加载到数据库中。

这工作正常,但部分要求是在 OLE 位发生时有一个进度条,如果 OLE 部分花费的时间太长,还有一个超时。

我们遇到的问题是整个 GUI 在 OLE 发生时冻结。进度条什么都不做,然后在最后就弹起来。

关于我们如何解决这个问题的任何想法?

4

1 回答 1

6

我认为这将很难干净地做到。据我所知,Word 自动化不会让您有机会取消长时间运行的事件。它也不会通知您进度。

可能你能做的最好的事情是首先将自动化移动到一个单独的线程中。然后在长时间运行的自动化过程中弹出一个选框进度条。至少这会让用户知道发生了什么事。

至于取消,您可以让用户从您的进度对话框中取消,然后让您的程序继续。您可以终止自动化线程,但这会使 Word 处于不良状态。我只是让它继续完成,然后忽略结果。从用户的角度来看,这将相当好地满足您的目标,即使它在幕后有点脏。

于 2013-03-05T09:51:39.367 回答