在ClinetDataSet使用DataRequest方法时怎样才能显示一个等待窗口(100分)

C

cnmdwr

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在编写一个多层应用,其中有一些数据处理的时间特别长(几分钟),
现在我希望能在客户端处于等待状态时显示一个动态的等待窗口,进度条显示,
请问应该怎样实现?
 
比较复杂的方法是使用多线程,在线程对象中调用ClientDataSet的DataRequest方法。
如果仅仅是显示一个会动的东西,就简单了。
定义TFlashForm动画窗体,上面有一个TAnimate
比如它的属性CommonAVI=aviCopyFile;
在DataRequest前创建并显示这个窗体(Show),调用Animate的Play方法
下面调用DataRequst方法
完了Free 掉FlashForm
在调用过程中,动画显示是正常的。
至于进度条,你自己找一个合适的AVI文件就行了。
 
同意楼上的说法,建议使用多线程,其实很简单
只要在线程中调用datarequest,当数据处理完成后返回一个参数给显示等待窗口
然后再关闭窗口就ok了
以前在c/s结构下也是这么做的
 
好象可以用异步方式可以,adotable我试了,不知道clientdataset如何
 
To szf:
我使用线程建立了一个等待窗口,
但是他不起作用,直到datarequest执行完成线程才开始执行

To xiaolinj79:
我在线程中使用datarequest方法是导致了我的scktsrvr出现AV错误,
然后clientdataset就不再往下执行了
 
不是在线程建立等待窗口的。
线程操作界面元素是会被主线程锁定的,除非主线程空闲,所以当然是DataRequest执行完了,
线程的的界面才出来了。
因此正确的方法是在线程中调用DataRequest方法。不过带来的是怎么跟主界面同步的问题,也
就是界面的等待窗口要等线程执行完才往下跑。
另外,在线程中记得使用CoInitinize的方法,进行COM初始化。
听我的,用TAnimate动画组件吧,简单。
 
顶部