2013-01-09 3 views
0

내 응용 프로그램에 TreeNT 구성 요소를 사용하고 있습니다. XE2로 응용 프로그램을 마이그레이션하려고합니다. XE2에서 구성 요소를 다시 컴파일했습니다. 실행 중일 때 창 캡션을 표시하지 않습니다.TreeNT 구성 요소에 유니 코드 지원 추가

제 3 자 구성 요소를 XE2로 수동 마이그레이션하는 데 유용한 팁을 제공해 줄 수 있습니까?

+0

TreeNT 대신 [Virtual TreeView] (http://www.lischke-online.de/index.php/controls/virtual-treeview)를 사용해보십시오. – kobik

+0

더 많은 사용자 정의 구성 요소가이 컨트롤에 정의되어 있기 때문에 사용할 수 없습니다. –

답변

1

델파이의 유니 코드에 대한 기사가 많이 있습니다. 구성 요소의 포팅은 응용 프로그램 포팅과 다를 바 없습니다. 찾아서 읽으십시오. 정말로.

특히 {$ T-} 모드에서 일하는 경우 PChar -> PAnsiChar/PWideChar ambigigity가 발생합니다. 컴파일 할 때 포인터를 입력했는지 확인하십시오.

버퍼를 할당하거나 원시 데이터를 옮길 때 Sizeof (char)를 곱하지 않으면 내 move 프로 시저가 발생합니다.

모호한 유형 - char, pchar, string -을 검색하고 문맥에 따라 WideChar/PWideChar/UnicodeString 또는 AnsiChar/PAnsiChar/AnsiString로 명시 적으로 대체하는 것이 좋습니다. 따라서 유형 전환이 발생할 수있는 곳을 배우고 컴파일러에서 유형 검사를 수행합니다. ShortStirng 유형 (string[255] bye TreeNT 사용)은 정의에 따라 비 유니 코드입니다. 액세스 할 때 모든 곳에서주의를 기울이십시오.

Windows DLL에서 직접 가져 오기를 수행하고 Windows 기능 이름에 "A"를 지정하면 성공할 것입니다. 이로 인해 ANSI 함수가 예기치 않은 UTF-16 데이터를 쉽게 얻을 수 있습니다.

누군가 이미 시도했는지 검색해보십시오. 예를 들어, http://code.google.com/p/keynote-nf/source/browse/trunk/3rd_party/treent/TreeNT.pas -하지만 이것은 2007 년 델파이 RTL의 유니 코드보다 먼저 끝났습니다.

+0

나는 모든 사람들이 멀리 전에 VTW로 전환했다고 생각합니다. –

+0

트랙에서 벗어날 가능성이 가장 높은 장소는 두 곳이 있습니다. 첫 번째는 렌더링이고 두 번째는 값을 전달하는 것입니다. 첫 번째는 구성 요소가 자체 렌더링되는지 또는 상속 된 Windows 렌더링에 완전히 의존 하는지를 확인해야합니다. 소스에서 PAINT 단어를 검색하십시오. WM_PAINT 메시지 참조 또는 WMPaint 메서드 재정의 또는 다른 것을 찾을 수 있습니다. 내가 WM_PAINT에 반응하여 상속 된 구현만을 호출하는 새로운 메시지 - 메소드를 만들기 위해 멀리 갈 수 없다면 "Use Debug DCUs"를 켜고 VCL 스톡 TTreeView로 추적 할 것입니다. –

+0

또는 Windows 내장 기능으로 이동했습니다. 트래킹은 때로는 복잡해질 수 있습니다. 또 다른 접근법은 디버그 DCU를 사용하도록 설정하여 노드의 캡션을 변경하는 일부 행을 깊이 추적하는 것입니다. VCL 소스로 이벤트가 깊어지고 깊어 져야합니다. 결국 캡션 변경 메시지를 Windows 위젯에 보내야합니다. 아마도 'TVM_SETITEM'이거나 VCL 및/또는 TreeNT에 명명 된 내용이 될 것입니다 : [MSDN 참조] (http://msdn.microsoft.com/ru-RU/library/windows/desktop/bb773758.aspx) –