AGB  ·  Datenschutz  ·  Impressum  







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

Treeview CustumDrawItem

Ein Thema von dot · begonnen am 10. Okt 2007 · letzter Beitrag vom 10. Okt 2007
Antwort Antwort
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#1

Treeview CustumDrawItem

  Alt 10. Okt 2007, 11:59
Hallo Delphigemeinde,
ich bin neu hier und würde gerne eine Frage stellen, gefunden habe ich leider nichts brauchbares dazu.

ich möchte in meinem Treeview die Klammern eines Items Blau zeichnen, aber nur die Klammern und den Text darin ( wie im bild )

der unterstehende Code hilft mir nicht da er den Kompletten text färbt

************************************************** *********************
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Node.Text = 'Meineaufgaben (430)' then
begin
TreeView1.Canvas.Font.Assign(TreeView1.Font);
TreeView1.Canvas.Font.Color := clBlue;
TreeView1.Canvas.Font.Style := TreeView1.Font.Style + [fsBold];
end;
DefaultDraw := True;
end;
************************************************** *********************

wäre sehr danke für die hilfe

dot
Miniaturansicht angehängter Grafiken
klammer_279.jpg  
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Treeview CustumDrawItem

  Alt 10. Okt 2007, 13:04
Wenn du die Schriftfarbe auf blau setzt - woher soll er denn nun wissen das du ab einer bestimmten Stelle noch eine andere Farbe haben willst?

Du musst somit die TextAusgabe selber machen: teile den String, setze schwarz, gebe ersten Teil aus, setze blau, gebe anderen Teil aus...
  Mit Zitat antworten Zitat
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#3

Re: Treeview CustumDrawItem

  Alt 10. Okt 2007, 14:20
danke für die theoretische info.
leider kriege ich genau das nicht hin, mir ist schon klar das ich mit clblue komplett alles einfärbe aber wie weise ich sowas überhaupt einem teil meines strings zu
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Treeview CustumDrawItem

  Alt 10. Okt 2007, 14:47
Na du musst den Text selber auf den Canvas malen. Siehe Delphi-Referenz durchsuchenTCanvas.TextOut() oder MSDN-Library durchsuchenDrawText().
  Mit Zitat antworten Zitat
dot

Registriert seit: 10. Okt 2007
39 Beiträge
 
#5

Re: Treeview CustumDrawItem

  Alt 10. Okt 2007, 20:52
...aber das ich kein trec im customdrawitem habe ist es schwierig beim TExtout die richtige positionen zu erreichen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#6

Re: Treeview CustumDrawItem

  Alt 10. Okt 2007, 21:00
Ich poste mal das Beispiel aus der Delphi 7 Hilfe:
Zitat:
Das folgende Beispiel zeigt, wie die Ereignisbehandlungsroutine OnCustomDrawItem Einträge und Linien des Baumdiagramms zeichnet, nachdem die Ereignisbehandlungsroutine OnCustomDraw den Hintergrund ausgefüllt hat.
Delphi-Quellcode:
procedure TCustomDrawForm.TVCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
  NodeRect: TRect;
begin
  with TV.Canvas do
  begin
    // Wenn DefaultDraw True ist, können die Schrifteigenschaften des Knotens
    // geändert werden. Bei DefaultDraw = True zeichnet Windows die
    // Schaltflächen und ignoriert unsere Schrifthintergrundfarben.
    // Stattdessen wird die Eigenschaft Color von TreeView verwendet.

    if cdsSelected in State then
    begin
      Font.Assign(SelectedFontDialog.Font);
      Brush.Color := SelBkgColorDialog.Color;
    end;
    DefaultDraw := FDefaultDrawItem;
    // Bei DefaultDraw = False müssen Sie alle Einträge selbst zeichen,
    // einschließlich Schaltflächen, Linien, Grafiken und Text.

    if not DefaultDraw then

    begin
      // Auswahlrechteck zeichnen
      if cdsSelected in State then
      begin
        NodeRect := Node.DisplayRect(True);
        FillRect(NodeRect);
      end;

      NodeRect := Node.DisplayRect(False);

      if None1.Checked then

      // Kein Bitmap, daher in der Hintergrundfarbe zeichnen
      begin
        Brush.Color := BkgColorDialog.Color;
        Brush.Style := FBrushStyle;
        FillRect(NodeRect)
      end
      else
        // Nicht über das Hintergrund-Bitmap zeichnen

        Brush.Style := bsClear;

      NodeRect.Left := NodeRect.Left + (Node.Level * TV.Indent);

      // NodeRect.Left entspricht jetzt dem linken Teil der erweiterten Schaltfläche

      DrawButton(NodeRect, Node);

      NodeRect.Left := NodeRect.Left + TV.Indent + FButtonSize;

      // NodeRect.Left ist jetzt der linke Teil der Grafik

      DrawImage(NodeRect, Node.ImageIndex);

      NodeRect.Left := NodeRect.Left + ImageList.Width;

      // Nun kann der Text endlich ausgegeben werden

      TextOut(NodeRect.Left, NodeRect.Top, Node.Text);

    end;
  end;
end;
Man beachte das Node.DisplayRect
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#7

Re: Treeview CustumDrawItem

  Alt 10. Okt 2007, 21:01
Hallo,

probier es mal mit TTreeNode.DisplayRect

Edit: *hmpf*
  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 04:52 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