Como desenhar retângulo de seleção com estilo do TTreeView durante AdvancedCustomDrawItem?
Estou fazendo customTTreeView
desenho a partir do zero usandoOnAdvancedCustomDrawItem
evento, e eu me pergunto como processar esses retângulos quente e seleção corretamente no fundo do meu proprietário desenhar itens? Eles são do estilo Vista / 7, então não posso simplesmente preencher o fundo em alguma cor sólida.
Eu tentei desenhar meus itens emcdPostPaint
estágio, mas se eu sairDefaultDraw := True
acdPrePaint
fase para desenhar fundo de seleção, o desenho padrão completo ocorre, incluindo o texto dos itens.
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages,
DefaultDraw: Boolean);
begin
case Stage of
cdPreErase:
begin
DefaultDraw := True;
end;
cdPostErase:
begin
DefaultDraw := True;
end;
cdPrePaint:
begin
// I thought this will paint only the selected/hot backgrounds,
// however this will paint whole item, including text.
DefaultDraw := True;
end;
cdPostPaint:
begin
DefaultDraw := False;
// painting my owner-draw text
// .........
end;
end;
PaintImages := False;
end;