![]() |
TreeView im Vista Style
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.
Delphi-Quellcode:
Funktioniert leider nicht wie gewünscht, keine Änderung sichtbar ?!?
uses UxTheme.pas ... SetWindowTheme(TreeView1.Handle, 'explorer', nil);
Den Tipp habe ich hier gefunden: ![]() |
Re: TreeView im Vista Style
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz