저도 초보라서 히리님이 고민하는게 제 상식을 벗어나는거라 캐치를 못하고 있는것인지 잘 모르겠네요.
조심스럽게 끄적이자면...
원하는것이, 메세지 표시를 DB를 '불러오는 동안 내내' 하는 것인지
불러오는 동안 잠깐 보였다 사라지게 하는것 인지에 따라 다를것 같은데요.
전자라면 함수(DB_connect) 시작부분에 폼을 띄우고, 함수 종료 부분에 폼을 닫으면 된다는 말이었습니다.
후자일 경우, '정확히 몇초동안 보였다가 사라져야된다' 라면 타이머를 써야겠지만...
그게 아니라면 DB_connect 함수의 중간의 적절한 위치에서 폼을 닫으면 될것 같습니다.
고민하는게 이런게 아니라면 이 아래부터는 안보셔도 됩니다.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm *TmpForm = new TForm(Application);
TmpForm->BorderStyle=bsDialog;
TmpForm->BorderIcons >> biSystemMenu;
TmpForm->Height=200;
TmpForm->Width=300;
TmpForm->Position=poOwnerFormCenter;
TLabel *TmpLabel = new TLabel(Application);
TmpLabel->Parent=TmpForm;
TmpLabel->AutoSize=false;
TmpLabel->Top=50;
TmpLabel->Width=TmpForm->ClientWidth;
TmpLabel->Height=30;
TmpLabel->Alignment=taCenter;
TmpLabel->Font->Size=15;
TmpLabel->Caption="DB를 불러오는 중입니다.";
TProgressBar *TmpProgressBar = new TProgressBar(Application);
TmpProgressBar->Parent=TmpForm;
TmpProgressBar->Width=TmpForm->ClientWidth-40;
TmpProgressBar->Left=20;
TmpProgressBar->Top=100;
TmpProgressBar->Position=0;
TmpProgressBar->Min=0;
TmpProgressBar->Max=50;
TmpForm->Show();
//함수 시작
TDateTime A=Now();
double mSec=1.0/24/60/60/10;
while(TmpProgressBar->Position<50) {
double B=Now()-A;
if (B>=mSec) {
TmpProgressBar->Position++;
A=Now();
}
}
//함수종료
TmpForm->Close();
delete TmpProgressBar;
delete TmpLabel;
delete TmpForm;
}
메세지를 보여주고, 0.1초 단위로 Progressbar가 증가하게 하며, 5초뒤에 메세지를 닫는 코드인데
함수시작/종료 사이부분을 DB_connect라고 생각하시면 되겠습니다.
TmpProgressBar->Max 에 DB_connect에서 총 반복되는 for문의 Count를 넣고
그 for문 안에 'TmpProgressBar->Position++'를 넣어주시면 되겠습니다.
시작 시에 총 for문 Count를 모른다면 TmpProgressBar 설정 부분에
TmpProgressBar->Style=pbstMarquee; 를 추가하시거나
ProgressBar를 안쓰시면 될듯 합니다.
이상 불금에 잠은 안오는데 할게 없는 초보 오지라퍼 였습니다.
히리 님이 쓰신 글 :
: 흠 그걸 타이머를 이용해서 해야하는지 어떤 컴포넌트를 이용해서 해야하는지 잘 모르겠습니다 ㅠ..
:
: 빌더초보 님이 쓰신 글 :
: : 그냥 간단하게 시작할때 폼 띄우고 끝날때 닫으면 되지 않을까... 하고 지나가던 초보가 생각해봅니다.
: :
: : 히리 님이 쓰신 글 :
: : : DB를 불러오는동안 (예를들어 DB_connect라는 함수를 실행시키는 동안)약간 시간이 걸리는 사이에 "DB를 불러오는중입니다." 이런 메세지가 표시된 창을 띄우고싶은데 Timer를 이용해야 할지 어떡해야할지 잘 모르겠네요..초보라;TTimer를 이용해야 한다면 방법을 좀 알려주시면 감사하겠습니다 ...