红鱼儿

图文解说ChinaCock FMX组件CCListBox

随着Delphi 11发版以来,其ListBox的效率已经不可同日而语,再加之Skia的支持,使用ListBox显示大量数据,效率已经不问题。问题是同ListView比较起来,缺少上下滑动到最顶端或最底部的动画显示,作为程序开发者,往往在这时候为用户加载数据,而不是一次性加载全部数据。想象一下,当用户滑动到ListBox最底部,显示一个正加载的动画,当加载完成后自动隐藏这个动画,在加载的过程中,封掉ListBox,不允许用户操作,那该是多完美的场景。对此,ChinaCock作者继承ListBox,为我们封装了新的组件:CCListBox,完美解决此问题。

接下来,我们一起看看,CCListBox增加了哪些神奇的功能以及如何使用他。

增加的属性:

1.BoundsAnimation:boolean型,如果为False,则功能与原ListBox一样,是否允许下拉与上推的动画,默认情况下,值为True

2.EnablePullDowRefresh:是否允许下拉动画,当这个属性为真时,显示动画,并触发OnPullDownRefreshing事件

3.EnablePushUpRefresh:是否允许上推动画,当这个属性为真时,显示动画,并触发OnPushUpRefreshing事件

4.IsTransParent:ListBox是否透明显示,利用这个属性,我们可以为其定义背景,例如:CCListBox放置到一个Form,那我们设置Form的填充色,再将ListBox设置为透明,那么Form就做为ListBox的背景显示了。

5.PullDownOptions:如下图,这是一个复合的属性,用于设置下拉ListBox时,即向下滑动ListBox,在ListBox顶部显示的动画: 

 

Fill:下拉动画的填允色

Indicator:动画的提示器

IndicatorVisible:是否显示动画指示器

Text:动画显示的文本

TextVisible:是否显示动画文本

6.PushUpOptions:基本同PullDownOptions一样,当用户上推LisBox时,即向上滑动ListBox,在ListBox底部显示的动画。

接下来,再看增加的两个事件:

1.OnPullDownRefreshing事件

用户下拉ListBox,即用户向下滑动ListBox,当显示第一行时,这时候用户再向下滑动,会显示动画,并且触发这个事件。我们在这个事件中,可以加载数据,加载完成后,关闭动画的显示。参考下面的代码:

procedure TbxFrame.ListBox1PushUpRefreshing(ASender: TObject);
begin
  TTask.Run(
    procedure
    begin
      Sleep(200);
      TThread.Synchronize(nil,
        procedure
        begin
           //往ListBox中加载数据,这里我省略了

           ListBox1.IsPushUpRefreshing := False; //关闭动画
        end);
    end)
end;

2.OnPushUpRefreshing事件

用户上推ListBox,即用户向上滑动ListBox,当显示到最后一行时,这时候用户再向下滑动,会显示动画,并触发这个事件。

如果数据全部加载完成,那我们在关闭动画时,可以只显示动画的文字,不显示指示器图标。如下面的代码:

procedure TbxFrame.FinishLoadData;
begin
  with ListBox1 do
  begin
    IsPushUpRefreshing := False; //关闭刷新动画
    EnablePushUpRefresh := false; //不再触发 OnPushUpRefreshing 事件
    PushUpOptions.IndicatorVisible := false; //不再显示动画指示器图标
    PushUpOptions.TextVisible := true; //显示文字
  end;
end;

 

posted on 2022-12-09 14:09  红鱼儿  阅读(737)  评论(0编辑  收藏  举报