AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi VirtualStringTree: Nicht immer wird alles aufgelistet
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree: Nicht immer wird alles aufgelistet

Ein Thema von Nils_13 · begonnen am 8. Sep 2007 · letzter Beitrag vom 9. Sep 2007
 
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: VirtualStringTree: Nicht immer, wird alles aufgelistet

  Alt 8. Sep 2007, 17:15
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;
  Mit Zitat antworten Zitat
 


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 22:52 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