XE7 & FMX 那些年我们一起上过的控件:ListView 之 (2) 加载数据时如何显示进度条

本文介绍一下ListView下如何加载数据、及使用进度条反馈当前进度给用户。

注意:

原创作品,请尊重作者劳动成果,转载请注明出处!!!原文永久固定地址:http://www.cnblogs.com/weii/p/4190694.html

我们先来看看效果图:

进度条需要这样用的,以下为本文参考代码:

procedure TForm1.Button2Click(Sender: TObject);
begin
  TThread.CreateAnonymousThread(
    procedure()
    var
      i,j: integer;
      t1,t2: cardinal;
      t3: double;
    begin
      listView1.Items.Clear;
      label1.Text:=‘‘;
      i:=1000;
      ProgressBar1.Value:=0;  //没有数据, 置0
      ProgressBar1.Max:=i;    //最大值
      t1:=TThread.GetTickCount; //记录时间,非必须的
      for j := 0 to i do begin  //如果你是从数据库或内存表里取数据的,则应该如 for j:=0 to ClientDataSet.RecordCount-1 do 这样取
        sleep(5);  //停5ms,必须的,否则下面填数据时会卡菊花。这里看你CPU的强硬程度,5-20即可,手机用户需适当设置
        TThread.Synchronize(TThread.CurrentThread,
          procedure()
          begin
            with ListView1.Items.Add do begin
              text:=‘No: ‘+j.ToString;
              t2:=TThread.GetTickCount;   //记录时间,非必须的
              t3:=(t2-t1)/1000;         //计算时间,非必须的
              detail:=Format(‘耗时:%f 秒‘,[t3]);  //显示耗时
            end;
            ProgressBar1.Value:=j;  //进度条当前进度
            Label1.Text:=Format(‘[ 进度:%d / %d ]‘,[j,i]); //显示当前进度
          end
        );
      end;
  end).start;
end;

以上只是简单表示一下思路,各位可以发挥想像处理得更好。

在下一篇,我们介绍一下如何自定义进度样式显示ListView加载进度。谢谢关注本文。

PS:
--------------------------------------------------------------- 
FireMonkey移动开发可加QQ群:165232328 (本人非管理员,仅仅其中一成员,此群高手林立,期待各位Delphi爱好者共同交流)。 

时间: 2024-12-19 14:17:29

XE7 & FMX 那些年我们一起上过的控件:ListView 之 (2) 加载数据时如何显示进度条的相关文章

XE7 & FMX 那些年我们一起上过的控件:ListView 之 (3) 加载数据时如何显示自定义样式

本文介绍一下ListView下如何加载数据.及使用进度条反馈当前进度给用户. 注意: 原创作品,请尊重作者劳动成果,转载请注明出处!!!原文永久固定地址:http://www.cnblogs.com/weii/p/4190719.html 我们先来看看效果图: FMX异常强大,我们可以发挥想像,自定义进度样式,以下为本文参考代码: procedure TForm1.Button3Click(Sender: TObject); var pe: TPie; //扇形作进度 rc: TRoundRec

控件WebView网页的加载

Android:控件WebView网页的加载 WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient setWebClient:主要处理解析,渲染网页等浏览器做的事情 setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 WebViewClient就是帮助WebView处理各种通知.请求事件的. 1.在Andr

背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(WebView) 加载指定 HttpMethod 的请求 自定义请求的 http header app 与 js 的交互 示例1.演示 WebView 如何加载指定 HttpMethod 的请求以及如何自定义请求的 http headerWebApi/Controllers/WebViewPostController.cs /* * 用于 WebView 演示“如何加载指定 HttpMethod 的请求,以及如何自

DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案

最近刚接触到 DevExpress 13.1 这个皮肤组件, 觉得相当好用 于是开始准备搭建 个小应用的主体框架. 找了好久的就是没找到对应的文章来讲解这一块.. 翻了他们主网站上人家问的,以及API 才摸索... 不懂英文好吃力呀~~~ 首先选到的就是,依旧用 Mdi子窗体模式加载子模块 第一步: 创建一个主 RibbonForm 为: ParentForm 1.1 设置 RibbonControl 属性 MdiMergeStyle 为: Always 第二步: 在左边拖入一个NavBarCo

easyui中 combogrid控件的loadData方法加载本地数据

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title

uwp开发:Pivot控件在加载数据时的一些细节性问题

最近在做一款汽车资讯.新闻.参数查询的客户端,里面多处用到了网络请求以及列表显示,所以我采用Pivot的方式显示各项的内容,如图所示: 但是每一项的网络请求Api是不同的,所以要发送不同的网络请求.由于Pivot是在同一个page下进行展示的,所以,我不得不考虑一个问题: 就是Pivot的这样的加载方式对数据请求到底是怎么影响的?多项是同时加载的吗?这样会对性能有要求吗? 带着这些疑问,我做了下测试,在每个PivotItem的Loaded事件处设置断点,进行调试,发现只要进入这个page,所有P

用Struts2实现文件上传时显示进度条功能

最近在做一个资源共享的项目中,采用了Struts2.1.8+Spring2.5.6+hibernate3.32的框架整合方式进行开发.在文件上传这块,因为需要实现文件上传时显示进度条的功能,所以尝试了一下.怕以后忘记,先贴出来分享下.   要在上传文件时能显示进度条,首先需要实时的获知web服务端接收了多少字节,以及文件总大小,这里我们在页面上使用AJAX技术每一秒向服务器发送一次请求来获得需要的实时上传信息.但是当我们使用struts2后怎么在服务端获得实时的上传大小呢?这里需要用到commo

c# winform 循环遍历界面上的所有控件,foreach,Controls,AllowDrop

foreach (System.Windows.Forms.Control control in this.groupBox2.Controls)//遍历groupBox2上的所有控件 { if (control is System.Windows.Forms.PictureBox) { System.Windows.Forms.PictureBox pb = (System.Windows.Forms.PictureBox)control; pb.AllowDrop = true; } if

C#在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级

首先在form1的窗体载入中新建了一个Class1对象并将本身的引用传递进入其构造函数,然后在Class1的构造函数中创建一个线程.该线程所代理的方法事件是本类中的一个add方法.而add方法的内容则是在form1上放一个textbox.然而这个流程你需要注意的有几个问题:1.哪个是主线程?所谓主线程是第一个启动的线程,是从main开始的.form1的这个窗体是由主线程创建的.2.Thread t的线程是什么?t是由主线程创建的,t的操作内容是在由主线程创建的窗体上放一个textbox.也就是说