一个form 进行数据转换,时间很长,我放了一个 progressbar 在上面,怎么样做一个线程让progressbar 显示它的进度?

解决方案 »

  1.   

    to iivv
      怎么做?
      

  2.   

    参考一下这个小程序:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j:integer;
    begin
      ProgressBar1.Max:=100;
      ProgressBar1.Position:=0;
      for i:=1 to 100 do
      begin
        for j:=-999999 to 999999 do ;
        ProgressBar1.Position:=ProgressBar1.Position+1;
      end;
    end;
    也就是你的导数据之前,要给ProgressBar1.Max和 ProgressBar1.Position赋值
    然后在导的过程中,增加ProgressBar1.Position就可以了
      

  3.   

    高手死光光!???????????????
    我是低受,不敢说了5~~~~~~~~~~~
    生成新的线程mythread;
    unit mythread;
      .....
    private 
      lpb:TPROGRESSBAR;
      lcurpos:integer;
      lallpos:integer;
    ....
    CONSTRUCTOR ......CREATE(PB:Tprogressbar; curpos:integer; allpos:integer);
    ..........
    CONSTRUCTOR ......CREATE(PB:Tprogressbar; curpos:integer; allpos:integer);
    begin
     lpb:=pb
     lcurpos:=curpos;
     lallpos:=allpos;
    freeonterminated:=true;
    inherited;
    end;
    .....unit1;
    .....
    将线程中的变量与窗体控件关联,剩下的看你了。
    呵呵~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    我是低受
    ppppppppppppppppppppppppppppppppppppppp
      

  4.   

    哈哈,5个开玩笑,我却你2个算了,5个容易出现问题的!不知道你是不是
    进行数据的查询?我做过一个数据的查询,把查询分成2个分别存到2个临时表里然后在union起来。用2个,用3个时候效率好象就不是很好了!