Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bei TShellTreeView scrollen erkennen (https://www.delphipraxis.net/7429-bei-tshelltreeview-scrollen-erkennen.html)

Flogo 12. Aug 2003 09:27


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?

neolithos 12. Aug 2003 09:40

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!

Flogo 12. Aug 2003 11:27

Re: Bei TShellTreeView scrollen erkennen
 
*LAUT*
Ok das mit TopItem hat funktioniert (thx) aber wie geht das mit dem Hook :shock:

Flogo 12. Aug 2003 13:06

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:
[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
Ich hoffe jemand versteht das gekrackel

neolithos 12. Aug 2003 13:17

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;

Flogo 12. Aug 2003 13:38

Re: Bei TShellTreeView scrollen erkennen
 
Habs immer noch nicht verstanden Mein Code sieht jetzt so aus
Code:
procedure TForm1.ShlTree(var Message: TMessage);
begin
  if Message.Msg = WM_VSCROLL then ShowProgress;
  inherited;
end;
aber er sagt schon beim starten "unable to insert item"

neolithos 12. Aug 2003 13:59

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 :) !

Flogo 12. Aug 2003 14:34

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 23:42 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