📄 ajfilebrowser.pas
字号:
///////////////////////////////////////////////////////////////////////
// //
// SoftSpot Software Component Library //
// Key Maker software component //
// //
// Copyright (c) 1996 - 2002 SoftSpot Software Ltd. //
// ALL RIGHTS RESERVED //
// //
// The entire contents of this file is protected by U.S. and //
// International Copyright Laws. Unauthorized reproduction, //
// reverse-engineering, and distribution of all or any portion of //
// the code contained in this file is strictly prohibited and may //
// result in severe civil and criminal penalties and will be //
// prosecuted to the maximum extent possible under the law. //
// //
// RESTRICTIONS //
// //
// THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED //
// FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE //
// COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE //
// AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT //
// AND PERMISSION FROM SOFTSPOT SOFTWARE LTD. //
// //
// CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON //
// ADDITIONAL RESTRICTIONS. //
// //
///////////////////////////////////////////////////////////////////////
unit ajFileBrowser;
{ -=< Key Maker File Browser >=-
{
{ Copyright SoftSpot Software 2002 - All Rights Reserved
{
{ Author : Andrew J Jameson
{
{ Web site : www.softspotsoftware.com
{ e-mail : contact@softspotsoftware.com
{
{ Creation Date : 01 March 2002
{
{ Version : 1.00
{
{ Description : File property editor for Key Maker. }
interface
uses
Forms, Windows, ImgList, Controls, Menus, ComCtrls, StdCtrls, ExtCtrls,
Graphics, Buttons, Classes, Messages, ajKeyMakerAbout, ajAlterMenu, ajRecentKeys;
type
TajColumnSettings = record
DefWidth : integer;
Visible : boolean;
end;
type
TfrmFileBrowser = class(TForm)
Bevel1 : TBevel;
Bevel2 : TBevel;
btnBookmark : TSpeedButton;
btnCancel : TSpeedButton;
btnDetails : TSpeedButton;
btnLargeIcons : TSpeedButton;
btnList : TSpeedButton;
btnRefresh : TSpeedButton;
btnSmallIcons : TSpeedButton;
btnUpdate : TSpeedButton;
edFilename : TEdit;
imButtons : TImageList;
imLarge : TImageList;
imMenu : TImageList;
imSmall : TImageList;
lvDrives : TListView;
lvFiles : TListView;
lvFilesPopupMenu : TPopupMenu;
MainMenu : TMainMenu;
mnuAbout : TMenuItem;
mnuAccessedCol : TMenuItem;
mnuArchive : TMenuItem;
mnuAttributes : TMenuItem;
mnuAttributesCol : TMenuItem;
mnuBookmarks : TMenuItem;
mnuColumns : TMenuItem;
mnuCopyPath : TMenuItem;
mnuCreatedCol : TMenuItem;
mnuDetails : TMenuItem;
mnuEditFileParams : TMenuItem;
mnuExit : TMenuItem;
mnuExplorer : TMenuItem;
mnuHidden : TMenuItem;
mnuLargeIcons : TMenuItem;
mnuList : TMenuItem;
mnuModifiedCol : TMenuItem;
mnuNormal : TMenuItem;
mnuOptions : TMenuItem;
mnuPopBookmark : TMenuItem;
mnuReadOnly : TMenuItem;
mnuRefresh : TMenuItem;
mnuShowFolders : TMenuItem;
mnuSizeCol : TMenuItem;
mnuSmallIcons : TMenuItem;
mnuSystem : TMenuItem;
mnuTypeCol : TMenuItem;
mnuUpdate : TMenuItem;
mnuView : TMenuItem;
mnuViewType : TMenuItem;
mnuXPMenu : TMenuItem;
N1 : TMenuItem;
N2 : TMenuItem;
N5 : TMenuItem;
N6 : TMenuItem;
pnBack : TPanel;
pnFilename : TPanel;
pnToolbar : TPanel;
StatusBar : TStatusBar;
procedure FormCreate (Sender : TObject);
procedure FormShow (Sender : TObject);
procedure FormResize (Sender : TObject);
procedure FormClose (Sender : TObject; var Action : TCloseAction);
procedure FormDestroy (Sender : TObject);
procedure mnuAboutClick (Sender : TObject);
procedure mnuAttributesClick (Sender : TObject);
procedure mnuBookmarkClick (Sender : TObject);
procedure mnuColumnsClick (Sender : TObject);
procedure mnuCopyPathClick (Sender : TObject);
procedure mnuEditFileParamsClick (Sender : TObject);
procedure mnuExitClick (Sender : TObject);
procedure mnuShowFoldersClick (Sender : TObject);
procedure mnuRefreshClick (Sender : TObject);
procedure mnuUpdateClick (Sender : TObject);
procedure mnuViewTypeClick (Sender : TObject);
procedure mnuXPMenuClick (Sender : TObject);
procedure lvFilesColumnClick (Sender : TObject; Column : TListColumn);
procedure lvFilesCompare (Sender : TObject; Item1, Item2 : TListItem; Data : integer; var Compare : integer);
procedure lvFilesDblClick (Sender : TObject);
procedure lvFilesKeyDown (Sender : TObject; var Key : Word; Shift : TShiftState);
procedure lvFilesSelectItem (Sender : TObject; Item : TListItem; Selected : boolean);
procedure lvDrivesCompare (Sender : TObject; Item1, Item2 : TListItem; Data : integer; var Compare : integer);
procedure lvDrivesDblClick (Sender : TObject);
procedure lvDrivesKeyDown (Sender : TObject; var Key : Word; Shift : TShiftState);
private
{ Private declarations }
fSortArrows : array[0..1] of TBitmap;
fajAlterMenu : TajAlterMenu;
fajRecentKeys : TajRecentKeys;
fColumnSettings : array[0..6] of TajColumnSettings;
fFoldersHidden : boolean;
fIsPropertyEditor : boolean;
fFileMask : string;
fFileAttributes : DWORD;
fSortAscending : boolean;
fColumnToSort : integer;
flvOldWindowProc : TWndMethod;
fRootIconIndex : integer;
fFilename : string;
procedure lvNewWindowProc (var Message : TMessage);
protected
procedure SetfIsPropertyEditor (Value : boolean);
procedure SetfFilename (Value : string);
procedure GetSystemIcons;
procedure SetFileAttributesFilter;
procedure AddDrives;
procedure RefreshlvFiles;
procedure RefreshlvDrives;
procedure UpdateFileListView (FileMask : string; Attribute : DWORD);
procedure FileSelected (Item : TListItem);
procedure SetColumnBitmap (Column : TListColumn);
procedure RecentKeyClick (KeyName : string);
procedure SetBookmarkControls (Tag : integer);
function FileFindAndSelect (ListView : TListView; FileCaption : string) : boolean;
public
{ Public declarations }
property IsPropertyEditor : boolean read fIsPropertyEditor write SetfIsPropertyEditor;
property Filename : string read fFilename write SetfFilename;
end;
var
frmFileBrowser : TfrmFileBrowser;
implementation
{$R *.DFM}
{$R FileBrowser.res}
{$IFDEF VER140} // Delphi6
{$WARN SYMBOL_PLATFORM OFF}
{$ENDIF}
uses
SysUtils, CommCtrl, ShellAPI, Registry, Clipbrd, ajFileEditParams;
const
cColName = 0; // Column references.
cColSize = 1;
cColType = 2;
cColCreated = 3;
cColModified = 4;
cColAccessed = 5;
cColAttributes = 6;
cColFullName = 7;
cColDirFile = 8;
cColDriveName = 5;
cAddBookmark = 3;
cRemoveBookmark = 4;
type
TajRegReadWrite = (tRegRead, tRegWrite);
{--------------------------------------------------------------------------------------------------}
{ Registry - Read / Write Menu }
{--------------------------------------------------------------------------------------------------}
procedure RegSubMenuSettings(Menu : TMenuItem; RegPath : string; ReadWrite : TajRegReadWrite);
var
lp1 : integer;
Name : string;
begin
with TRegistry.Create do begin
try
RootKey := cRegHKEY;
if OpenKey(RegPath, ReadWrite = tRegWrite) then begin
for lp1 := 0 to pred(Menu.Count) do begin
if (Menu.Items[lp1].Count > 0) then
RegSubMenuSettings(Menu.Items[lp1], RegPath, ReadWrite)
else begin
Name := StripHotKey(Menu.Items[lp1].Caption);
if (Name <> '-') then begin
if (ReadWrite = tRegRead) then begin
if ValueExists(Name) then begin
if (Menu.Items[lp1].Checked <> ReadBool(Name)) then
Menu.Items[lp1].Click;
end; {if}
end else
WriteBool(Name, Menu.Items[lp1].Checked);
end; {if}
end; {if}
end; {for}
CloseKey;
end; {if}
finally;
Free;
end; {try}
end; {with}
end; {RegSubMenuSettings}
{--------------------------------------------------------------------------------------------------}
{ Miscellaneous Procedure & Functions }
{--------------------------------------------------------------------------------------------------}
type
TDiskInfo = record
MediaType : string[10];
Serial : DWORD;
Capacity : Int64;
FreeSpace : Int64;
VolumeLabel : array[0..$FF] of char;
FileSystem : array[0..$FF] of char;
end;
function GetDiskInfo(Value : string) : TDiskInfo;
var
ErrorMode : Word;
DW : DWORD;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -