![]() |
Virtualstringtree Caption
hallo
ich habe folgendes problem. ich versuche in einem virtualstringtree eine ordnerstruktur anzuzeigen. ich hab dazu folgendes tutorial gefunden, leider funktioniert es nicht richtig. ich bekomme für alle nodes als caption "Node" angezeigt und nicht den ordner namen. ich poste mal den code, vielleicht sieht jemand den fehler?
Delphi-Quellcode:
vielen dank im voraus. :)
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, VirtualTrees; type Tmainform = class(TForm) VSTOrdnerstruktur: TVirtualStringTree; procedure FormCreate(Sender: TObject); procedure initialiseVSTOrdnerstruktur(); procedure leseOrdnerStruktur( aNode : PVirtualNode; sPath : String; iNodeLevel : Integer); function AddNode( VST : TCustomVirtualStringTree; aNode : PVirtualNode; aSearchRec : TSearchRec; sPath : String; iNodeLevel : Integer): PVirtualNode; private { Private-Deklarationen } public { Public-Deklarationen } end; type PMyFolderRec = ^MyFolderRec; // Zeiger auf unser MyFolderRec-Record MyFolderRec = record SearchRec : TSearchRec; sPath : WideString; end; var mainform: Tmainform; implementation {$R *.DFM} procedure TMainForm.FormCreate(Sender: TObject); begin initialiseVSTOrdnerstruktur; end; procedure TMainForm.initialiseVSTOrdnerstruktur(); begin VSTOrdnerstruktur.RootNodeCount := 0; VSTOrdnerstruktur.NodeDataSize := SizeOf(MyFolderRec); // nun alle Ordner im Tree anzeigen: leseOrdnerStruktur( nil, 'C:\test', 0); end; procedure TMainForm.leseOrdnerStruktur( aNode : PVirtualNode; sPath : String; iNodeLevel : Integer); var SearchRec : TSearchRec; p : String; begin p := sPath + '\*.*'; if FindFirst(p, faAnyFile, SearchRec) = 0 then begin repeat // handelt es sich um ein Verzeichnis? if (SearchRec.Attr and faDirectory) = faDirectory then begin if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then begin // den aktuellen Ordner dem Tree anhängen aNode := AddNode(VSTOrdnerstruktur, aNode, SearchRec, sPath, iNodeLevel); // ab in den nächsten Unterordner: leseOrdnerStruktur( aNode, IncludeTrailingBackslash(sPath)+ SearchRec.Name, iNodeLevel+1); end; end; until FindNext(SearchRec) <> 0; FindClose(SearchRec); // wird benötigt um den Speicher wieder freizugeben end; end; function TMainForm.AddNode( VST : TCustomVirtualStringTree; aNode : PVirtualNode; aSearchRec : TSearchRec; sPath : String; iNodeLevel : Integer): PVirtualNode; var pData: PMyFolderRec; begin VST.BeginUpdate; if aNode <> nil then begin if VST.GetNodeLevel(aNode) < iNodeLevel then // übergeordneter Order Subordner --> an aNode anhängen Result := VST.AddChild(aNode) else if VST.GetNodeLevel(aNode) = iNodeLevel then // wieder im selben Ordner --> an aNode.Parent anhängen Result := VST.AddChild(aNode.Parent); end else begin Result := VST.AddChild(nil); end; pData := VST.GetNodeData(Result); pData^.sPath := sPath; pData^.SearchRec := aSearchRec; VST.EndUpdate; end; end. |
Re: Virtualstringtree Caption
Du musst beim Ereginis OnGetText den Text für die Nodes setzen.
|
Re: Virtualstringtree Caption
danke, jetzt geht's. :D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 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