그동안 98, 다국어 OS 관련한 문제들은 그대로 둔 상태에서 xp모드에서 개발을 거의 했는데...
어제 오늘 98, 다국어 OS 관련한 것을 맘먹고 수정하기로 했습니다.
문제 1) VirtualStringTree 한글 깨지는 문제
- 한참전에 포럼 게시판에 질문을 올렸었지만 답글이 없어서...방방곡곡 검색한결과 답은 안나오더군요.
문제 포커스는 WideString을 써서 혹시 유니코드르 인한 문제인가에 두었었거든요.
그래서 98언더에서 유니코드를 하려면 unicows.dll을 로딩해서 쓰면 된다고 해서 로딩했는데 문제는 똑같더군요.
그러다가 우연찮게 폰트의 Charset을 변경해보았습니다. 보통은 Defaul_CHARSET으로 해서 쓰는데 XP이상에서는 별 문제없이 쓰고 있었기때문에 이곳은 보지도 않았었습니다.
Chartset을 HANGEUL_CHARSET으로 하니 결국 안깨지더군요...
문제 2) 영문 XP에서 VirtualStringTree 특수문자 깨지는 문제
- 특수문자가 깨지더군요. ℃℉ 뭐 이런 문자들이요...이것은 결국 문제가 VirtualStringTree의 Default Font가 Verdana(?)인가인데 Tahoma로 변경하니 해결되더군요.
문제 2) 영문 XP에서 폼의 타이틀에서 특수문자 깨지는 문제
- 역시 특수문자가 깨지더군요. 그래서 어제 자료실에 mx_formcaption컴포넌트를 올려놓았는데 타이틀 폰트를 Tahoma로 변경해서 수정했습니다.
문제 3) TDockTabSet 탭 넓이가 탭에 있는 텍스트 넓이보다 작은 문제.
- 98에서 TDockTabSet이 좌우로 붙어있는경우 탭 글자가 새로로 써지는데 탭의 넓이가 글자보다 작더군요.
이것도 방방곡곡 검색하다가 못찾았습니다. 그래서 컴포넌트 이벤트를 보니 MeasureTab이라는 함수가 있더군요.
그래서 Style을 OwnerTab으로 하고 DrawTab에서 탭 텍스트 그리고, MeasureTab에서 TabWidth를 강제로 주었습니다.
그런데 스타일을 OwnerTab으로 하면 탭의 모양이 촌스런 평형사변형 모양인 기본모양으로 나오더군요.
그래서 os버젼 확인해서 98언더 os버젼에서만 Style을 OwnerTab으로 했습니다.
98언더에서 문제가 되었던거는 DockTab.pas소스를 보니 탭의 넓이를 구할때 TextWidth로 해서 구하던데,
98언더에서는 TextHeight로 해야지 정상적인 값이 되더군요. 이거는 빌더툴에서 버그인거 같습니다.
후아~~~아직 한가지 문제가 있네요.
VirtualStringTree가 도킹 Hide되어 있다가 Show되면 VirtualStringTree의 헤더가 안보이다가 마우스가 지나가야 페인팅이 되면서 밑에 노드들도 제대로 위치를 잡더군요...이것만 해결하면 ... 후~
이제 프로그램이 98부터 win 7 64비트까지 잘되는거 같네요....
아침에 어느정도 쓰고 등록했는데 마침 인터넷이 끊기더군요. 써놓은 글은 다 날라가고...
에잇 하면서 안쓰려다가 오후되어서 마음 가다듬고 다시 올려봅니다.
|