Einzelnen Beitrag anzeigen

Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#1

treeview, clx, eigene farben und schriftart

  Alt 25. Mai 2004, 10:01
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;
  Mit Zitat antworten Zitat