ShellBrowser Delphi Components
模拟Windows Explorer的功能
ShellBrowser Delphi Components模拟Windows Explorer中已知的函数。这包括上下文菜单、资源管理器窗口的左窗格和右窗格、缩略图、虚拟文件夹和Shell扩展。使用ShellBrowser Delphi Components,可以轻松访问Windows Shell功能!
ShellBrowser Delphi Components与所有当前版本的Windows(32位和64位)和RAD Studio兼容。.
使用方便
只需将组件放到表单上,并通过RAD Studio IDE进行配置。
多才多艺
ShellBrowser包含任何用例所需的控件,因此您可以专注于实际工作。
高度可配置
根据您的场景控制组件的外观和行为!大多数组件完全支持Delphi视觉样式。
ShellBrowser Delphi Components的功能
主要功能一目了然
使用内嵌Shell功能增强Delphi应用程序
包含Delphi和C++Builder的一套完整的可视化和非可视化组件。
使用JamShellTree、JamShellList、JamShellCombo和JamShellBreadCrumbBar在几分钟内创建类似浏览器的应用程序。
简单的插入:只需将UI组件直接放到您自己的表单或对话框中。
对TJamShellTree、TJamShellList、TJamFileList和TJamDriveList使用复选框。
在后台线程中查询图标和缩略图。这优化了反应性,不会降低用户界面的速度
TJamFilePreview组件将预览窗格(与Windows Vista一起引入)集成到应用程序中TJamShellChangeNotifier通知您相关的Shell事件。
Windows Explorer的外观
TJamExplorerBrowser提供了一个完整的、可配置的Windows Explorer视图。
Windows Shell上下文菜单(可通过Delphi弹出菜单进行扩展)。
使用Windows Explorer和类似应用程序进行OLE拖放。
不同的视图样式:TJamShellList和TJamFileList支持小图标、大图标、超大图标、详细信息模式和缩略图。
支持叠加图标。
ShellBrowser Delphi版本也支持Windows Explorer支持的已安装外壳扩展。
支持TJamShellList中的背景上下文菜单。
如何操作的引导
所包含控制措施的全面文件
包括几个ShellBrowser Delphi版本基本和高级功能的示例项目。
100%Delphi代码-透明成本
这些控件基于Delphi VCL,用100%对象Pascal代码编写,不需要额外的DLL或ActiveX控件。
ShellBrowser Delphi版本是免版税的,不涉及运行时费用。
ShellBrowser Delphi Components
Delphi的本地VCL Explorer Shell控件
所有包含的组件
ShellBrowser Delphi Components提供了一种在应用程序中集成Windows File Explorer相关组件和功能的简单方法。它由一套完整的VCL控件组成,用于Delphi和C++Builder中。您可以简单地将可视化组件放到表单上,并通过RAD Studio IDE配置它们。默认情况下,这些组件与Windows File Explorer非常相似,但它们在视觉效果和功能方面是高度可定制的。组件是免版税的,不涉及运行时费用!
控件
TJamShellTree
在树形结构中显示Windows的Shell名称空间,其外观和行为类似于带有Delphi组件TJamShellTree的Windows Explorer的左窗格。
TJamShellList
在列表中显示文件夹的内容,其外观和行为类似于Windows Explorer的右窗格,并使用TJamShellList组件根据需要对其进行自定义。
TJamExplorerBrowser
使用TJamExplorerBrowser将整个Windows Explorer添加到应用程序中。
TJamShellCombo
TJamShellCombo是一个可配置的Windows Explorer样式的Shell对象组合框。
TJamShellBreadCrumbBar
TJamShellBreadCrumbBar集成了WindowsVista Explorer引入的breadcrumb导航。它显示文件夹和子文件夹结构,使用户可以轻松地在不同的文件夹之间切换。
TJamShellHistoryPane
TJamShellHistoryPane添加包含在Windows Explorer地址栏中的历史窗格。它可以包含在TJamShellBreadcrumbBar和TJamExplorerBrowser中,也可以单独用于跟踪和导航与TJamShellLink链接的组件的历史。
TJamShellSearchEdit
使用TJamShellSearchEdit在链接的TJamShellList或TJamExplorerBrowser中支持动态搜索。它作为可选窗格包含在TJamShellBreadCrumbBar和TJamExplorerBrowser中。
TJamShellFilePreview
使用TJamShellFilePreview组件,用户可以在不打开文件的情况下查看文件的内容。它使用与Windows Explorer相同的预览。
TJamThumbnailImage
使用TJamThumbnailImage组件可以使用与Windows Explorer相同的API调用显示文件或文件夹的缩略图。
TJamFileList
TJamFileList组件可用于在单个列表中聚合来自不同目录的文件和文件夹。
TJamDriveList
在TJamDriveList组件的帮助下,您可以创建系统所有本地和网络驱动器的列表,以及每个驱动器的显示容量和可用磁盘空间。
TJamPathLabel
TJamPathLabel组件在标签中显示路径,确保完整文件名可读。
TJamPathEdit
利用TJamPathEdit组件,使应用程序的用户能够输入路径或在对话框中浏览路径。
TJamFolderCombo
使用TJamFolderCombo组件,您可以轻松地在组合框中显示文件夹和驱动器,包括与之相关的图标。
TJamOpenSaveComboBox
TJamOpenSaveComboBox是专门为用户在自定义文件对话框中输入或选择文件名而设计的。下拉菜单中提供了最近使用的文件列表。使用TJamShellLink,可以轻松地将文件路径和过滤器与其他ShellBrowser组件同步。
TJamFilterCombo
顾名思义,TJamFilterCombo可以配置一个过滤器列表。通过TJamShellLink连接到其他ShellBrowser组件,过滤器将自动应用于能够过滤的组件,如TJamOpenSaveComboBox、ExplorerBrowser、TJamShellList或TJamShellTree。过滤器可以从预定义过滤器列表中选择,也可以动态提供。
对话框
TJamBrowseForFolder
TJamBrowseForFolder组件显示用于选择和打开文件夹的窗口对话框。
TJamNetConnectionDialog
使用户能够轻松地将网络驱动器与TJamNetConnectionDialog组件连接。
TJamNetDisconnectDialog
显示所有连接的网络驱动器的列表,并让应用程序的用户轻松地使用TJamNetDisconnectDialog组件断开它们的连接。
TJamFileOperation
TJamFileOperation组件用于执行文件操作,如复制、移动、重命名或删除。
非可视组件
TJamDragFiles和TJamDropFiles
将TJamDropFiles或TJamDragFiles Delphi组件链接到其他控件,以支持和管理文件系统对象的拖放操作。
TShellBrowser
TShellBrowser是一个非可视组件,允许您浏览Windows的Shell命名空间、查询有关Shell对象的信息以及执行上下文菜单操作。
TJamShellChangeNotifier
TJamShellChangeNotifier组件通知文件系统和Shell中的更改(例如复制、移动或删除)。
TJamSystemImageList
使用TJamSystemImageList组件访问Windows系统映像列表,并显示与Shell相关的信息。
TJamShellLink
使显示的文件夹或VisualShellBrowser组件的选定元素与TJamShellLink组件保持同步非常容易。
ShellBrowser Delphi Components兼容性
无缝兼容以获得最佳性能
ShellBrowser Delphi Components与所有当前版本的Windows(32位和64位)和IDE(集成开发环境)兼容。
支持的集成开发环境(IDE)
版本11及更高版本
RAD Studio 10.3 Rio
RAD Studio 10.2 Tokyo
RAD Studio 10.1 Berlin
RAD Studio 10 Seattle
RAD Studio XE3 - XE8
版本10.x
RAD Studio XE3 - 10.2 Tokyo
支持Windows XP和Windows Server 2003
所有版本
32位和64位编译器
Delphi 和C++ Builder
支持的操作系统
Windows 10
Windows 8.1
Windows 7
Windows Server 2019
Windows Server 2016
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
(32位和64位)
ShellBrowser Delphi Components示例项目
让我们来激发您的灵感
使用示例
入门:连接组件
下面是关于如何使用ShellBrowser组件的第一个示例。我们在左边放了一个JamShellTree,在右边放了一个JamShellList。两个组件的属性“Shelllink”都设置为JamShellLink的同一实例,JamShellLink是一个同步组件。通过复选框启用或禁用组件的“Checkboxes”属性以及前进/后退按钮,窗体得到了增强。
入门:JamShellCombo
JamShellCombo模拟Windows Explorer的下拉菜单。用户可以键入组合框并使用自动完成功能。JamShellLink调解不同组件之间的事件。这一次,我们在右侧放置了JamThumbnailImage组件,以将Windows操作系统已知的所有文档显示为预览。JamShellList的“SpecialFolder”属性已设置为“MyPictures”,这是可用的默认位置之一。
入门:JamShellChangeNotifier
如果文件系统上发生了更改,JamShellChangeNotifier组件将发出通知。用鼠标拖动JamShellList中的文件夹,将其添加到JamFileList中。项目集合指定JamShellChangeNotifier应侦听文件或文件夹事件的位置。如果列表为空,组件将通知整个文件系统的更改。在左侧,您可以选择组件应创建更改事件的事件。在我们的示例中,文本框包含相关信息。它被绑定到组件的“Change”事件中。
入门:JamDriveList
JamDriveList组件列出了配置的驱动器号和当时可用的磁盘空间。
ExplorerBrowser
ExplorerBrowser示例项目向您展示了如何使用TJamExplorerBrowser组件。TJamExplorerBrowser控件模拟整个Windows Explorer。了解如何轻松配置列和显示窗格、应用筛选器或设置组和排序选项。
JAMExplorer
JAMExplorer是一个项目,它向您展示了如何使用ShellBrowser组件套件的可视化Shell控件构建类似于资源管理器的应用程序。在左窗格中,您可以看到Windows树视图,在右窗格中,将显示当前文件夹的内容。工具栏包含一些常用的资源管理器按钮,如删除、属性和小/大图标。当用户右键单击某个项目时,将显示上下文菜单。可以重命名所有项;支持拖放操作。为这个示例项目编写的唯一额外代码是窗口工具栏中SpeedButtons的处理程序(通常每个按钮一行)。
JAMSearch
JAMSearch是一个模拟Windows文件搜索的项目。用户可以搜索文件类型以及某些文件日期或文件大小,并决定是否应在搜索中包含子文件夹。单击“Browse”选择搜索的文件夹或驱动器将打开一个附加的选择窗口。
Easy
Easy是一个介绍性项目,它演示了一些使用TShellBrowser类经常需要的功能,例如如何显示上下文菜单或单个对象的属性页,或者如何使用不可见组件TShellBrowser查询元素的缩略图。
此外,它还演示了如何使用TShellBrowser组件调用Windows 9x/NT的BrowseForFolder对话框。
JAMDragDrop
JAMDragDrop是一个项目,它显示了对TJamDropFiles和TJamDragFiles组件的处理以及用户拥有的可能性。它记录连接的控件接收或启动的拖动操作。
客户评价
我们百分之百致力于为全球客户和合作伙伴提供最佳的解决方案和服务。但不要相信我们的话!请查看以下ShellBrowser Delphi用户的第一手意见。
“如果没有ShellBrowser Delphi Components,我(很可能)就不会开始着手我的项目。实现ShellBrowser所涵盖的所有复杂功能只会花费太多时间。非常感谢您的大力支持。如果没有您实现的ShellBrowser更改和快速错误修复,我的产品将不会发布!一切工作都很快、稳定,就像我预期的那样。”
——Evgeni Shmakov,Chameleon Explorer首席执行官
“ShellBrowser Delphi Components是我见过的最好的VCL Shell工具,其中包括我使用多年但不再更新的Plasmatech。继续努力。”
——Bill Miller
“我只想告诉您,我对ShellBrowser for Delphi的最新版本(V7.3)非常满意,它非常出色。我在Windows 7下遇到的与旧版本的不一致问题已经消失了,我不必修改代码。继续做出色的工作。”
——Mick Florey
“我在Shellshock、GXExplorer、Shell控制包和ShellBrowser之间进行了相当长时间的考察。
GXExplorer和Shellshock仍然有主要的bug,使用大约3秒后变得非常不稳定。
Shell Control套包(Plasmatech)在功能集中受到了一些限制。不过很好…主要问题是他们的支持不会费心回复您,即使您是潜在客户。(4颗星)
ShellBrowser(Jam软件)似乎能满足所有人的要求……拥有ShellShock和GXExplorer所拥有的所有功能。支持是非常好的,即使不是注册客户。(5颗星)
——Stiaan Pretorius
“我最近购买了您的Shellbrowser Delphi Components,我很喜欢它们,我使用的是[其他商业shell组件],但您的产品价格非常合理,文档也非常优秀。”
——Fermin Fernandez
常见问题解答
我们收集了客户最常问的问题,并让我们的专家给出了答复。快来看看您关于ShellBrowser Delphi Components上的问题是否已得到解答。
我们是否需要为我们分发的和使用ShellBrowser Components的EXE文件支付额外的版税?
不需要。ShellBrowser组件是免版税的。这意味着在您购买了它们之后,您可以分发编译好的项目,而不需要额外的成本或费用。
如何在RAD Studio中手动注册ShellBrowser组件?
使用我们的安装程序时:在RAD Studio中选择:Components > Install Packages > Add... > "%BDSCOMMONDIR%\BPL\JamShellBrowserDesign.bpl”
使用ZIP文件下载时(仅限源代码客户):解压缩ZIP文件,打开“Packages\RAD Studio XE*\JamShellBrowserDesign.dproj”,右键单击项目管理器中的“JamShellBrowserDesign.bpl”,然后选择“Install”。
编译期间,我收到错误消息“Fatal Error: File not Found: ShellBrowser.dcu”。这是怎么了?
Delphi的库路径中缺少ShellBrowser的路径。您可能需要在Tools / Environment Options / Library / Library Path下手动添加它。
将文件复制到剪贴板的最简单方法是什么?
将TShellBrowser组件放置在表单上,并使用与ShellBrowser.InvokeContextMenuCommand示例中的代码类似的代码。
如何将XYZ显示为缩略图?
缩略图是通过Windows Explorer使用的相同Windows API函数生成的,因此ShellBrowser组件将显示类似于Windows Explorer的缩略图。要为Windows不支持的特定文件格式提供现成的缩略图,最好在系统中注册一个thumbnail provider。另一个选择是使用TJamShellList控件的onSumbNailUpdated事件,它允许您更改生成的缩略图。TShellBrowser.SetThumbnailProvider() 允许您设置一个应用程序范围的缩略图提供程序,如果系统不提供缩略图提供程序,则调用该缩略图提供程序。
ShellBrowser Delphi Components的新功能是什么?
版本11.1
新功能和改进
新的“TJamFilterCombo”表示从Windows文件对话框中已知的筛选器组合框。可以指定文件扩展名,作为使用TJamShellLink连接的其他组件的筛选器。在可编辑模式下,组件还可以用于应用非预定义的过滤器,这些过滤器可以动态键入。
新的“TJamOpenSaveCombo”组件表示用于在标准Windows文件打开或保存对话框中选择或提供文件名的编辑组件。
在下拉列表中显示上次使用的文件。使用TJamShellLink,它可以连接到其他ShellBrowser组件,以同步当前目录或筛选下拉列表中可用的文件。有关用法示例,请参阅JamExplorer中的“Dialogs > Custom File Open Dialog”。
TJamShellList、TJamFileList、TJamDriveList:已重新排序。
使用新的“Sort(TShellColumnId, TSortDirection)”方法,现在可以按所有Shell列对项进行排序,无论是否可见。这适用于所有视图状态。
出于性能原因,可以使用“IsSorted”属性将列表设置为未排序。这是FileList的默认值。与前一版本不同,最后一个排序顺序仍然保留,因此您可以在任何时候关闭并重新激活排序。
TJamFileList,TJamShellList:与Windows File Explorer一样,“项目类型”列现在按可见值排序,而不是按相应的文件扩展名排序。
TJamShellList,TJamFileList:对包含日期或数字值的列进行排序时,默认的排序顺序现在是降序。
TJamShellTree:“MultipleRoots”属性有一个新选项:“TMultipleRoots.mrFirstLevel”使用分配给“RootedAt”或“RootedAtFileSystemFolder”的根文件夹;但是,它将枚举所有子文件夹并将其添加为根文件夹,而不是将此文件夹显示为ShellTree的单个根节点。
TJamShellLink:现在可以使用新的“OnNavigating”事件限制与TJamShellLink实例链接的所有控件的文件夹访问。在更改与TJamShellLink实例链接的任何控件的路径之前调用该事件,并且设置“取消”参数将中止路径更改。
TJamDropFiles:拖放操作的“IDataObject”现在可以通过新的“DataObject”属性直接访问。
TShellBrowser:改进了系统图像列表中图标的高DPI缩放
TJamShellList:现在可以在“Name”列之前创建一个自定义列,方法是将索引设置为“0”。如果“FullDrag”被激活,则可以将“Name”列临时移动到其他位置。请注意,下次加载列时,它将在第一个位置还原。
TJamDriveList、TJamFileList、TJamShellList:可以使用新的“OnGetColumnInfo”事件一致地重命名列。给定的名称也将在标题上下文菜单和列选择对话框中使用。
TJamShellList、TJamFileList、TJamShellTree:为ShellList、FileList和ShellTree引入了新的“OnSelectionChanged”事件。当所选内容更改或删除时调用它,但与“OnSelectItem”不同的是,它不会为所选内容中的每个项调用。
TJamShellList:“粘贴”和“新文件夹”现在是可用的了,并在附加移动设备的ShellList背景上下文菜单中工作。
TJamDriveList:现在,每个驱动器的磁盘空间信息每10秒更新一次。可以使用新属性“DefaultUpdateInterval”更改此时间跨度。通过将该值设置为“0”,可以关闭该功能。
TJamShellList,TJamFileList:新属性“IconSize”可用于配置viewstyle vsIcons中图标的大小。属性“StudioBigIon”和“SuxExalalGigeon”仍然存在,但被从对象检查器中删除。此外,将这些属性或属性“Thumbnails”设置为false将不再有任何效果;相反,需要设置所需的图标大小。这是一个突破性的变化。
默认值“IconSpacing”已更改为“-1”,这意味着空间是自动设置的。
ShellBrowser中的新过程“SendDropFiles(HWnd,TStrings)”将给定文件的列表发送到窗口,模拟对窗口的手动拖放操作。
TJamFilePreview:使用“OnLoadPreview”事件中的新“TJamFilePreviewLoadPreviewEventArgs.forceGuitThread”选项,可以强制同步加载和卸载预览,而不是在单独的线程中处理。这可能会解决有关单个PreviewHandlers或用例的问题,其中在异步加载时PreviewHandlers无法按预期工作。
漏洞修复
总体:修复了各个组件中每个监视器的高DPI问题。
Thumbnails、TJamFileList、TJamShellList:为了避免在检索文件夹缩略图时可能出现的延迟,引入了一个新属性“FastFolderThumbnails”。如果设置为true(默认),则仅显示预览文件夹内容的文件夹缩略图(如果它们已被缓存)。
Thumbnails:使用Adobe Acrobat作为缩略图处理程序,以非标准尺寸检索的PDF文件的缩略图显示为黑色。这个问题已经解决了。
TJamFolderCombo:“Sorted”属性现在按预期工作:如果设置为false,则项目将按添加顺序显示。此属性的默认值已更改为“true”。
TJamShellTree:快速访问节点现在不包含ZIP存档,除非为ShellTree激活了“ShowFiles”。此外,ZIP存档文件是使用文件属性识别的,而不是检查扩展名。
TJamShellTree:修复了一个问题,即如果为ShellTree设置了“ShowRorMessages”属性,则无法在Windows 7“Favorites”根节点中选择节点。
TJamShellTree:绘制选定节点时,即使ShellTree没有焦点,也会保留VCL主题的默认文本颜色。对于深色VCL主题,这样可以避免深色背景上的深色文本。
TJamShellList:通过拖放或复制粘贴将大量元素插入文件夹时提高了性能。
TJamShellList,TJamShellSearchEdit:如果显示搜索结果,并通过按backspace键或历史记录组件转到父文件夹,则开始搜索的文件夹现在将重新打开,而不是桌面。
TJamShellList:由于内部问题,并非所有可用的Shell列都可以实际添加到ShellList中。这个问题已经解决了。
TJamShellList,TShellBrowser:打开bitlocker安全驱动器现在显示密码对话框,即使是32位应用程序。
TJamShellList:已修复自定义列和使用VCL主题时出现的闪烁问题。
TJamShellList:改进缩略图性能。
TJamShellList:现在已处理在执行“OnThumbnailUpdated”事件处理程序期间可能发生的“EInvalidOperation”错误。
如果“MultiSelect”属性设置为false,则TJamShellColumnSelectionDialog中的列现在将按字母顺序排序,而不是显示为未排序
TJamShellList,TJamFileList:自动调整列宽的“AutoAdjustColumnWidths”方法,自动调整列的大小以适应其内容,现在在ShellList的“OnPopulated”事件中调用时再次工作。另外,现在可以通过一个不能超过的最小最大范围。
TJamFileOperation:TJamFileOperation现在不再是“TCommonDialog”,而是再次扩展了“TComponent”,因此它也包含在Rad Studio的组件面板中,用于数据模块。
TJamDriveList:“OnAddItem”和“OnAddPath”事件现在再次调用,此时DriveList刷新其内容(例如按F5)。必须在其中一个事件中再次提供自定义列的值。
TJamDriveList:关于“AutoSizeColumn”大小的视觉问题已修复。
TJamDriveList:针对无法到达的位置处理可能的延迟。
TJamPathLabel:在加载不可访问路径时防止了可能的延迟。
总体:修复了EurekaLog为Tjamshell命令报告的可能的“EUseAfterFreeError”。
TJamShellCombo:修复了在特定条件下可能发生的内存泄漏(控件的句柄被重新创建并在不可见时最终被销毁)。
中断更改和不推荐的警告:
类型“TJamSortDirection”已从单元JamSystemShellView移动到Jam.Shell.Types。
TJamItemIdList:“TItemIdListDisplayNameFormat.dnf_relativeForRadDressBar”被重命名为“TItemIdListDisplayNameFormat.dnfRelativeForAddressBar”。
TJamShellList,TJamShellTree:如果没有物理路径可用(例如,对于虚拟文件夹),则某些与路径相关的属性现在返回元素的显示路径,而不是返回空字符串。这些是TJamShellTreeNode.FullPath、TJamShellListItem.FullPath、TJamShellList.Path、TJamShellTree.SelectedFolder。如果依赖于旧功能,请使用相应ItemIdList的“Path”属性。
此外,“TJamShellList.GetFullPath”现在已被弃用。请改用TJamShellItem.Path或TJamShellListItem.AbsoluteItemIdList.Path。
Threadpool:TDelayedProcedure.Create现在不推荐使用。改用类过程“TDelayedProcedure.CreateAndQueue”。
TJamFolderCombo:TJamFolderCombo.AddFolder()现在异步添加给定的路径,以防止在无法访问路径时应用程序被冻结。因此,它不再返回新项的索引,这是一个突破性的变化。如果使用返回值选择添加的项,请改用SelectFolder()方法。