📄 mainf.pas
字号:
{ *********************************************************************** }
{ 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 + -