![]() |
Bei TShellTreeView scrollen erkennen
Tachchen,
Ich versuch ein Programm zu schreiben, dass die Verteilung des Festplattenplatzes auf die Ordner übersichtlich anzeigt (ich will wissen warum meine Platten dauernd voll sind). Dazu hab ich ein ShellTreeView genommen und Progressbars daneben gestellt. Mein Problem bei der Sache ist folgendes: Wie kann ich erkennen wie weit die ShellTreeView runtergescrollt ist also welcher Index zu welcher Progressbar gehört? |
Re: Bei TShellTreeView scrollen erkennen
TopItem gibt erstmal den ersten sichtbaren Eintrag an.
Wird das TreeView gescrollt so wird eine WM_VSCROLL-Nachricht abgeschickt, die du durch einen Hook via WindowProc mithören kannst. Falls das noch nicht Hilft gib laut! |
Re: Bei TShellTreeView scrollen erkennen
*LAUT*
Ok das mit TopItem hat funktioniert (thx) aber wie geht das mit dem Hook :shock: |
Re: Bei TShellTreeView scrollen erkennen
Zu früh gefreut :( Es schien alles zu klappen aber mir ist aufgefallen, dass die Indizes nicht mehr stimmen wenn man einen Ordner mal "ausgeklappt" hat und dann wieder schliest
Code:
Ich hoffe jemand versteht das gekrackel
[u]Zustand 1:[/u]
Im Bild: Im Prog: +C:\ C:\ | +Programme C:\Programme | | | +POrdner1 C:\Programme\POrdner1 | | | +POrdner2 C:\Programme\POrdner2 | +Windows C:\Windows [u]Zustand 2:[/u] +C:\ C:\ | +Programme C:\Programme | +Windows C:\Programme\POrdner1 | +WOrdner1 C:\Programme\POrdner2 | +WOrdner2 C:\Windows |
Re: Bei TShellTreeView scrollen erkennen
Erstmal noch ein anderer Weg zur Lösung.
Wie wär es vielleicht mit selberzeichnen neben den Einträgen! nun zum Hook: Entweder du Leitest das TShellTreeView-Control ab und überschreibst den Message-Handler oder du Hook's (Hack's dich an den Message-Handler an)
Delphi-Quellcode:
TMyForm = clas
... private pOldShlTree : TWndMethod; // new procedure ShlTree(var Message: TMessage); procedure TMyForm.FormCreate(...); begin ... pOldShlTree := tvwShlTree.WindowProc; // new tvwShlTree.WindowProc := ShlTree; ... end; procedure TMyForm.ShlTree(var Message: TMessage); begin pOldShlTree(Message); with Message do case Msg of WM_VSCROLL: ...; // wenn man den wParam auswertet kann man noch steuern // wann neu ausgerichtet werden soll end; end; |
Re: Bei TShellTreeView scrollen erkennen
Habs immer noch nicht verstanden Mein Code sieht jetzt so aus
Code:
aber er sagt schon beim starten "unable to insert item"
procedure TForm1.ShlTree(var Message: TMessage);
begin if Message.Msg = WM_VSCROLL then ShowProgress; inherited; end; |
Re: Bei TShellTreeView scrollen erkennen
Erst mal hab ich oben ein kleine Berichtigung gemacht! Vielleicht ändert das schon manches! Wenn nicht wäre ein wenig mehr info hilfreich :) !
|
Re: Bei TShellTreeView scrollen erkennen
Yep das wars danke :hello: hätte mir eigentlich denken können dass ein inherited bei einer ersetzten Methode nicht geht
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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