⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ajfilebrowser.pas

📁 FileBrowser, source code for delphi
💻 PAS
📖 第 1 页 / 共 5 页
字号:
          ///////////////////////////////////////////////////////////////////////
          //                                                                   //
          //       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 + -