الحصول على / تعيين tshelllistView مسار / مجلد كسلسلة (لا تستخدم .root)

StackOverflow https://stackoverflow.com/questions/953741

سؤال

أريد تعيين المسار للحصول على TshelllistView لعرض دليل الملفات باستخدام Delphi 2007. يمكنني في البداية استخدام TshelllistView.root لتعيين مسار الجذر مثل هذا ويظهر الدليل الذي أريده:

View := TShellListView.Create(Self);
// ...
View.Root := 'C:\Windows';

ولكن إذا كان المستخدم ينقل بعيدا عن هذا الدليل باستخدام Backspace وأحاول ضبط. Root مرة أخرى إلى الدليل الأصلي، لا يتغير الدليل المعروض. يبدو أنه يبدو أنه من المفترض أن تحدد جذر مساحة الاسم SHELT، وليس الدليل الحالي.

أيضا، إذا يتنقل المستخدم حول (باستخدام Backspace، وما إلى ذلك) لا يتم تحديث خاصية .root لتعكس المسار المعروض حاليا. لا يوجد خاصية.

ما أريده هو وسيلة للحصول على المسار الحالي وتحديده كسلسلة دون أن يلزم ربط TshelllistView إلى TshelltreeView وتعيين Tshelltreeview.path أو Hack ShellCtrls.pas منذ الأساليب ذات الصلة ل TshelllistView كلما تبدو خاصة. أجد صعوبة في الاعتقاد بأن لا توجد طريقة واضحة للحصول على / ضبط المسار، لذلك أفترض أنني أفتقد شيئا بسيطا هنا، لكن هذا المكون غير موثق على الإطلاق.

هل كانت مفيدة؟

المحلول

يمكنك الحصول على المسار الذي تم تحميله حاليا باستخدام

ShellListView1.RootFolder.PathName

تعيين يعمل خصائص الجذر، ولكن لا يتم تحديثه عند تغيير المجلدات بشكل تفاعلي. لذلك تحتاج إلى إجبارها على التفكير هناك تغيير. يعمل هذا إذا كنت دائما إعادة تعيينه إلى نفس المسار الأصلي:

ShellListView1.Root := View.RootFolder.PathName; // Updates to current location
ShellListView1.Root := 'C:\Windows';

بدلا من ذلك، بالنسبة للمسارات التعسفية، يمكنك فقط إضافة / إزالة الزائدة من أجل خداع Sametext Check في Setroot:

if ShellListView1.Root[Length(ShellListView1.Root)] = '\' then
  ShellListView1.Root := ExcludeTrailingPathDelimiter(ANewPath)
else
  ShellListView1.Root := IncludeTrailingPathDelimiter(ANewPath);

نصائح أخرى

للحصول على المجلد الحالي كسلسلة، يمكنك الوصول إلى خاصية RootFolder.

procedure TForm2.Button1Click(Sender: TObject);
begin
  showmessage(ShellListView1.RootFolder.PathName);
end;

لتعيين المجلد الحالي كسلسلة، يمكنك استخدام الممتلكات الجذرية.

procedure TForm2.Button2Click(Sender: TObject);
begin
  ShellListView1.Root := 'C:\windows';
end;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top