2012-05-17 4 views
6

내 맞춤 버튼 (이미지)을 사용하여 VST의 기본 [-]/[+] 버튼을 대체하려면 어떻게해야하나요?
화살표 대신 (enter image description here, enter image description here) RTL 양방향 모드 (enter image description here, enter image description here)를 지원하고 싶습니다.TVirtualStringTree - [-]/[+] 버튼을 어떻게 변경합니까?

편집 : bsTriangle 스타일 (ButtonStyle)을 알고 있습니다. 그것은 RTL을 존중하지 않습니다. 내 자신의 맞춤 이미지를 사용하고 싶습니다.

답변

9

일반적으로 Windows Vista 및 Windows 7의 이미지가 아닙니까? 트리 컨트롤은 테마를 사용할 때 해당 시스템에서 자동으로 가져와야합니다.

가까운 곳에서 쉽게 얻을 수있는 방법은 ButtonStyle 속성을 bsTriangle으로 설정하는 것입니다. 그래도 질문에 표시된 이미지와 정확히 일치하지는 않습니다. "마이너스"화살표는 대각선 대신 직선을 가리키고 "플러스"화살표는 윤곽선 대신 단색으로 표시됩니다.

고유 한 비트 맵을 제공 할 수 있습니다. VT_XPBUTTONMINUS 및 VT_XPBUTTONPLUS 리소스를 원하는 이미지로 변경하고 ButtonFillMode 속성을 fmShaded으로 설정합니다.

bi-di 모드를 기반으로 이미지를 변경하는 기능은 없습니다. PaintNodeButton을 재정의 한 자손 클래스를 만든 다음 원하는대로 칠할 수 있습니다. 상위 클래스의 배치 코드를 복사하십시오.

+0

고맙습니다. 'PaintNodeButton'을 오버 라이딩하는 것이 유일한 선택 인 것처럼 보입니다. – ZigiZ

1

ButtonStyle 속성을 참조하십시오. 그것이 RTL bidi 모드를 존중하지는 않을지 생각합니다.

+0

저는 'bsTriangle' 스타일을 알고 있습니다. 그것은 RTL을 존중하지 않습니다. 나는 내 자신의 이미지를 사용하고 싶다. – ZigiZ

7

IIRC 당신은 PaintOptions에 toUseExplorerTheme을 포함시켜 그것을 얻을 수 있습니다. 그러나 이것은 또한 선택 모양을 (더 나은 IMNSHO로) 그리고 아마도 더 많이 바꿀 것입니다.

예를 들어

나는 다음과 같은 이벤트 핸들러 폼에 TVirtualStringTree을 삭제하고 추가하는 경우 : Form1.BiDiModebdRightToLeft에 수익률 screenshot with wrong triangular markers 설정 불행하게도 :

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    VT.RootNodeCount := 10; 
    VT.TreeOptions.PaintOptions := VT.TreeOptions.PaintOptions + [toUseExplorerTheme]; 
    VT.OnInitNode := VTInitNode; 
    VT.OnInitChildren := VTInitChildren; 
end; 

procedure TForm1.VTInitChildren(Sender: TBaseVirtualTree; 
    Node: PVirtualNode; var ChildCount: Cardinal); 
begin 
    ChildCount := 3; 
end; 

procedure TForm1.VTInitNode(Sender: TBaseVirtualTree; 
    ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates); 
begin 
    Include(InitialStates, ivsHasChildren); 
end; 

내가 얻을를 screenshot with triangular markers

편집 내 독일어 Windows 7.이 아랍어 또는 히브리어 시스템에서 더 잘 작동하는지 모르겠습니다.

+0

어떤 VirtualTree 버전을 사용하고 있습니까? – ZigiZ

+1

@ZigiZ : VirtualTrees.pas 상단의 cooment는 버전 5.0.0입니다. –

관련 문제