我正在查询具有相对复杂查询的firebird数据库,需要一段时间才能执行,并认为如果用户可以获得有关查询进度的某种形式的反馈将会有所帮助。我打算在查询启动时在状态栏上显示一个合适的“请稍候”消息,并在查询返回其数据时清除状态栏。
我正在使用TSQLDataSet,TDataSetProvider和TClientDataSet;哪个事件将触发哪个组件表示查询已完成并且数据已准备好显示?
TIA, No'am
答案 0 :(得分:2)
查看TClientDataset的BeforeExecute和AfterExecute事件。它们似乎符合你的需要。
如果您需要UI在查询处理过程中做出响应,您可以查看ProcessMessagess或在单独的线程中执行查询,并使用OnTerminate将检索到的数据传送到表单。
答案 1 :(得分:0)
由于这与UI相关(显示消息),我可能会使用TClientDataSet的AfterOpen事件。
答案 2 :(得分:0)
回想起来,对不起,我发布了这个问题,因为答案很简单,与事件无关。这是我的简单解决方案。
statusbar1.simpletext:= 'Opening query';
qComplicated.open;
statusbar1.simpletext:= '';
当查询返回其数据时,程序控制移动到查询打开后的语句,这将清除状态栏。
我向那些回答的人道歉。