IE를 보면 이미지나 글위에 마우스 커서가 가면
IE맨 아랫쪽 StatusBar에 url이나 설명 등이 나타납니다.
이와 비슷하게 VCL(C++Builder / Delphi)에서 발생하는 모든 힌트를
TStatusBar에 표시하고 싶으시다면 ...
다음과 같은 방법을 이용해 보세요
방법1
1.1 TStatusBar를 Form위에 올려둡니다.
(StatusBarPanel을 추가해도 되구 안해두 되구..)
1.2 StatusBar의 Property중 AutoHint를 true로 해줍니다.
StatusBar1->AutoHint = true ;
그럼면 Application에서 발생하는 모든 힌트가 StatusBar에 표시됩니다.
방법2
; StatusBar->AutoHint=true를 이용할경우 힌트는
StatusBarPanel[0] 에만 표시됩니다.
만약 StatusBarPanel[0] 가 아닌 다른데 표시하고 싶다면 ... 다음과 같이...
2.1 StatusBar의 AutoHint를 true로 하구요
2.2 StatusBar의 OnHint 이벤트 핸들러에서 다음과 같이 코딩하시면 됩니다.
void __fastcall TForm1::StatusBar1Hint(TObject *Sender)
{
StatusBar1->Panels->Items[1]->Text = Application->Hint;
}
방법3
; 방법2와 같은 목적인데 StatusBar의 OnHint이벤트가 아니라
Application->OnHint 이벤트 핸들러를 이용해서도 같은 결과를 얻을수 있습니다.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnHint=AppOnHint;
}
void __fastcall TForm1::AppOnHint(TObject *Sender)
{
StatusBar1->Panels->Items[1]->Text = Application->Hint;
}
방법4
만약 StatusBar의 AutoHint=true 이구 Application의 OnHint이벤트 핸들러도 걸려있으면
어떻게 될까요?
위의 경우 Application의 OnHint이벤트 핸들러만 호출됩니다.
마약 Application의 OnHint 이벤트 핸들러도 호출되구
StatusBar의 AutoHint도 동작하게 하려면 어떻게 하면 될까요?
그건 다음과 같이 THintAction을 이용해서 할수 있습니다..
//c++Builder
void __fastcall TForm1::AppOnHint(TObject *Sender)
{
StatusBar1->Panels->Items[2]->Text = "Hint2:"+Application->Hint;
//HintAction을 생성해서 호출해줌
THintAction *HintAct=new THintAction(Application);
HintAct->Hint=Application->Hint;
HintAct->Execute();
delete HintAct;
}
THintAction 동작에 대한 설명은.... 다음에...
참조
http://cafe.naver.com/bcbmaster/627
http://delphi.about.com/od/delphitips2008/qt/hint_statusbar.htm
그럼..