AGB  ·  Datenschutz  ·  Impressum  







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

TreeView im Vista Style

Ein Thema von TonyMontana · begonnen am 14. Jul 2009 · letzter Beitrag vom 22. Jul 2009
Antwort Antwort
TonyMontana
(Gast)

n/a Beiträge
 
#1

TreeView im Vista Style

  Alt 14. Jul 2009, 15:47
Hallo,

ich verwende eine TTreeView-Komponente und habe mich gefragt, ob es eine einfache Möglichkeit gibt, wie ich diese im Vista design / style anzeigen lassen kann? Also statt Plus und Minus Symbolen eben die kleinen Pfeile und so weiter.

uses UxTheme.pas ... SetWindowTheme(TreeView1.Handle, 'explorer', nil); Funktioniert leider nicht wie gewünscht, keine Änderung sichtbar ?!?

Den Tipp habe ich hier gefunden:
http://www.installationexcellence.co...phi/Index.html
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TreeView im Vista Style

  Alt 22. Jul 2009, 10:11
Hi,

das geht nur wenn du auch ein XPManifest im Projekt hast.
Ansonsten bau dir selber ein Vistastyle Treeview. Mit ein paar Dreiecksbildern, wie in vista und dann on AdvancedCustomDrawItem über die alten Plus NodeButtons zeichnen.

So hab ichs gemacht:

Delphi-Quellcode:
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
   Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
   var PaintImages, DefaultDraw: Boolean);
var
  NodeRect : TRect;
begin
 DefaultDraw := True;
 if Stage = cdPostPaint then begin
  if Node.IsVisible then begin
   NodeRect := Node.DisplayRect(True);
   if Node.HasChildren then begin
     if Node.Expanded then begin
        if (cdsHot in state) and (not (cdsFocused in state)) then (Sender as TTreeview).Canvas.Draw(NodeRect.Left+Treeview1.Indent - 53, node.DisplayRect(False).TopLeft.Y+1, Image2.Picture.Bitmap)
         else if (cdsFocused in state) then (Sender as TTreeview).Canvas.Draw(NodeRect.Left+Treeview1.Indent - 54, node.DisplayRect(False).Top+2, Image5.Picture.Bitmap)
          else (Sender as TTreeview).Canvas.Draw(NodeRect.Left+Treeview1.Indent - 54, node.DisplayRect(False).Top+2, Image3.Picture.Bitmap);
     end
     else begin
       if (cdsHot in state) and (not (cdsFocused in state)) then (Sender as TTreeview).Canvas.Draw(NodeRect.Left +Treeview1.Indent - 54, node.DisplayRect(False).Top+1, Image4.Picture.Bitmap)
       else if (cdsFocused in state) then (Sender as TTreeview).Canvas.Draw(NodeRect.Left +Treeview1.Indent - 53, node.DisplayRect(False).Top+1, Image6.Picture.Bitmap)
         else (Sender as TTreeview).Canvas.Draw(NodeRect.Left +Treeview1.Indent - 53, node.DisplayRect(False).Top+1, Image1.Picture.Bitmap);

     end;
   end
  end;
 end;
end;
Tom
Just DO it
  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 00:16 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