본문 바로가기

어떻게 할까

VISTA 에서 DELPHI로 제작된 프로그램이 ALT 키로 생기는 버그 해결법.

얼마전에 소규모 개인 프로젝트를 만드는 노트북을 새로 사고 VISTA 로 OS 를 설치 한 후 ..
새로 라이센스를 받은 DELPHI로 기존 프로젝트를 재빌드 하고 테스트 하던중 ..
놀라운 사실을 발견 하였습니다.

그저 .. ALT 키를 눌렀을 뿐인데 .... 컨트롤들이 폼에서 사라져 버리는 것 이었습니다 !

아놔 !!!

사용자 삽입 이미지

정말 ALT 키만 눌렀어요 !!!


그래서 바로 코드기어에 가 보니 .. 이런 문제가 이미 다른 사용자들로 부터 포스팅 되어 있어서 해결책이 나와 있었습니다. 여러가지 방법이 있을수 있지만 대략 문제의 원인은 윈도우의 common control 6.0 에서 새로 추가된 메시지가 있는데 이걸 델파이에서 쓰는 컨트롤 유닛들이 처리를 못하는 문제였습니다.

ALT 키 하나로 끔찍한 일이 발생 하는 것 이었죠.

해결방법은 간단합니다.
일일히 컨트롤 유닛을 관장하는 수많은 유닛을 수정 하거나 ..
코드기에어 올라온 소스코드를 그저 unit 에 선언하고 Form Create 시 같이 덩달아 생성해 주냐 ...
그 차이가 되겠습니다 -_-; 어느게 편할지는 직접 선택 하실수 있겠죠 ..

위 파일을 먼저 다운로드 받아서 압축을 해제 하면 VistaAltFixUnit.pas 파일이 하나 나옵니다.
이걸 BDS 또는 Delphi 의 Lib 폴더에 복사합니다. (다른곳에 복사 하시더라도 unit 선언부에 적용 될 수 있는 위치면 상관 없겠습니다).

그리고 해당 어플리케이션 의 unit 선언부에 다음 Unit 이름을 써 줍니다 ..

unit ..... VistaAltFixUnit;

소스코드를 보시면 알겟지만 내부에서 OS 버젼 검사해서 VISTA 아니면 적용 안합니다.
따로 해 줄게 없다는 말이겠죠.

그리고 FormCreate 부분에 이걸 넣어 줍시다.
    TVistaAltFix.Create(Self);

간단하죠.

또는 한가지 더 방법이 있습니다.
다운로드 받은VistaAltFixUnit.pas를 등록하는 방법인데요 ..
제가 라이센스 받은 Delphi 는 추가 컴퍼넌트를 등록하지 못해서 위의 방법을 사용합니다만..
추가 컴퍼넌트를 설치 할 수 있는 Delphi 를 사용중 이시라면 VistaAltFixUnit.pas 를 새 컴퍼넌트로 추가 해서 사용하실수 있습니다.

이로서 버그없는 어플리케이션을 만드시기 바라며 ...