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

📄 mainf.pas

📁 极具实用价值的文件管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{ *********************************************************************** }
{ Unit Name: MainF
{ Purpose: Main Form
{ Author: Cyclone
{ History:
{         2004-5-31 23:34:14 Create the function
{ *********************************************************************** }

unit MainF;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ToolWin, ComCtrls, Menus, ExtCtrls, ActnList,
  ADODB, DB, ImgList, BaseF, WinSkinData, ShellApi, PubFuns, CycListView,
  {$IFDEF MSWINDOWS} FileCtrl, {$ENDIF} CycSpeedButton, CycEdit, CycLabel,
  jpeg, CycPanel, IniFiles, GR32_Image;

type
  TPanelStatus = (psCategory, psSearch);
  TItemsStatus = (iuAll, iuSelected);

  TfmMain = class(TfmBase)
    mnuMain: TMainMenu;
    ToolBar1: TToolBar;
    File1: TMenuItem;
    Edit1: TMenuItem;
    View1: TMenuItem;
    ool1: TMenuItem;
    Help1: TMenuItem;
    ToolButton1: TToolButton;
    Splitter1: TSplitter;
    ActionList1: TActionList;
    StatusBar: TStatusBar;
    Exit1: TMenuItem;
    ToolButton2: TToolButton;
    mnuViewStyle: TPopupMenu;
    actIcon: TAction;
    actSmallIcon: TAction;
    actList: TAction;
    actReport: TAction;
    actePdmHelp: TAction;
    actePdmHomePage: TAction;
    actSupportOnLine: TAction;
    actAbout: TAction;
    actAddCategory: TAction;
    actEditCategory: TAction;
    Icon1: TMenuItem;
    SmallIcon1: TMenuItem;
    List1: TMenuItem;
    Report1: TMenuItem;
    ePdmHelp1: TMenuItem;
    ePdmHomePage1: TMenuItem;
    SupportOnLine1: TMenuItem;
    About1: TMenuItem;
    actDeleteCategory: TAction;
    actAddDocument: TAction;
    actEditDocument: TAction;
    actDeleteDocument: TAction;
    actFindDocument: TAction;
    actImportFromFolder: TAction;
    Document1: TMenuItem;
    actAddCategory1: TMenuItem;
    actEditCategory1: TMenuItem;
    actDeleteCategory1: TMenuItem;
    actAddDocument1: TMenuItem;
    actEditDocument1: TMenuItem;
    actDeleteDocument1: TMenuItem;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    imgCategory: TImageList;
    imgLargeDocuments: TImageList;
    imgSmallDocuments: TImageList;
    ImgActionList: TImageList;
    pnlStructure: TPanel;
    pnlPreview: TPanel;
    Splitter2: TSplitter;
    mnuTreeView: TPopupMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    AddDocument1: TMenuItem;
    EditDocument1: TMenuItem;
    FindDocument1: TMenuItem;
    Icon2: TMenuItem;
    SmallIcon2: TMenuItem;
    List2: TMenuItem;
    Report2: TMenuItem;
    View2: TMenuItem;
    Sort1: TMenuItem;
    N2: TMenuItem;
    AddDocument2: TMenuItem;
    EditDocument2: TMenuItem;
    DeleteDocument2: TMenuItem;
    N1: TMenuItem;
    actExportToFolder: TAction;
    actSystemOptions: TAction;
    actCategory: TAction;
    actForwards: TAction;
    ImportFromFolder1: TMenuItem;
    ExportToFolder1: TMenuItem;
    N3: TMenuItem;
    SystemOptions1: TMenuItem;
    imgFolder: TImage;
    trvCategory: TTreeView;
    pnlWorkSpace: TPanel;
    pnlSearchTitle: TPanel;
    lsvDocuments: TCycListView;
    Image1: TImage;
    Image2: TImage;
    CycPanel1: TCycPanel;
    lblSearchResult: TCycLabel;
    Image3: TImage;
    lblDocNo2: TCycLabel;
    lblDocName2: TCycLabel;
    lblFileName2: TCycLabel;
    lblVersion2: TCycLabel;
    lblDocPath2: TCycLabel;
    lblDocNo1: TCycLabel;
    lblDocName1: TCycLabel;
    lblFileName1: TCycLabel;
    lblVersion1: TCycLabel;
    lblDocPath1: TCycLabel;
    lblSelectItem: TCycLabel;
    mnuIcon: TPopupMenu;
    ViewConsole1: TMenuItem;
    AutostartwhenOSstarts1: TMenuItem;
    Abort1: TMenuItem;
    MenuItem5: TMenuItem;
    ExitX1: TMenuItem;
    actRefresh: TAction;
    N4: TMenuItem;
    Refresh1: TMenuItem;
    N5: TMenuItem;
    Refresh2: TMenuItem;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    actBackwards: TAction;
    actUpwards: TAction;
    pnlSearch: TPanel;
    srbSearch: TScrollBox;
    lblDocNo: TCycLabel;
    lblDocType: TCycLabel;
    lblDocName: TCycLabel;
    lblFileName: TCycLabel;
    lblVersion: TCycLabel;
    lblRemarks: TCycLabel;
    lblIncludeContent: TCycLabel;
    btnSearch: TCycSpeedButton;
    edtDocNo: TCycEdit;
    edtDocType: TCycEdit;
    edtDocName: TCycEdit;
    edtFileName: TCycEdit;
    edtVersion: TCycEdit;
    edtRemarks: TCycEdit;
    edtIncludeContent: TCycEdit;
    pnlAddress: TPanel;
    lblAddress: TCycLabel;
    edtAddress: TCycEdit;
    btnGo: TCycSpeedButton;
    SkinData1: TSkinData;
    actExit: TAction;
    imgHugeDocuments: TImageList;
    actThumbnails: TAction;
    imgPreview: TImage32;
    SaveDialog: TSaveDialog;
    actExportDocument: TAction;
    ToolButton15: TToolButton;
    N6: TMenuItem;
    Export1: TMenuItem;
    ToolButton16: TToolButton;
    N7: TMenuItem;
    ExportDocument1: TMenuItem;
    ToolButton17: TToolButton;
    ToolButton18: TToolButton;
    actRefreshTree: TAction;
    N8: TMenuItem;
    Refresh3: TMenuItem;
    actModifyPassword: TAction;
    ModifyPassword1: TMenuItem;
    N9: TMenuItem;
    imgWarning: TImage;
    imgListView: TImageList;
    procedure actAboutExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure trvCategoryChange(Sender: TObject; Node: TTreeNode);
    procedure actIconExecute(Sender: TObject);
    procedure actSmallIconExecute(Sender: TObject);
    procedure actListExecute(Sender: TObject);
    procedure actReportExecute(Sender: TObject);
    procedure actAddCategoryExecute(Sender: TObject);
    procedure actEditCategoryExecute(Sender: TObject);
    procedure actDeleteCategoryExecute(Sender: TObject);
    procedure lsvDocumentsDblClick(Sender: TObject);
    procedure actAddDocumentExecute(Sender: TObject);
    procedure actEditDocumentExecute(Sender: TObject);
    procedure actDeleteDocumentExecute(Sender: TObject);
    procedure lsvDocumentsCustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure lsvDocumentsSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure trvCategoryMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure trvCategoryCustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure actSystemOptionsExecute(Sender: TObject);
    procedure Splitter1Moved(Sender: TObject);
    procedure lsvDocumentsKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure actFindDocumentExecute(Sender: TObject);
    procedure actCategoryExecute(Sender: TObject);
    procedure btnSearchClick(Sender: TObject);
    procedure trvCategoryEnter(Sender: TObject);
    procedure actImportFromFolderExecute(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure ViewConsole1Click(Sender: TObject);
    procedure AutostartwhenOSstarts1Click(Sender: TObject);
    procedure Abort1Click(Sender: TObject);
    procedure ExitX1Click(Sender: TObject);
    procedure actExportToFolderExecute(Sender: TObject);
    procedure actRefreshExecute(Sender: TObject);
    procedure actForwardsExecute(Sender: TObject);
    procedure actBackwardsExecute(Sender: TObject);
    procedure actUpwardsExecute(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    //procedure lsvDocumentsColumnClick(Sender: TObject; Column: TListColumn);
    //procedure lsvDocumentsCompare(Sender: TObject; Item1, Item2: TListItem;
    //  Data: Integer; var Compare: Integer);
    procedure srbSearchResize(Sender: TObject);
    procedure trvCategoryDragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    procedure lsvDocumentsStartDrag(Sender: TObject;
      var DragObject: TDragObject);
    procedure lsvDocumentsEndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure trvCategoryDragDrop(Sender, Source: TObject; X,
      Y: Integer);
    procedure actExitExecute(Sender: TObject);
    procedure actThumbnailsExecute(Sender: TObject);
    procedure actExportDocumentExecute(Sender: TObject);
    procedure actePdmHelpExecute(Sender: TObject);
    procedure actRefreshTreeExecute(Sender: TObject);
    procedure actModifyPasswordExecute(Sender: TObject);
  private
    { Private declarations }
    HistoryFileNameList: TStringList;
    IsAutoFit: Boolean;
    ProgressBar: TProgressBar;
    NotifyIconData: TNotifyIconData;
    HistoryTreeNodes: array[1..MaxHistoryTreeNodeCount] of TTreeNode;
    CurrentHistoryPosition: Integer;
    HistoryTreeNodeCount: Integer;
    //SortType: TSortType;
    //ColumnToSort: Integer;
    FileIcon: TIcon;
    IconComparisonTable: array of String;
    ThumbnailsComparisonTable: array of String;
    procedure InitApplication;
    procedure InitGUI;
    procedure InitHistoryTreeNodes;
    procedure InitProgressBar;
    procedure InitViewStyle;
    procedure InitTreeView;
    procedure InitCategoryTree(ATreeView: TTreeView; ParentNode: TTreeNode;
      ADataSet: TADODataSet; const CodeFieldName, ParentCodeFieldName: String;
      const ParentCodeFieldValue: String = ''; const DisplayFieldName: String = '');
    procedure FillListView(AListView: TListView; ATreeNode: TTreeNode);
    procedure FreeTreeNodeObjs(ATreeView: TTreeView);
    procedure FreeListItemObjs(AListView: TListView);
    function CreateTreeNodeObj(const CategoryCode, CategoryName, ParentCategoryCode, Remarks, Creator, LastModifier: String;
      CreateDate, LastModifyDate: TDateTime;  ModifyTimes: Integer): PTreeNodeObj;
    function CreateListItemObj(const ItemType: TItemType; const DocNo, DocType, DocName,
      FileName, OriginalExtName, Version, Remarks, Creator, LastModifier: String;
      CreateDate, LastModifyDate: TDateTime; ModifyTimes: Integer; const FileSize: Double): PListItemObj;
    function DeleteCategory(ATreeNode: TTreeNode): Boolean;
    function DeleteADocument(AListItem: TListItem): Boolean;
    function DeleteDocuments: Boolean;
    procedure OpenCategory(const CategoryCode: String);
    function FindTreeNodeByCategoryCode(const CategoryCode: String): TTreeNode;
    procedure OpenDocuments(const DocNo: String);
    procedure AddADocument(const FileName: String = '');
    procedure ShellOpenFile(AItem: TListItem);
    procedure SetPanelStatus(const PanelStatus: TPanelStatus);
    function GetSearchSQL: String;
    procedure SearchDocuments(AListView: TListView);
    procedure RefershItemInformatoin(AItem: TListItem);
    procedure SetItemInformationStatus(const Selected: Boolean);
    procedure RestoreWindow;
    procedure ReadIniFile;
    procedure WriteIniFile;
    procedure ImportFromAFolder(const AFolder: String = '');
    procedure ImportFromFolder(const APath, CategoryCode: String;
      const FileExistsAction: TImportFileExistsAction; const IncludeSubCategory: Boolean);
    procedure ExportToFolder(const APath, CategoryCode: String;
      const FileExistsAction: TExportFileExistsAction);
    function GetSelectedDocumentCount: Integer;
    procedure SetColumnStatus(const PanelStatus: TPanelStatus);
    procedure AddHistoryTreeNode(ATreeNode: TTreeNode);
    procedure RefreshActionStatus(ATreeNode: TTreeNode);
    procedure RefreshSelectedItemsInfo(AListView: TListView);
    procedure RefreshAddress(ATreeNode: TTreeNode);
    function GetItemsSize(const ItemState: TItemsStatus): Double;
    procedure DragDocuments(const DestCategoryCode: String);
    function GetIconIndex(const FileType: String): Integer;
    procedure CheckSystemOptions;
    procedure AppDeactivate(Sender: TObject);
  protected
    { Public declarations }
  public
    { Public declarations }
    procedure WMDropFiles(var Message: TMessage);
    procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
    procedure OnIconNotify(var Msg: TMessage); message WM_ICONMESSAGE;
    procedure OnSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
  end;

var
  fmMain: TfmMain;

implementation

uses AboutF, MainD, Math, DocumentsTypeF, DocumentsF,
  SystemOptionsF, ImageViewerF, ImportFromFolderF, ExportToFolderF,
  ModifyPasswordF;

{$R *.dfm}

procedure TfmMain.FormCreate(Sender: TObject);
begin
  HistoryFileNameList := TStringList.Create;
  FileIcon := TIcon.Create;
  SetLength(IconComparisonTable, 2);
  SetLength(ThumbnailsComparisonTable, 2);
  IconComparisonTable[0] := CATEGORY;
  IconComparisonTable[1] := DOCUMENT;
  ThumbnailsComparisonTable[0] := CATEGORY;
  ThumbnailsComparisonTable[1] := DOCUMENT;
  InitApplication;
  ReadIniFile;
  InitHistoryTreeNodes;
  InitGUI;
  CheckSystemOptions;
end;

procedure TfmMain.FormActivate(Sender: TObject);
begin
  //trvCategory.SetFocus;
end;

procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  NotifyIconData.cbSize := SizeOf(NotifyIconData);
  NotifyIconData.uID := 0;
  NotifyIconData.Wnd := Handle;
  Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;

procedure TfmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := ShowYesNo('Are you sure to exit sytem?');
  AutoStartWhenOsStart(pSystemName, AutostartwhenOSstarts1.Checked);
  pMainFormLeft := Self.Left;
  pMainFormTop := Self.Top;
  pMainFormHeight := Self.Height;
  pMainFormWidth := Self.Width;
  pMainFormState := Self.WindowState;
  WriteIniFile;
end;

procedure TfmMain.FormDestroy(Sender: TObject);
begin
  DeleteHistoryFiles(HistoryFileNameList);
  FreeAndNil(HistoryFileNameList);
  FreeAndNil(FileIcon);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -