AGB  ·  Datenschutz  ·  Impressum  







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

Virtualstringtree Caption

Ein Thema von cookie22 · begonnen am 2. Okt 2008 · letzter Beitrag vom 2. Okt 2008
Antwort Antwort
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#1

Virtualstringtree Caption

  Alt 2. Okt 2008, 12:37
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:
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.
vielen dank im voraus.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Virtualstringtree Caption

  Alt 2. Okt 2008, 12:40
Du musst beim Ereginis OnGetText den Text für die Nodes setzen.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Virtualstringtree Caption

  Alt 2. Okt 2008, 13:05
danke, jetzt geht's.
  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 21:12 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