천객만래 [千客萬來] (It has an interminable succession of visitors)
[Delphi] TWebbrowser 의 찾는 문자열에 형광팬 효과 주기   델파이 
2009/11/04 17:40
http://blog.naver.com/yagyu82/92553070
uses 절에는 MsHTML 을 추가합니다. 그리고 함수는 다음과 같습니다.

var
  tr: IHTMLTxtRange;
begin
  tr := ((WebBrowser.Document as IHTMLDocument2).body 
as IHTMLBodyElement).createTextRange;

while tr.findText('찾는 문자열', 1, 0) do
  begin
    tr.pasteHTML('<span style="background-color: Lime; font-weight: bolder; font-size: 30">' 
+ tr.htmlText + '</span>');

    tr.scrollIntoView(True);
  end;
end;

즉 tr 에 TWebbrowser 내부의 로딩된 도큐먼트를 IHTMLDocument 2로 반환해서 해당 html 의 body 테그에 해당하는 부분, 즉, 본문 내용을 저장합니다.

이후 while 문으로 tr 의 findText 함수로 문자열을 검색합니다.

tr 의 htmlText 함수로 해당 문자열을 알수 있으며 pasteHTML 로 앞 뒤에 형광팬 효과를 위한 태그를 추가합니다.

tr.scrollIntoView 는 해당 위치로 자동 스크롤 하는 명령입니다.

즉, 형광효과란, 해당 문자열을 찾아서 문서에 임의의 테그를 추가하여 문서를 변화시키는 방법입니다.

당연히 해당 테그를 수정하면 사이즈, 배경색, 기울임 효과등도 추가할 수 있습니다.

다시 원 문서로 돌리고 싶으시다면 Webbrowser.ReFlesh() 해주세요

당연히 원래 문서를 재 로딩하고, 효과는 취소됩니다.

이 코드를 이용하면 익스플로러 툴바 중 알툴바의 형광팬 효과와 똑같이 구현할 수 있습니다


Posted by SB패밀리
#pragma warning 사용

# import를 Mshtml.tlb 사용하는 Visual C++ 프로젝트를 빌드하는 C4192, C4049, 및 C4146 다양한 형식의 컴파일러 경고 발생할 수 있습니다.
 
경고 C4192: '' c:\winnt\system32\mshtml.tlb' 형식 라이브러리를 가져오는 동안 자동으로 wireHDC' 제외
C4146 경고: 단항 마이너스 연산자 결과 여전히 서명되지 않은 부호 없는 형식에 적용되는
 
이러한 경고가 모두 MSHTML 형식 라이브러리 내의 기본 조건에 표시에 다음과 같습니다.
 
- C4192 "C4192" 설명서에서 설명된 것처럼 일반적인 경고.
- C4049는 Mshtml.tlb의 큰 크기에서 발생합니다.
- C4146은 FINDTEXT_FLAGS 열거형에서 음수 기호 사용 표시입니다.
   이 MSHTML 형식 라이브러리에 있는 낮은 영향 버그, 무시할 수 있습니다.
 
이러한 경고를 무시하거나 # pragma # Mshtml.tlb 가져오는 동안 못하게 할 수 있습니다.
 
#pragma warning(disable : 4192)
#pragma warning(disable : 4049)
#pragma warning(disable : 4146)
#import <mshtml.tlb>
#pragma warning(default: 4192)
#pragma warning(default: 4049)
#pragma warning(default: 4146)
Posted by SB패밀리