2011-05-06 3 views
1

이 내 코드입니다 :VST의 선택된 노드를 어떻게 강조 표시합니까?

procedure TfrmMain.vstListPaintText(Sender: TBaseVirtualTree; 
    const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; 
    TextType: TVSTTextType); 
begin 
    if vsSelected in Node.States then 
    begin 
     TargetCanvas.brush.color := clBlue; 
     TargetCanvas.FillRect(targetcanvas.ClipRect); 
    end; 
end; 

하지만이 일어나는 것이다 :

  1. 나는 노드를 클릭
  2. 전체 VST 이전 선택된 노드
  3. 선택된 노드를 제외하고 블루 그려진 파란색입니다 (그리고 VST가 기본 색상으로 되돌아갑니다)

어떻게해야합니까? OID # 2?

답변

4

셀을 페인트하려는 경우 잘못된 이벤트 - ... PaintText는 색상 및 글꼴 스타일을 설정합니다.

대신 다른 이벤트 (OnBeforeCellPaint)를 시도하면 자동으로 셀에 대한 TRect가 표시됩니다.

2

단순 : 전체 캔버스가 FillRect입니다. 그러지 마. OnAfterCellPaint 또는 OnAfterItemPaint를 사용하십시오. 이 이벤트에서는 사용자 정의 페인팅을 수행 할 특정 CellRect을 얻습니다.

관련 문제