|
전 그냥 이렇게 가볍게 구성했던 경우가 있어서 부분 소스를 한번 올려봅니다.
DB에서 레코드를 읽어올 때 보여줄 ProgressBar 폼을 만들고
이 폼이 보여질 동안 메인폼은 Disable로 만들어 버리면
완료될 때까지 ProgressBar 폼을 계속 보여줄 수 있습니다.
꼼수라고 해야 되나.. 뭐.. 그렇습니다. ㅋㅋ
아래 소스에서 DMSet은 데이터 모듈의 이름이었고,
ProgressBar는 Progressbar가 있는 폼의 이름입니다.
while문 내에서 Form의 Setfocus()를 사용하여 다른 곳으로 벗어나지 못하게 ㅋㅋㅋ
Disable과 Enable은 단순히 메인폼의 Enabled속성을 바꿔주는 함수입니다.
참조하시면 영광입니다..>^^<
int index=0;
int RecordCnt = DMSet->GetRecordCount();
int Step = 1; // devide Error 방지
if(RecordCnt > 10) Step = RecordCnt/10;
TProgressForm *ProgressBar = new TProgressForm(this);
ProgressBar->Initialize(index, RecordCnt, index, Step, "Importing data from Server...");
Application->NormalizeTopMosts();
ProgressBar->Show();
Application->RestoreTopMosts();
Disable();
DMSet->First();
while(!DMSet->IsEOF())
{
DMSet->GetData(RawD);
TransData->SetData(index++, RawD);
DMSet->Next();
if(!(index % Step)) ProgressBar->StepIt();
ProgressBar->SetFocus();
Application->ProcessMessages();
}
ProgressBar->Close();
delete ProgressBar;
Enable();
|