ich möchte für jede zeile eine eigene schriftart, größe und farbe festlegen.
dabei tritt aber das problem auf, dass der canvas nur begrenzt ist.....
Code:
// tritt vor dem Standardzeichnen eines Knoten des TreeView ein
procedure TMainForm.TreeView1CustomDrawItem(Sender: TCustomViewControl;
Item: TCustomViewItem; Canvas: TCanvas; const Rect: TRect;
State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
var
newRect: TRect;
begin
// TCustomDrawStage: definiert ein Stadium während des benutzerdefinierten
// Zeichnens: 2 Fälle --> cdPrePaint oder cdPostPaint
with TTreeNode(Item) do begin
Canvas.Pen.Color := TreeView1.Color; // Rahmenfarbe
//Canvas.Brush.Color := clYellow; // Hintergrundfarbe
Canvas.Rectangle(Rect);
// alle dem root untergeordneten Nodes
if Parent = rootNode then begin
Canvas.Font.Color := clBlue;
// alle SubNodes
end else if parent <> nil then begin
Canvas.Font.Color := clRed;
Canvas.Font.Size := 14;
Canvas.Font.Name := 'Arial';
Memo1.Lines.Add(Text + IntToStr(Canvas.TextWidth(Text)));
// rootNode
end else begin
Canvas.Font.Color := clBlack;
end;
Canvas.TextRect(Rect, Rect.Left, Rect.Right, Text);
end;
// DefaultDraw gibt an, ob die Standardausgabe nach dem Beenden dieser Routine
// durchgeführt werden soll.
DefaultDraw := False
end;