C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[71853] Re:폼 로딩시에 게이지로 진행률 보여주려 하는데 안되네요.ㅠ
빌더초보 [starwagon] 3381 읽음    2014-10-10 21:36

	class TTest : public TForm {
	public:
		TTimer *Timer1;
		TProgressBar *pb;
		int n,nMax;

		__fastcall TTest(TComponent* Owner):TForm(Owner,1) {
			pb = new TProgressBar(Owner);
			pb->Parent=this;
			pb->Position=0;


			Timer1 = new TTimer(Owner);
			Timer1->Enabled=false;
			Timer1->Interval=100;
			Timer1->OnTimer=ATimer;
			this->OnShow=testOnShow;

		}

		void __fastcall testOnShow(TObject *Sender) {
			n=0;
			pb->Position=n;
			pb->Max=nMax;
			Timer1->Enabled=true;
		}

		void __fastcall ATimer(TObject *Sender) {
			if (n < nMax) {
				pb->Position=n+1;
				//쿼리작업
				n++;
			}else {
				//쿼리가 끝났을 때 작업
				Timer1->Enabled=false;
				ShowMessage("End");
				pb->Visible=false;
			}
		}
	};

	TTest *a = new TTest(Application);
	a->nMax=20;
	a->ShowModal();




생성자에, 0부터 nMax만큼 쿼리를 수행하며 ProgressBar를 갱신하는 타이머를 생성하고,
OnShow에 Timer를 시작하는 함수를 대입한 클래스 입니다.

폼에 버튼하나 올리시고 긁어 붙여서 테스트 해보시면 됩니다.

저도 예전에 궁금했던건데 'Starlet'님 에게 타이머라는 힌트를 얻어서 한번 구현해 보았습니다.
도움이 되었으면 하네요.




김창환 님이 쓰신 글 :
: 폼을 열기 전에 쿼리를 많이 돌려서 보여줄 값을 긁어와야 합니다.
:
: 이러한 이유로 OnShow() 이벤트에 쿼리를 넣고 돌리고 있는데, 시간이 너무 많이 소요되다 보니 FlatGauge를 올려놓고 진행상황을 표시해주려 했습니다.
:
: 그런데 OnShow() 에 있는 쿼리가 모두 끝나기 전에는 폼이 보여지지도 않고, 결과적으로 폼 위에 얹어둔 게이지도 나중에서야 처리가 다 끝나고 폼이 보여지면 그 때 100%로 보여진다는거죠.
:
: 혹시 도움이될까 해서
:   Gauge1->Refresh();
:   Application->ProcessMessages();
:
: 위 코드를 추가 해봤는데도 여전히 OnShow() 내의 처리가 다 끝난 뒤에 보여지고 있습니다.
:
: 이러한 문제를 해결하려면 어떻게 접근해야할까요?
: 이리저리 해봐도 해결책이 보이지 않아 도움을 청합니다.ㅠ

+ -

관련 글 리스트
71840 폼 로딩시에 게이지로 진행률 보여주려 하는데 안되네요.ㅠ 김창환 3215 2014/10/07
71853     Re:폼 로딩시에 게이지로 진행률 보여주려 하는데 안되네요.ㅠ 빌더초보 3381 2014/10/10
71860         Re:Re:폼 로딩시에 게이지로 진행률 보여주려 하는데 안되네요.ㅠ kimchpekr 3388 2014/10/12
71845     Re:폼 로딩시에 게이지로 진행률 보여주려 하는데 안되네요.ㅠ Starlet 3237 2014/10/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.