OrangeUI

接下来展示一下PullLoadPanel的基本功能
 
最简单的PullLoadPanel只需要设置一个在加载数据时滚动显示的图片控件,
 
步骤如下:
先放置一个ListBox到窗体上,
拖一个PullLoadPanel到ListBox上面,
再拖一个Image控件在PullLoadPanel中,
设置图片为
如下图:

设置PullLoadPanel.Properties.LoadingImage为这个Image,

再把ListBox.VertScrollBar.Properties.MinPullLoadPane
l设置为这个PullLoadPanel,

这样就设置完毕了
 
 
 
接着,在PullLoadPanel中的OnExecuteLoad事件中编写加载数据的代码,
这里我们启动一个线程来模拟加载数据的过程,
并且在线程执行结束之后调用StopLoad方法来隐藏PullLoadPanel,
 
为什么需要一个线程来执行加载呢?
如果在OnExecuteLoad直接从网络获取数据或执行一个数据库查询,
整个界面就会卡死,直到数据获取完或查询结束,
因为OnExecuteLoad是在主线程执行的,主线程用于刷新及界面交互,
所以,需要创建一个线程,在线程中加载数据,并在线程结束之后,
往ListBox中填充数据。

启动线程的代码:
引用uTimerTask单元,
 
procedure TFramePullLoadPanel.plpDefaultTopExecuteLoad(Sender: TObject);
var
ATimerTask:TTimerTask;
begin
ATimerTask:=TTimerTask.Create(0);
ATimerTask.OnExecute:=DoThreadExecuteLoad;
ATimerTask.OnExecuteEnd:=DoThreadExecuteLoadEnd;
GetGlobalTimerThread.RunTask(ATimerTask);
end;
 
procedure TFramePullLoadPanel.DoThreadExecuteLoad(Sender: TObject);
begin
//模拟线程加载数据
Sleep(4000);
end;
 
procedure TFramePullLoadPanel.DoThreadExecuteLoadEnd(Sender: TObject);
begin
//停止加载
Self.plpDefaultTop.Properties.StopLoad;
end;
 
DoThreadExecuteLoad过程是线程加载过程,用于获取数据列表等,
DoThreadExecuteLoadEnd过程是线程加载结束之后的过程,用于将数据列表填充到ListBox上去并停止加载。
 
 
 
 
 
 
 
 
 
 
 
 
 
另外,PullLoadPanel也内置了线程加载事件(这时不需要设置OnExecuteLoad),
OnThreadExecuteLoad事件是在线程中加载数据列表的事件,注意里面不要与UI交互,
OnThreadLoadFinished事件是线程加载结束事件,可以与UI交互