아마도 윈도우7 혹은 윈도우 비스타 환경이신 것 같네요.
팁 게시판에 정리해서 올렸으니 참고하세요.
http://delphi.borlandforum.com/impboard/impboard.dll?action=read&db=del_tip&no=284
참고로, 보여주신 코드에서 중간중간 두번에 걸쳐 Update를 호출하셨는데요. 앞에 객체 이름이 없으니 폼의 Update를 호출하신 건데, 여기서는 아무런 역할도 하지 않습니다. ProgressBar와 Label의 업데이트는 그 뒤의 Application.ProcessMessages에서 처리가 되죠.
별중검 님이 쓰신 글 :
: procedure TForm1.Button1Click(Sender: TObject);
: var
: i: Integer;
: begin
: ProgressBar1.Step := 20;
:
: for i := 1 to 5 do
: begin
: sleep(500);
:
: ProgressBar1.StepIt;
: Update;
:
: Label1.Caption := IntToStr(ProgressBar1.Position) + '%';
: Update;
:
: Application.ProcessMessages;
: end;
: end;
:
: 위와 같이 작성하고 실행해 보면 Label에 20%가 찍힐 때 프로그래스바는 0이고, Label이 40%되면 그 때서야 프로그래스바가 20이 됩니다.
:
: 프로그래스바가 1 스텝만큼 계속 느린데, 이유가 뭘까요? ㅠㅠ
|