So hier der Quelltext
Also in der Datei ..\Delphi6\Demos\ShellControls\ShellCtrls.pas muss der Wert FUpdating false sein und nicht true.
ACHTUNG für ShellTreeView
Delphi-Quellcode:
procedure TCustomShellTreeView.SetPath(const Value: string);
var
P: PWideChar;
NewPIDL: PItemIDList;
Flags,
NumChars: LongWord;
begin
NumChars := Length(Value);
Flags := 0;
P := StringToOleStr(Value);
try
OLECheck(DesktopShellFolder.ParseDisplayName(
0,
nil,
P,
NumChars,
NewPIDL,
Flags)
);
// DELPHI 6 PRO - Orginalquellcode
// FUpdating := True;
FUpdating := false;
SetPathFromID(NewPIDL);
except on EOleSysError do
raise EInvalidPath.CreateFmt(SErrorSettingPath, [Value]);
end;
FUpdating := False;
end;
es kann natürlich auch sein das die 1. Abfrage in TCustomShellTreeView.SetPathFromID
Delphi-Quellcode:
procedure TCustomShellTreeView.SetPathFromID(ID: PItemIDList);
var
I: Integer;
Pidls: TList;
Temp, Node: TTreeNode;
begin
if FUpdating or (csLoading in ComponentState)
or ((SelectedFolder <> nil) and SamePIDL(SelectedFolder.AbsoluteID, ID)) then Exit;
{..}
end;
nicht stimmt auf jeden falls funktioniert meiner erste Variante für das TreeView.
Bei der ShellListView existiert die Prozedur SetPath bzw. das Property Path nicht. Allerdings dürfte es kein Problem sein die von ShellTreeView nach ShellListView zu übertragen
Zynismus ist der geglückte Versuch, die Welt so zu sehen, wie sie wirklich ist.