AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

treeview, clx, eigene farben und schriftart

Ein Thema von semo · begonnen am 25. Mai 2004 · letzter Beitrag vom 2. Jun 2004
Antwort Antwort
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, 09: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
Benutzerbild von semo
semo

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

Re: treeview, clx, eigene farben und schriftart

  Alt 26. Mai 2004, 11:17
danke für die zahlreiche hilfe

ich habe es jetzt soweit selbst erledigt indem ich mir eine klasse gebastelt habe,
dort die eigenschaften für die einzelnen ebenen einlese und die eigenschaften bei jedem TreeView1CustomDrawItem für jede Ebene anwende.

nur habe ich das problem mit der schriftgröße....
wie kann ich die höhe und die breite des Items (TTreeNode) anpassen, so dass auch ein Text der Schriftgröße 14 oder > da reinpasst?

TTreeNode(item).Height ist z.bsp. eine Nur-Lesen-Eigenschaft....

auch die Breite ist zu klein, der Text wird abgeschnitten

  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

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

Re: treeview, clx, eigene farben und schriftart

  Alt 2. Jun 2004, 09:04
also: die breite habe ich jetzt folgendermassen angepasst:

für den rootNode einfach den Text erweitern.
die anderen unterelemente werden dann daran angepasst:

Code:
while Canvas.TextWidth(sNodeText) < aTreeView.Width - 2*aTreeView.Indent do
sNodeText := sNodeText + ' ';

aber wie kann ich die höhe anpassen???

habe was für die vcl gefunden, das sich aber in der clx nicht anwenden kann:
Code:
{ .... }

uses CommCtrl;

{ .... }

procedure SetTreeViewItemHeight(aTreeView: TTreeView; aItemHeight: Word);
begin
  aTreeView.Perform(TVM_SETITEMHEIGHT, aItemHeight, 0);
end;


// Example:
procedure TForm1.Button1Click(Sender: TObject);
begin
  SetTreeViewItemHeight(TreeView1, 30);
end;
Wer kann da helfen???
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz