Q&A

  • ListView 자동으로 뜨는 풍선 도움말(?)을 막을 수 없나요?
항상 많은 도움을 받고 있습니다. 감사드립니다.

ListView 에서
지정된 길이보다 많은 텍스트 내용이 들어간 컬럼 리스트에 마우스를 오버하면
모든 내용을 보여 주려고 길다랗게 Hint 가 표시됩니다.
그런데, 오래 보여주지 못하고 깜빡거리고 사라져 버리네요..

그래서 풍선 도움말 소스를 찾아 적용했습니다만,
풍선 도움말도 뜨고 원래 보여지는 Hint(?) 가 계속 깜빡거리며 표시됩니다...
원래 보여지는 Hint(?)를 막고 싶은데.. 방법이 없나요?

참고로 풍선 도움말 소스 적용하면서
ListView.Hint := ListItem.SubItems[1];
ListView.ShowHint := True;
를 적용했습니다.

풍선 도움말 소스를 막고
ShowHint 를 False 로 해도
원래 보여지는 Hint(?)는 계속 나타납니다.
Properties, Events 어디서 제어를 해야하는지...


*원래 보여지는 Hint(?) - 뭐라고 표현해야하는지 잘 몰라서 이렇게 썼습니다.
6  COMMENTS
  • Profile
    장성호 2008.08.22 19:40
    Delphi의 힌트는 TApplication 객체에서 관리합니다.

    그런데 TListView는 win32 컨트롤을 슈퍼클래싱한것인데 subitem에 mouse가 갈경우 자동으로 Hint가 뜨더군요
    ListView.ShowHint , ListVeiw.Hint 는 Application에서 관리하는 hint를 띄워 줄것인가 말것인가에 대한 것이구요


    ListView이 SubItems에서 default로 띄는 Hint를 막는방법에 대해 VCL에서는 인터페이스를 제공하지 않는것 같습니다.

    저도 오늘 안것인데
    다음과 같이 하면 subItem에 Default로 띄는 Hint를 막을수 있습니다.

    <!--CodeS-->
    SendMessage(ListVeiw1.Handle, LVM_SETTOOLTIPS, 0, 0);
    <!--CodeE-->

    맨 마지막 LParam이 tooltip윈도우 Handle을 넘겨줘야 하는데 0로 하면 nil을 넘겨서 그런지 않뜨더군요

    참조
    target=_blank>http://msdn.microsoft.com/en-us/library/aa453518.aspx


    그럼..
  • Profile
    장성호 2008.08.22 20:00
    아 방금 정확한 방법을 찾았습니다.

    위 방법으로 해도 되긴 되지만 꼼수이구...

    아래와 같이 하시면 됩니다.

    <!--CodeS-->

    //ListView Subitem의 Default tooltip 없애기
    procedure TForm1.Button5Click(Sender: TObject);
    var
    exStyle: Cardinal;
    begin
    exStyle:=ListView_GetExtendedListViewStyle(ListView1.Handle);
    exStyle:=exStyle and (not LVS_EX_INFOTIP);
    ListView_SetExtendedListViewStyle(ListView1.Handle,exStyle);
    end;


    //ListView Subitem의 Default tooltip 설정함수
    procedure SetListViewSubItemToolTip(ListView : TListView; bInfoTip: boolean);
    var
    exStyle: Cardinal;
    begin
    exStyle:=ListView_GetExtendedListViewStyle(ListView.Handle);
    if bInfoTip then
    exStyle:=exStyle or LVS_EX_INFOTIP
    else
    exStyle:=exStyle and (not LVS_EX_INFOTIP);

    ListView_SetExtendedListViewStyle(ListView.Handle,exStyle);
    end;

    <!--CodeE-->
  • Profile
  • Profile
    이종운 2008.08.23 01:04
    장성호님 답변 정말 감사합니다.

    그런데, 제가 짧은 델파이 경력으로 어떻게 써야 할지.. 잘 몰라서요...

    ListView_GetExtendedListViewStyle, ListView_SetExtendedListViewStyle
    이 두함수는 어떤 Unit 을 참조해야하는지 잘 몰라서..

    볼포에 올려놓으신 내용을 참조로
    LVM_FIRST = $1000;
    LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
    LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST ++ 55;
    LVS_EX_INFOTIP = $400;
    선언해서

    SendMessage 로 처리했습니다.(잘됩니다..)

    ListView_GetExtendedListViewStyle, ListView_SetExtendedListViewStyle
    이 두 함수를 바로 이용할 수 있나요??

    아.. 질문하면서도.. 질문을 제대로 하고 있는지 당황스럽습니다. ^^;?
  • Profile
    장성호 2008.08.23 01:24
    유닛 commctrl 에 있습니다.

    uses commstrl ;

    그럼..
  • Profile
    이종운 2008.08.25 20:18
    장성호님 답변 감사합니다.
    좋은좋은 하루 되세요~ 꾸벅!
    • 박상윤
      2008.10.03 01:24
      mediainfo 라는 오픈소스가 있습니다.. 모두다 된다고 볼수는 없만.. 거의 대부분 찾아 냅니다. 검색해...
    • 이정욱
      2008.08.27 10:44
      PPT는 모르고...Flash 생성은... Delphi Flash 컴포넌트를 이용해서 가능한것으로 알고 있습니다 ^^; 흉...
    • 박성준
      2008.08.27 19:02
      PPT 이어야 합니다. ^^ 그런데, Flash라... 음... 고민해봐야 될 문제 인 것 같습니다.
    • 누룽지
    • 2008.08.23 00:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.08.24 08:32
      자도 오늘 트라이얼을 설치 했는데 pdf 파일이 있던데요. 그걸 읽어 보시면 될 것 같습니다.
    • 김호정
    • 2008.08.22 21:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임대순
      2008.09.03 01:46
      예전 저하고 비슷한 경우인거 같네요... 우선은 먼저 비교부분이 애매모 합니다. 가령 한 예로 들...
    • 민영창
    • 2008.08.22 20:08
    • 0 COMMENTS
    • /
    • 0 LIKES
    • steps
    • 2008.08.22 01:21
    • 5 COMMENTS
    • /
    • 0 LIKES
    • steps
      2008.08.22 02:49
      아래 코드로 걍 맞춰놓긴 했는데요. repeat until을 쓴게 보기 싫습니다. 웹브라우저를 쓰지않고 인디...
    • 이정욱
      2008.08.22 05:38
      http 프로토콜에 대해서 조금 더 알아보셔야 합니다. 인터넷 익스플로러에서 로그인 했다고 해서, 오...
    • steps
      2008.08.22 05:51
      정욱님 답변 감사드립니다. 로그인 한후에 쿠키를 리용하려면 iddhttp의 AllowCookies를 true로 해주고 ...
    • 이정욱
      2008.08.24 08:24
      쿠키 메니저를 달고, 로그인 절차를 거치셔야 합니다. Post 방법으로 로그인 절차를 해보시구요 ^^
    • steps
      2008.08.24 19:54
      이정욱님 감사합니다.
    • 이종운
    • 2008.08.22 00:13
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.08.22 19:40
      Delphi의 힌트는 TApplication 객체에서 관리합니다. 그런데 TListView는 win32 컨트롤을 슈퍼클래싱...
    • 장성호
      2008.08.22 20:00
      아 방금 정확한 방법을 찾았습니다. 위 방법으로 해도 되긴 되지만 꼼수이구... 아래와 같이 하시...
    • 장성호
      2008.08.22 20:26
      참고하세요 http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=795
    • 이종운
      2008.08.23 01:04
      장성호님 답변 정말 감사합니다. 그런데, 제가 짧은 델파이 경력으로 어떻게 써야 할지.. 잘 몰라서요...
    • 장성호
      2008.08.23 01:24
      유닛 commctrl 에 있습니다. uses commstrl ; 그럼..
    • 이종운
      2008.08.25 20:18
      장성호님 답변 감사합니다. 좋은좋은 하루 되세요~ 꾸벅!
    • 최용일
      2008.08.21 22:34
      그냥 const로 선언하세요. 너무 기니까 줄을 바꿔서 쓰시면 됩니다. 문자열 연결은 +로 하시구요. co...
    • 박정순
      2008.08.22 01:38
      저는 <!--CodeS--> const LongConst = 'data1 data2 data3'; <!--CodeE--> 이렇게 ...
    • 김호정
    • 2008.08.21 06:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이윤도
      2008.08.27 05:25
      procedure TForm1.RealGrid1DrawCell(AColumn: TwColumn; ARow: Integer; var Text: String; var BC...
    • 아르스
    • 2008.08.20 21:04
    • 3 COMMENTS
    • /
    • 0 LIKES
    • steps
      2008.08.20 21:16
      str := 'aaa/bb/ccc/ddddd'; rstr := reversestring(str); result := reversestring(copy(rstr, 1, p...
    • 이정욱
      2008.08.20 21:18
      function ExtractLast(const Str: string): string; var I: Integer; begin I := LastDelimite...
    • 아르스
      2008.08.20 21:24
      감사합니다. reversestring() 이랑 LastDelimiter() 이 있었군요...
    • 안학순
    • 2008.08.19 23:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이종탁
      2008.08.26 20:37
      DBGrid 는 테이블에 대한 일종의 터미널 같은 기능이니 Query 객체로 조작하면 됩니다. DB 종류나 Que...
    • 혀노
    • 2008.08.18 23:20
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.08.19 18:45
      그냥 중학교 정도의 간단한 수학인데.... 800:축소된높이=원본너비:원본높이 축소된높이=800*원본높...
    • 혀노
      2008.08.19 19:15
      축소 길이 계산이 문제가 아니라 축소되어서 저장이 안되어서_- (소스 적힌 축소 길이는 그냥 적은거)
    • 최용일
      2008.08.19 19:25
      음... 특정필드의 값의 표시를 바꿀려면 OnGetText이벤트에서 바꾸세요.... procedure TForm1.Table...
    • steps
      2008.08.17 02:50
      image321이름이나 .bitmap.handle을 쓴걸 봐선 graphics32를 쓰신것같은데 왜 bitblt를 쓰시는지요? 걍 ...
    • 신디
      2008.08.17 20:29
      아 . 그렇군요 이런 방법이 있었네요. 감사합니다.^^
    • steps
    • 2008.08.14 23:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.08.14 23:48
      is연산자는 쓸 수 없습니다. 트리뷰 노드의 Data에 들어가는 레코드형에 레벨에 따라 동적으로 자료가 ...
    • steps
      2008.08.15 00:40
      용일님 정말 감사합니다.
    • 최용일
      2008.08.14 22:08
      Base64 인코딩/디코딩하는 모듈은 이미 많이 나와 있습니다. 굳이 ASP를 델파이로 변경해서 쓸 필요없이...
    • 최길남
      2008.08.14 22:51
      이미 검색은 다해보고 여러가지 다운로드해서 테스트도 해봤습니다. 그런데 자료실에 있는 모듈과 결과가...
    • 최용일
      2008.08.14 23:01
      흠... 저건 어느 언어로 코딩해도 똑같을 수 밖에 없는데... 어떻게 다르나요? 혹시... ASP니까 웹에서...
    • 최길남
      2008.08.14 23:29
      1234 를 Base64 인코딩하면 MTIzNA== 라고 나와야 하는데요. 위 ASP 함수는 OVK1PECi ...
    • 최용일
      2008.08.15 00:33
      음... 다른 결과가 나오는군요.... 쩝~ 최대한 기본 틀을 안바꿀려고 했는데 언어상의 차이 때문에 좀...
    • 최길남
      2008.08.15 00:46
      정말 감사합니다.. 좋은 하루 되세요.. ^_^
    • 반민석
      2010.04.16 17:18
      이싸이트 참고 하세요 : http://www.delphi3000.com/articles/article_3404.asp?SK=base64