XE4 TShellListView TShellTreeView 资源管理器


Delphi 2007 中没有 Shell 组件,但在Delphi的lib目录存在相关的源文件,并且在C:WindowsSystem32目录下存在vclshlctrls100.bpl的运行时包,唯独没有设计时包。

  但在Delphi的Demo中有一个ShellControls,安装其目录下的 dclshlctrls.dpk 即可成功安装Shell组件。

  注1:Shell组件安装后还是在组件面板的Sample页中;

  注2:Delphi2007的Demo目录在:我的电脑-共享文档-RAD Studio-Demos-DelphiWin32-VCLWin32;

  在 使用Shell这样的组件时,程序编译后都会出现以下的警告:[DCC Warning] Unit1.pas(7): W1005 Unit ‘ShellCtrls’ is specific to a platform ,如果您不想让他显示的话,可以在你工程相关源文件的开头加上以下代码:

  {$WARN UNIT_PLATFORM OFF}



XE4  XE5

D:\Users\Public\Documents\RAD Studio\12.0\Samples\Delphi\VCL\ShellControls\vclshlctrls.dpk  

dclshlctrls.dpk


http://delphi.about.com/od/delphi-tips-2011/qt/xe2-vcl-shell-shellctrls.htm

ShellControls (TShellTreeView, TShellListView) In Delphi XE2

Using Shell Controls - Need My ShellCtrls.pas NOT Vcl.Shell.ShellCtrls.pas

By Zarko Gajic

Delphi XE2 Shell Controls Delphi XE2 Shell Controls
Ads

Delphi Globalization Toolwww.tsilang.comGlobalize your Delphi applications easy, professionally and fast!

义翘-圣诞好礼三重巨献www.sinobiological.cn北京义翘神州-蛋白/抗体生产专家 价格优惠,严格质控,现货储备

Delphi FireMonkey Controlswww.woll2woll.comProfessional FireMonkey Controls for Delphi (Grid, Editors, Lookups)

Ads

SDL Delphi Componentswww.lohninger.comHiTech components: 3D-plots, math, statistics, FFT, regression, meters

Image Library for Delphiwww.imageen.comCreate professional multimedia and photo apps with Delphi and ImageEn

Intro:
Delphi XE2 has Vcl.Shell.ShellCtrls.pas, but the Shell Controls package is not installed by default. There's ShellCtrls.pas in the samples folder (as before) - use it to manually install the package.

Trick question: what compiled (DCU) version of "shellctrls.pas" is used by Delphi?

I have an application which extensively uses controls from the "Shell Control Property and Component Editors" package. The package is shipped with Delphi as a sample project for quite some time. The shell components included are TShellTreeView, TShellListView, TShellComboBox and TShellChangeNotifier.

The TShellListView control can be used to display files from the file system. Paired with TShellTreeView shell, the TShellListView can be used to mimic Windows Explorer user interface.

In Delphi XE2, the package is not installed by default and you have to install it manually. The source files are located inside the "$(ALLUSERSPROFILE)\Documents\RAD Studio\9.0\Samples\Delphi\VCL\ShellControls" folder. On Windows 7, the "$(ALLUSERSPROFILE)" is "C:\Users\Public". On Windows XP, the all users documents folder is "C:\Documents and Settings\All Users\Documents".

Once you have the packages installed, the "Samples" section on the Tool Palette will host the mentioned 4 components.

My Own Version Of TSHellListView

By design, the TShellListView sorts files (and folders) ascending by their name. There's no "OnCompare" event you can handle to change the sort order or the column (name, type, date modified, size) used for sorting.

The Add Custom Sorting To Delphi's TShellListView Control explains how to do a little tweak to the source unit (ShellCtrls.pas) where TShellList view is implemented, recompile the package and use the tweaked version of the TShellListView (exposing one more property).

No Go In Delphi XE2

Once you are done with recompiling of the Shell Controls package, start a new VCL Forms application in Delphi XE2, drop TShellListView on the form and try accessing the added FolderList property ... no go! :(

Note the uses clause of your unit: it will list "Vcl.Shell.ShellCtrls".

Delphi XE2 introduced Unit Scope Names - prefixes that are prepended to unit names in the VCL (, FMX, RTL) libraries.

When you hit Compile, Delphi looks for compiled units your code uses into the Library Path (Tools - Options - Environment Options - Delphi Options - Library) list. This list has "c:\program files (x86)\embarcadero\rad studio\9.0\lib\Win32\release" as the first item - go there and locate the "Vcl.Shell.ShellCtrls.dcu" used by Delphi to compile your application.

This is NOT the "ShellCtrls.dcu" I want to be used. My version of "ShellCtrls.pas" is located, remember, here: "$(ALLUSERSPROFILE)\Documents\RAD Studio\9.0\Samples\Delphi\VCL\ShellControls"

How do I tell Delphi to use my version of the ShellCtrls unit and not the one shipped with Delphi XE2 (but not installed on the Tool Palette) ?

Two actions were required:

  1. Add "$(ALLUSERSPROFILE)\Documents\RAD Studio\9.0\Samples\Delphi\VCL\ShellControls" to the Library Path (Tools - Options - Environment Options - Delphi Options - Library list)
  2. Edit the uses class to specify the non unit-scoped name: delete "Vcl.Shell.ShellCtrls" and add "ShellCtrls"
Now, hit compile. This will work - your compiled version of "ShellCtrls.pas" from "$(ALLUSERSPROFILE)\Documents\RAD Studio\9.0\Samples\Delphi\VCL\ShellControls" is used as the folder is now listed in the Library Path list.

Epilogue

Confession: maybe there's a better way to do the above. Maybe with some next Update, shell controls will be installed by default. Maybe I done something wrong :)
After all, the above work was done while I was upgrading one of my bigger application to Delphi XE2 (new machine, full backup, and all that work).

All in all, I have my version of TShellListView and my sorting works. I am able to compile the entire project (quite a few third-party components used). Am happy, can move on adding more planned features to the application.

Moved from Delphi XE to Delphi XE2 and I have to say I am not unhappy with the time invested in the upgrade. If you can, go for XE2.

Enhance Your Delphi Application with Drop-in Shell Functionality •Includes 18 visual and non-visual components •Create Explorer-like applications within minutes with JamShellTree, the JamShellList and the JamShellCombo •Easy drop-in: Just drop the UI components right on your own forms or dialogs •Use checkboxes with JamShellTree, JamShellList, JamFileList and JamDriveList Icons and thumbnails are queried in background threads. This optimizes the reactivity and does not slow down the speed of the user interface. Look-and-Feel of the Windows Explorer •Windows Shell context menu (can be extended with a Delphi popmenu) •OLE drag-and-drop with the Windows Explorer and similar applications •Different view styles: The JamShellList and the JamFileList support small icons, large icons, extra large icons, details mode and thumbnails •Overlay icons supported •Installed Shell extensions, which are supported by the Windows Explorer, are also supported by the ShellBrowser Delphi Edition •TJamSystemShellView instances the right pane of the real Windows Explorer •Background context menu in the JamShelllist is supported How-to Guides •Comprehensive documentation of the included controls •Several sample projects for basic and advanced features of ShellBrowser Delphi Edition included Transparent Costs •The ShellBrowser Delphi Edition is royalty free and involves no runtime fees 100% Delphi Code•The controls are based on the Delphi VCL and are written in 100% Object Pascal code •No additional DLLs or ActiveX controls are necessary
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值