Bugreport: TShellTreeView & CD

Hallo, falls jemand so lange gesucht hat wie ich:

Die Eigenschaft "Path" Eigenschaft der TShellTreeView-Komponente liefert bei einem CD-Zugriff falsche Resultate, sobald die Pfadtiefe mehr als 1 beträgt. Bei "X:\Test1\Test2\Test.test" gibt wird nur "X:\Test1" zurückgegeben.

Es scheint keine andere Möglichkeit zu geben, als den Bug mit einer eigenen Funktion mit "Parent" und "Item.Text" zu umgehen.

grz Sadi

PS: Der Bug wurde Borland(?) schon gemeldet.

edit: Borland -> Borland: Code Gear
 
Zuletzt bearbeitet:
Hier ist eine Lösung zum Problem. Ein Workaround:

Code:
function TMain_Form.GetSTWPath(Listenname: ShortString): String;
var
  s: TShellFolder;
  isroot: boolean;
  sTemp: String;
begin
  s := TShellTreeView(FindComponent(Listenname)).SelectedFolder;
  isroot := TShellTreeView(
    FindComponent(Listenname)).Selected.AbsoluteIndex = 0;
  if isroot or (s.PathName <> s.Parent.PathName) then
  begin
    result := s.PathName;
  end
  else begin    // Flickschusterei für CD-ROMs
    result := s.DisplayName;
    while s.PathName = s.Parent.PathName do
    begin
      s := s.Parent;
      result := IncludeTrailingPathDelimiter(s.DisplayName) + result;
    end;
    sTemp := TShellTreeView(FindComponent(Listenname)).Path;
    result :=  LeftStr(sTemp, Pos('\', sTemp)) + result;
  end;
end;

Sie wird so aufgerufen:

Code:
string1 := GetSTWPath('ShellTreeView1');

hoffe, eine Hilfe gewesen zu sein.

grz Sadi
 

Neue Beiträge

Zurück