17.1.OrangeUI控件使用说明(拖动加载面板控件PullLoadPanel)(示例1 基本功能)

接下来展示一下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交互

 

 

 

 

 

 

 

发表评论