我的程序因为要读大量的数据库,启动时比较慢,大概要12-15s,所以我想在程序启动时在启动界面上做一个progressbar进度条.
  我该怎么做? 主要问题是怎样实现在程序启动时(主程序初始化时)进度条的position的累加.
  急用,谢谢!

解决方案 »

  1.   

    在主程序中实例一个DIALOG,每完成一部分工作后让该dialog中的PROCESSBAR刷新显示。
    最后FREE 该DIALOG.用不着很精确的,其实我认为做不到100%的精确。
      

  2.   

    主要是确定用什么变量。可以将记录的总记录条数作为总长度,然后将下将进度不断设置到position上看可以吗?
      

  3.   

    没有个具体时间的控制,只能粗略的估计,启动后显示满就OK了.
    在初始化主程序的过程中,添加Progressbar的进度控制,然后Refresh就OK了
      

  4.   

    如果你用ADO就好办了
    TADODataSet.OnFetchProgress在这个事件中可以知道取数据的进度
      

  5.   

    有点苯,不过我找不到好方法
    先用Gettickcount计算得出启动时间,
    然后再设计时设置一常量来代表启动总时间
    再用定时器根据已执行时间和总时间比较设置进度条。
      

  6.   

    to 
    有点苯,不过我找不到好方法
    先用Gettickcount计算得出启动时间,
    然后再设计时设置一常量来代表启动总时间
    再用定时器根据已执行时间和总时间比较设置进度条。该方法和我当时的想法一样,但是timer好像在主程序create的时候没有触发,等到主程序create完后才触发,这样的话我程序都启动完了,进度条才显示进度,这样岂不没有意义了吗?
    有没有好的方法解决这个问题
      

  7.   

    我说的是先用Gettickcount得出系统试运行启动的时间,然后再重新设计代码
    将启动时间赋值一常量,再在定时器里根据这个常量来设置progressbar,当然只是大概了!
    因为以后启动数据库连接的时间会增长(如果你启动时连接数据库的话)
      

  8.   

    起动..
    连接数据库.
    progressbar.max:=数据记录数.
    while not **.eof do begin
     处理记录后
     inc(progressbar.position);
    End;。
    就这样!