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

델파이 팁&트릭
Delphi Programming Tip&Tricks
[212] TStatusBar 각 패널마다 힌트 다르게 보이려면...
DrK [whitekid] 4213 읽음    2007-05-30 16:24
StatusBar에 가각의 패널마다 다른 힌트를 보여주고 싶을때가 있습니다.
그래서 OnHint 이벤트에다가 적당해 해주려고 하면 무슨 문제가 있는지 않됩니다.
구글링 해서 좀 살펴보니.. AutoHint를 True로 설정하면 된다고하는데.. 그래도 안됩니다.

그래서 Application.OnHint 또는 TApplicationEvent 콤포넌트를 사용해서 하면 되지만 StatusBar에 무슨 문제가 있는지 뒤져보기로 맘 먹고.. 뒤져보니깐... TControl.CMHintWindow 프러시저에서 ActionLink가 없으면 DoHint를 호출하지 않더군요.. 음.. 그런데 대부분 StatusBar에 Action을 지정하고 쓰지는 않으니깐.. CMHintShow 이벤트를 Override해서 적당히하면 되겠다 싶어서 간단히 만들어 봤습니다.

TStatusBar에서 CMHintShow를 다음과 같이 Override하면 됩니다.
procedure TStatusBar.CMHintShow(var Message: TMessage);
begin
    if Assigned(OnHint) then
    begin
      OnHint(self);

      with TCMHintShow(Message) do
      begin
        HintInfo.HintStr := Hint;
        Result := Integer(Hint = '');
      end;
   end else
      Inherited;
end;


예제는 파일로 첨부했습니다. 예제에서는..

- 위처럼 TStatusBar를 다시 만들어서 한다고 새 콤포넌트를 만들어서 작업하는 것은 낭비여서 Form에 설정된 TStatusBar를 그대로 두고 새 기능이 추가된 새 클래스를 넣었습니다.
- TStatusBar는 윈도우에서 제공하는 몇가지 기능을 그대로 표현하지 않아서 PanelAt()이라는 Helper 함수를 추가했습니다.

+ -

관련 글 리스트
212 TStatusBar 각 패널마다 힌트 다르게 보이려면... DrK 4213 2007/05/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.