Wie zeichnet man das gestaltete Auswahlrechteck von TTreeView während AdvancedCustomDrawItem?
Ich mache SitteTTreeView
Zeichnen von Grund auf neu mitOnAdvancedCustomDrawItem
und ich frage mich, wie ich diese Auswahl und heißen Rechtecke im Hintergrund meiner vom Eigentümer gezogenen Objekte korrekt rendern kann. Sie sind im Vista / 7-Stil gestaltet, daher kann ich den Hintergrund nicht einfach einfarbig ausfüllen.
Ich habe versucht, meine Gegenstände zu zeichnencdPostPaint
Bühne, aber wenn ich geheDefaultDraw := True
beimcdPrePaint
Bühne zur Auswahl Hintergrund zeichnen, erfolgt die komplette Standardzeichnung, einschließlich Text der Elemente.
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;