Die Listbox zeigte, dass es wirklich an der Darstellung liegt
OnInitNode und OnInitChildren sind bei mir nicht zugewiesen, oder meinst du den Code aller gesetzten Ereignisse ? Falls ja:
Delphi-Quellcode:
procedure TfrmExp.VSTFreeNode(Sender: TBaseVirtualTree;
Node: PVirtualNode);
var Data : PTreeData;
begin
Data := VST.GetNodeData(Node);
if Assigned(Data) then
begin
Data.fCaption := '';
Data.fGroesse := '';
Data.fDateityp := '';
Data.fIcon := 0;
end;
end;
procedure TfrmExp.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
var Data: PTreeData;
begin
Data := VST.GetNodeData(Node);
case Column of
0: CellText := Data.fCaption;
1: CellText := Data.fGroesse;
2: CellText := Data.fDateityp;
end;
end;
procedure TfrmExp.VSTDblClick(Sender: TObject);
var Node : PVirtualNode;
Data : PTreeData;
begin
Node := VST.FocusedNode;
if not Assigned(Node) then
Exit;
Data := VST.GetNodeData(Node);
if Pfad[Length(Pfad)] <> '\' then
Pfad := Pfad + '\';
Search(Pfad + Data.fCaption);
end;
procedure TfrmExp.VSTGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
var Ghosted: Boolean; var ImageIndex: Integer);
var Data : PTreeData;
begin
Data := VST.GetNodeData(Node);
if Assigned(Data) then
if Column = 0 then
if Data.fTyp = (ftFile) then
ImageIndex := Data.fIcon
else
ImageIndex := 0;
end;
procedure TfrmExp.VSTCompareNodes(Sender: TBaseVirtualTree; Node1,
Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
var Data1, Data2 : PTreeData;
begin
Data1 := Sender.GetNodeData(Node1);
Data2 := Sender.GetNodeData(Node2);
if (Data1.fTyp = Data2.fTyp) then
Result := CompareText(Data1.fPfad, Data2.fPfad)
else
Result := Ord(Data2.fTyp = ftDir) - Ord(Data1.fTyp = ftDir);
end;
Und falls es noch hilft, hier die Suche, welche die Einträge direkt hinzufügt:
Delphi-Quellcode:
procedure CurDir(TimerID, Msg: Uint; dwUser, dw1, dw2: DWORD); pascal;
begin
//frmMain.lCurDir.Caption := ST.CurrentDir;
//frmMain.lTime.Caption := IntToStr(St.SearchDuration)+' ms';
//frmMain.lFiles.Caption := IntToStr(St.FilesCount);
//frmMain.lDirs.Caption := IntToStr(St.DirsCount);
end;
procedure TfrmExp.STStart(var Msg: TMessage);
begin
VST.Clear;
tid := TimeSetEvent(500, 1, @CurDir, 0, TIME_PERIODIC);
end;
procedure TfrmExp.STNewFile(var Msg: TMessage);
var TreeData : TTreeData;
Ext : String;
Icon : TIcon;
begin
VST.NodeDataSize := SizeOf(TTreeData);
VST.BeginUpdate;
TreeData.fCaption := ExtractFileName(PWideChar(Msg.LParam));
TreeData.fPfad := PWideChar(Msg.LParam);
TreeData.fGroesse := BytesToStr(GetFileSize(PWideChar(Msg.LParam)));
TreeData.fTyp := (ftFile);
Ext := ExtractFileExt(TreeData.fCaption);
if not (Pos('*.', Ext) > 0) then
begin
if Ext[1] = '.' then
Ext := '*' + Ext
else
Ext := '*.' + Ext;
end;
if Ext <> '' then
begin
TreeData.fDateityp := GetExtDes(Ext, False);
Icon := TIcon.Create;
GetExtIcon(Ext, Icon, False);
TreeData.fIcon := Img.AddIcon(Icon);
Icon.Free;
end;
AddVSTStructure(VST, nil, TreeData);
VST.EndUpdate;
end;
procedure TfrmExp.STNewDir(var Msg: TMessage);
var TreeData : TTreeData;
begin
VST.NodeDataSize := SizeOf(TTreeData);
VST.BeginUpdate;
TreeData.fCaption := ExtractFileName(PWideChar(Msg.LParam));
TreeData.fPfad := PWideChar(Msg.LParam);
TreeData.fGroesse := '';
TreeData.fDateityp := 'Ordner';
TreeData.fTyp := (ftDir);
AddVSTStructure(VST, nil, TreeData);
VST.EndUpdate;
end;
procedure TfrmExp.STFinish(var Msg: TMessage);
begin
Application.ProcessMessages;
TimeKillEvent(tid);
//frmMain.lCurDir.Caption := 'Fertig';
//frmMain.lTime.Caption := IntToStr(St.SearchDuration)+' ms';
//frmMain.lFiles.Caption := IntToStr(St.FilesCount);
//frmMain.lDirs.Caption := IntToStr(St.DirsCount);
end;