2009-05-25 3 views
0

이것은 VirtualShellTools을 아는 사람이라면 누구나 매우 "멍청한"질문 일 수 있지만 사용하기 시작하고 데모 코드에서 내 답변을 찾을 수 없습니다. 나는 또한 virtualtreeview에 익숙하지 않다.VirtualExplorerTreeview (VirtualShellTools)에서 원하는대로 데이터를 정렬하는 방법

나는 내가 그들을 지적 할 수있었습니다

그들에 대한 선택한 디렉토리에있는 파일의 특정 유형뿐만 아니라 특정 정보를 표시하는 VirtualExplorerListview와 연결된 디렉토리 구조를 표시 할 VirtualExplorerTreeview를 사용 원하는 위치에 링크하고, 목록보기의 모든 것을 필터링하고, 데모를 보면 내 열을 추가하고 내 사용자 정의 데이터를 표시하는 방법에 대한 꽤 좋은 아이디어가 있습니다.

내 문제는 트 리뷰와 관련이 있습니다. 원하는 순서로 표시된 디렉토리를 정렬하고 싶습니다. 구체적으로 말하자면, "내 문서"와 다른 폴더를 먼저 표시하고 드라이브를 누른 다음 이동식 미디어를 표시하고 싶습니다. TNamespace 속성을 살펴보면 (Directory 및 Removable 속성을 구분하는) 방법을 찾았지만 내 자신의 정렬/필요한 이벤트를 구현하는 방법을 알지 못합니다. 나는 CompareNode를 시도했지만 호출조차되지 않았다.

+0

두 번째 부분은 정렬과 관련이 없습니다. 가상 네임 스페이스 추가에 대한 별도의 질문으로 이동하는 것이 가장 좋습니다. –

+0

예, 당신이 옳다고 생각합니다. 나는 그것을 제거했습니다. – Lepidosteus

답변

3

모든 것을 직접 수행하려면 TVirtualExplorerTree.TreeOptions.VETMiscOptions 속성에 toUserSort을 설정하십시오. 이로 인해 컨트롤은 가상 트리보기에서 상속 된 DoCompare 메서드를 사용하기 때문에 OnCompareNodes 이벤트 처리기를 호출해야합니다.

더 좋은 방법은 사용자 정의를 제공하는 것입니다. TShellSortHelper. 그 클래스의 자손을 만들고 필요한 메소드를 오버라이드하십시오. 해당 클래스의 인스턴스를 만들고 트리의 SortHelper 속성에 할당합니다. 트리는 도우미의 소유권을 취하고 새 항목은 제외하고 이전 항목을 해제합니다. 항목이 해당 클래스에서 비교할 수없는 열에서 정렬되는 경우 트리의 OnCustomColumnCompare 이벤트를 처리합니다.

처리해야 할 이벤트를 무시하거나 처리해야하는 정확한 방법을 알아 내려면 TCustomVirtualExplorerTree.DoCompare에 중단 점을 설정하고 단계별로 진행하여 다양한 상황에서 무엇이 호출되는지 확인하십시오.

관련 문제