|
정말 몇일을 고생하고 하다가 하다가 안되서 이렇게 도움을 요청합니다.
첨부파일에 이미지를 보시면..
상단에 있는 그리드가 WideString Type이구요..
하단에 있는 그리드가 AnsiString Type입니다.
總經理 <- 요놈이
|\~=}뱓- <- 이렇게 보입니다.
뒤에 문자에 상관없이..
일반적인 문자들은 넣어봐도 괜찮은데..
유독 제일 앞에 總 이 문자가 들어가면 무조건 깨집니다.
(물론 비슷하게 깨지는 문자가 더 있을거 같습니다.)
단순히 Edit 창에서는 잘 보이는데요..
소스를 찾아보면 텍스트의 Size를 구하는 부분인거 같고요..
if WordWrap or MultiLineCells then
Result.cy := DrawTextExW(Canvas.Handle,PWidechar(ws),Length(ws),r,DT_LEFT or DT_WORDBREAK or DT_NOPREFIX or DT_CALCRECT,nil)
else
Result.cy := DrawTextExW(Canvas.Handle,PWidechar(ws),Length(ws),r,DT_LEFT or DT_SINGLELINE or DT_NOPREFIX or DT_CALCRECT,nil);
Grid에 그리는 부분이 다음 같습니다.
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
Canvas.Brush.Style := bsClear;
rect.Left := rect.Left - 1;
rect.Right := rect.Right - 1;
if CellWW or MultiLineCells then
DrawTextExW(Canvas.Handle,PWidechar(ws),Length(ws),rect,DT_LEFT or DT_NOPREFIX or DT_WORDBREAK OR DrawStyle,nil)
else
DrawTextExW(Canvas.Handle,PWidechar(ws),Length(ws),rect,DT_LEFT or DT_NOPREFIX or DrawStyle or DT_SINGLELINE or DT_END_ELLIPSIS,nil);
end
else
begin
ExtTextOutW(Canvas.Handle,rect.Left,rect.Top,ETO_CLIPPED,@rect,PWideChar(ws),Length(ws),nil);
end;
C++ Builder 6인데요..
저 함수 자체의 버그인가요?
뭔가 해결 방법이 있을거 같은데..
몇일 째 계속 해결도 못하고 헤매고 있습니다;; 도와주세요 ㅜㅜ
|