![]() |
ShellTreeView und Overlay-Bild
Hallo,
um in meine umfangreiche Mediensammlung endlich etwas Ordnung zu bringen, habe ich ein Programm geschrieben, welches Ordnerinhalte mit manuell hinzugefügten Kommentaren in eine Datenbank schreibt. Da es aber nicht unbedingt sinnvoll ist beim Erstellen der Datensätze chronologisch vorzugehen, habe ich inzwischen etwas den Überblick verloren, welche Ordner in wie weit bereits abgearbeitet wurden. Da kam mir die Idee die Ordner in meinem Programm entsprechend zu markieren. Den Verzeichnisbaum lasse ich mir durch ein ShellTreeView anzeigen. Die bereits verarbeiteten Ordner sollen nun je nach Verarbeitungsstatus einen roten, gelben oder grünen Punkt erhalten. Sinnvoll wäre dafür ja ein Overlay. Leider kann ich aber keine eigene ImageList hinzufügen, da sonst die Systemicons in ShellTreeView nicht mehr angezeigt werden. Gibt es eine Möglichkeit auf das Image eines TreeNode direkt zuzugreifen? Vielleicht ein
Delphi-Quellcode:
oder so?
ShellTreeView.Items[x].Image.Canvas.Ellipse(...)
Gruß e-gon |
AW: ShellTreeView und Overlay-Bild
Hat keiner eine Idee?
Oder gibt es eine andere Möglichkeit in ShellTreeView Knoten zu kennzeichnen? |
AW: ShellTreeView und Overlay-Bild
*Push*
|
AW: ShellTreeView und Overlay-Bild
mit ShellTreeviwe kann ich Dir nicht helfen, falls Du cxShellTreeView hast:
reiner prof of concept
Delphi-Quellcode:
procedure TForm1.TreeViewCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;
State: TCustomDrawState; var DefaultDraw: Boolean); var r:TRect; var x:Integer; begin r :=Node.DisplayRect(false); x := (Node.Level + 1) * 20; r.left := x; r.Right := r.Left + 16; r.Bottom := r.top + 16; sender.Canvas.StretchDraw(r, image1.Picture.Graphic); sender.Canvas.TextOut(r.Right,r.Top,node.Text); DefaultDraw := false; end; procedure TForm1.FormCreate(Sender: TObject); begin cxShellTreeView1.InnerTreeView.OnCustomDrawItem := TreeViewCustomDrawItem end; |
AW: ShellTreeView und Overlay-Bild
Danke für die Antwort! Aber nein, ich benutze nicht cxShellTreeView und TShellTreeView hat leider kein DrawItem-Ereignis.
Nach langem Suchen und vielen Versuchen habe ich mich nun zähneknirschend mit den System-Overlays zur Markierung abgefunden.
Delphi-Quellcode:
Falls aber noch jemandem etwas besseres einfällt, ich bin für jeden Hinweis dankbar!
OverlayIndex:= 0; // Hand zur Markierung von Freigaben
OverlayIndex:= 1; // Verknüpfungssymbol OverlayIndex:= 3; // Zeitsymbol Gruß e-gon |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 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