constructor TProgressThread.Create(AfmWaitting:TfmWaitting);
begin
  if Assigned(AfmWaitting) then        //等待窗口,等待窗口上有一ProgressBar1控件
     FfmWaitting:=AfmWaitting;
  inherited Create(True);
  FreeOnTerminate := True;
end;procedure TProgressThread.Execute;
begin
  { Place thread code here }
    With FfmWaitting do
    begin
      if ProgressBar1.Position>100 then
         ProgressBar1.Position:=1            //重置位置
      else
        ProgressBar:=Position+1;             //移动1个单位
    end;
end;调用方法
procedure TfmWaitting.FormCreate(Sender: TObject);
begin
  ProgressThread.Execute;
  ProgressThread.
end;
进度只移动一格就不动了.

解决方案 »

  1.   

    ProgressBar.Position:=ProgressBar.Position+1;
      

  2.   

    你的Execute方法内没有循环,执行一次就结束了啊。
    procedure TProgressThread.Execute;
    begin
      { Place thread code here }
      while not Terminated do begin
        With FfmWaitting do
        begin
          if ProgressBar1.Position>100 then
             ProgressBar1.Position:=1            //重置位置
          else
            ProgressBar:=Position+1;             //移动1个单位
        end;
      end;
    end;
      

  3.   

    ProgressBar1.Position:=ProgressBar1.Position+1;
      

  4.   

    加了循环,出现这样的问题,如果在Form.Create事件中创建并执行,该线程,则主窗口无法显示
    procedure TfmWaitting.FormCreate(Sender: TObject);
    begin
      创建线程
      线程.Execute   显示状态
      .............
    end;
      

  5.   

    在FormCreate中,Form刚被创建,还没有被显示出来呢.
      

  6.   

    那线程应该在Form的哪一个事件中创建呢?