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

델파이 팁&트릭
Delphi Programming Tip&Tricks
[215] 비스타의 프로그래스바 번쩍임 없애기 - 치환 트릭.
김도완 [purplecofe2] 4352 읽음    2007-06-18 12:39
기존의 패치들을 보면 VMT를 얻어서 테이블을 수정하거나 하는 등의 복잡한 방법이지만, 이 새로운 트릭에서는 이러한 구현없이 수정없이 그냥 간단한 구현 유닛을 uses 절 맨 마지막에 추가하는 것만으로 쉽게 해결을 할 수 있습니다.

실질적인 패치 코딩에서도 아주 간단하게 구현을 할 수 있습니다. 따로 패치를 위한 추가적인 코드도 필요없게 됩니다.

unit HVProgressBarVistaFix;

interface

uses Messages, ComCtrls;

type
 TProgressBar = class(ComCtrls.TProgressBar) // 이곳의 선언이 이 코드의 핵심. 새로 선언된 아래의 핸들러가 적용됩니다.
 private
   procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); 
     message WM_ERASEBKGND;
 end;
 
implementation

procedure TProgressBar.WMEraseBkgnd(var Message: TWmEraseBkgnd); 
begin
 DefaultHandler(Message);
end;  

end.


사용 방법은
uses
 Windows, Messages, SysUtils, Variants, Classes, 
 Graphics, Controls, Forms,
 Dialogs, ComCtrls, StdCtrls, HVProgressBarVistaFix;


일반적으로 우리들은 이 문제를 해결하기 위해 TProgressBar를 계승해서 이러쿵저러쿵 해야 한다고 생각할 것입니다. 하지만 유닛 이름을 머리에 붙인 클래스 이름을 사용하면 기존의 해당 클래스를 치환하는 효과가 일어납니다.


참고하시길.

내용 출처 : http://hallvards.blogspot.com/2007/04/hack16-published-field-rtti-replacement.html

+ -

관련 글 리스트
215 비스타의 프로그래스바 번쩍임 없애기 - 치환 트릭. 김도완 4352 2007/06/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.