Jak narysować stylizowany prostokąt TTreeView podczas AdvancedCustomDrawItem?
Robię na zamówienieTTreeView
rysowanie od podstaw za pomocąOnAdvancedCustomDrawItem
zdarzenie i zastanawiam się, jak poprawnie wyrenderować te zaznaczenia i gorące prostokąty w tle moich elementów do losowania? Są w stylu Vista / 7, więc nie mogę po prostu wypełnić tła jakimś jednolitym kolorem.
Próbowałem narysować moje przedmioty wcdPostPaint
etap, ale jeśli odejdęDefaultDraw := True
wcdPrePaint
etap do rysowania tła wyboru, pojawia się pełny domyślny rysunek, w tym tekst elementów.
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;