AGB  ·  Datenschutz  ·  Impressum  







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

TMyTreeView unter D2010

Ein Thema von Angel4585 · begonnen am 7. Apr 2010
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

TMyTreeView unter D2010

  Alt 7. Apr 2010, 11:42
Hallo,

ich verwende in einem Projekt eine Komponente meines Vorgängers, diese Komponente wird durchs ganze Projekt duch verwendet und andere Komponenten bauen auch darauf auf, weshalb ich die nicht einfach so ersetzen kann.
Die Komponente selbst ist eine Ableitung von TCustomTreeView und soll die Verzeichnisstruktur des PCs abbilden. Seit dem Umstieg von Windows Vista auf Windows 7 und gleichzeitig Delphi 2005 auf Delphi 2010 macht diese Komponente aber Probleme.
node := items.AddChildObject ( node, FolderName, FQ_PIDL ); An dieser Stelle kommt ne Exception, als Fehlermeldung bekomm ich:"Eintrag kann nicht eingefügt werden", also nicht seeehr aussagekräftig. Hier mal der komplette Code der Funktion:

Delphi-Quellcode:
procedure TMyTreeView.EnumerateFolder ( ShellFolder: IShellFolder; mask : DWORD;node : tTreeNode );
var
  flags : DWORD;
  EnumList : IEnumIdList;
  FQ_PIDL, PidlPath, list : PItemIdList;
  fetched : ULONG;
  FolderName: string;
  attr : ULONG;
  HexAttr : string;
  ImageIndex : integer;

begin
  items.BeginUpdate;
  PidlPath := node.data;
  fSortFolder := true;
  flags := SHCONTF_FOLDERS or SHCONTF_INCLUDEHIDDEN;
  try
  if (( ShellFolder.EnumObjects ( handle, flags, EnumList )) = NOERROR) and Assigned(EnumList) then
   begin
    while (EnumList.Next ( 1, list, fetched ) = NOERROR) do
     begin
// ImageIndex := -1;
      FolderName := GetDirectory ( ShellFolder, list, SHGDN_INFOLDER); //SHGDN_NORMAL );
      attr := ALL_ATRIBUTES;
      ShellFolder.GetAttributesOf ( 1, list, attr );
      HexAttr := IntToHex (attr, 4);

      if ( attr and mask > 0 ) then
       try
        FQ_PIDL := CombinePidls ( PidlPath, list );
        fFullPidlPathList.add ( FQ_PIDL );
        ImageIndex := GetNormalIcon ( FQ_PIDL );

        node := items.AddChildObject ( node, FolderName, FQ_PIDL );
        if ( attr and SFGAO_HASSUBFOLDER > 0 ) then
         Node.HasChildren := true;
        Node.ImageIndex := ImageIndex;
        Node.SelectedIndex := GetSelectedIcon ( FQ_PIDL );
        if FCheck then SwitchStateIndex(node,attr);

        // image with hand-icon
        if ( SFGAO_SHARE and attr ) > 0 then
         Node.OverlayIndex := 0;

        node := node.parent;
       except
         on e : exception do
         ShowMessage(e.Message);
       end;
      ShellMalloc.free ( list );
     end; // end while do ..

   end;
 except
// showmessage('ENUM FEHLER');
  //beep;
  end;
items.EndUpdate;
end;
Warum springt der da raus, hat jemand ne Idee?
Martin Weber
Ich bin ein Rüsselmops
  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 19:18 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