📄 mainf.pas
字号:
CurrentListItemObj: PListItemObj;
OriginalCursor: TCursor;
DocumentPath: String;
begin
OriginalCursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
edtAddress.Text := 'Search Result';
actAddCategory.Enabled := False;
pnlSearchTitle.Visible := True;
SetItemInformationStatus(False);
actReport.Execute;
FreeListItemObjs(AListView);
SetColumnStatus(psSearch);
//Refresh category List
dmMain.dsCategoryTree.Close;
dmMain.dsCategoryTree.Open;
//Add Documents
with dmMain.dsSearchDocuments do
begin
if Active then
Close;
SQL.Clear;
SQL.Add(GetSearchSQL);
try
Open;
while not Eof do
begin
Application.ProcessMessages;
DocumentPath := '';
dmMain.GetCategoryPath(FieldByName('DocType').AsString, DocumentPath);
CurrentListItem := AListView.Items.Add;
CurrentListItem.Caption := FieldByName('DocName').AsString;
CurrentListItem.SubItems.Add(FieldByName('FileName').AsString);
CurrentListItem.SubItems.Add(DocumentPath);
CurrentListItem.SubItems.Add(FieldByName('Version').AsString);
CurrentListItem.SubItems.Add(FieldByName('Creator').AsString);
CurrentListItem.SubItems.Add(FieldByName('CreateDate').AsString);
CurrentListItemObj := CreateListItemObj(itDocument, FieldByName('DocNo').AsString,
FieldByName('DocType').AsString, FieldByName('DocName').AsString,
FieldByName('FileName').AsString, FieldByName('OriginalExtName').AsString,
FieldByName('Version').AsString, FieldByName('Remarks').AsString,
FieldByName('Creator').AsString,
FieldByName('LastModifier').AsString, FieldByName('CreateDate').AsDateTime,
FieldByName('LastModifyDate').AsDateTime, FieldByName('ModifyTimes').AsInteger,
FieldByName('FileSize').AsFloat);
CurrentListItem.Data := CurrentListItemObj;
//CurrentListItem.ImageIndex := DocumentIndex;
CurrentListItem.ImageIndex := GetIconIndex(FieldByName('OriginalExtName').AsString);
Next;
end;
finally
Close;
end;
end;
finally
Screen.Cursor := OriginalCursor;
end;
//ColumnToSort := -1;
lsvDocuments.CurrentColumn := -1;
lsvDocuments.SortType := stASC;
end;
{-----------------------------------------------------------------------------
Procedure: TfmMain.GetSearchSQL
Purpose: Get Search SQL Statement
Arguments: None
Result: String
Author: Cyclone
History: 2004-12-2 23:59:18
-----------------------------------------------------------------------------}
function TfmMain.GetSearchSQL: String;
var
sCondition: String;
begin
sCondition := '';
if edtDocNo.Text <> '' then
sCondition := ' DocNo LIKE ' + QuotedStr('%' + edtDocNo.Text + '%');
if edtDocType.Text <> '' then
begin
if sCondition <> '' then
sCondition := sCondition + ' AND ';
sCondition := sCondition + ' DocType LIKE ' + QuotedStr('%' + edtDocType.Text + '%');
end;
if edtDocName.Text <> '' then
begin
if sCondition <> '' then
sCondition := sCondition + ' AND ';
sCondition := sCondition + ' DocName LIKE ' + QuotedStr('%' + edtDocName.Text + '%');
end;
if edtFileName.Text <> '' then
begin
if sCondition <> '' then
sCondition := sCondition + ' AND ';
sCondition := sCondition + ' FileName LIKE ' + QuotedStr('%' + edtFileName.Text + '%');
end;
if edtVersion.Text <> '' then
begin
if sCondition <> '' then
sCondition := sCondition + ' AND ';
sCondition := sCondition + ' Version LIKE ' + QuotedStr('%' + edtVersion.Text + '%');
end;
if edtRemarks.Text <> '' then
begin
if sCondition <> '' then
sCondition := sCondition + ' AND ';
sCondition := sCondition + ' Remarks LIKE ' + QuotedStr('%' + edtRemarks.Text + '%');
end;
if sCondition = '' then
sCondition := ' 1 = 1 ';
Result := ' SELECT * FROM Documents WHERE ' + sCondition + ' ORDER BY DocNo ';
end;
procedure TfmMain.btnSearchClick(Sender: TObject);
begin
btnSearch.Enabled := False;
try
trvCategory.Items[0].Selected := True;
SearchDocuments(lsvDocuments);
finally
btnSearch.Enabled := True;
end;
end;
procedure TfmMain.trvCategoryEnter(Sender: TObject);
begin
if trvCategory.Selected <> nil then
trvCategory.OnChange(trvCategory, trvCategory.Selected);
end;
{-----------------------------------------------------------------------------
Procedure: TfmMain.RefershItemInformatoin
Purpose: Refersh Item Informatoin
Arguments: AItem: TListItem
Result: None
Author: Cyclone
History: 2004-12-3 23:51:54
-----------------------------------------------------------------------------}
procedure TfmMain.RefershItemInformatoin(AItem: TListItem);
var
Path: String;
begin
with PListItemObj(AItem.Data)^ do
begin
dmMain.GetcategoryPath(DocType, Path);
lblDocNo1.Caption := DocNo;
lblDocPath1.Caption := Path;
lblDocName1.Caption := DocName;
lblFileName1.Caption := FileName;
lblVersion1.Caption := Version;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TfmMain.SetItemInformationStatus
Purpose: Set Item Information Status
Arguments: const Selected: String
Result: None
Author: Cyclone
History: 2004-12-4 0:06:48
-----------------------------------------------------------------------------}
procedure TfmMain.SetItemInformationStatus(const Selected: Boolean);
begin
if pnlSearchTitle.Visible then
begin
lblDocNo1.Visible := Selected;
lblDocPath1.Visible := Selected;
lblDocName1.Visible := Selected;
lblFileName1.Visible := Selected;
lblVersion1.Visible := Selected;
lblDocNo2.Visible := Selected;
lblDocPath2.Visible := Selected;
lblDocName2.Visible := Selected;
lblFileName2.Visible := Selected;
lblVersion2.Visible := Selected;
lblSelectItem.Visible := not Selected;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TfmMain.InitGUI
Purpose: Initialize Graphic User Interface
Arguments: None
Result: None
Author: Cyclone
History: 2004-12-6 21:33:17
-----------------------------------------------------------------------------}
procedure TfmMain.InitGUI;
begin
InitProgressBar;
InitTreeView;
SetPanelStatus(psCategory);
Self.Caption := Application.Title;
Self.Left := pMainFormLeft;
Self.Top := pMainFormTop;
Self.Height := pMainFormHeight;
Self.Width := pMainFormWidth;
Self.WindowState := pMainFormState;
lblSelectItem.Left := lblDocNo2.Left;
lblSelectItem.Top := lblDocNo2.Top;
SkinData1.Active := pUseSkin;
StatusBar.Panels[0].Text := pSysUserId;
end;
procedure TfmMain.actImportFromFolderExecute(Sender: TObject);
begin
ImportFromAFolder('');
end;
procedure TfmMain.FormResize(Sender: TObject);
begin
inherited;
if Self.Visible then
begin
ProgressBar.Width := StatusBar.Width;
end;
end;
procedure TfmMain.OnIconNotify(var Msg: TMessage);
var
CurPos: TPoint;
begin
if Msg.LParam = WM_LBUTTONDBLCLK then
RestoreWindow
else if Msg.LParam = WM_RBUTTONUP then
begin
GetCursorPos(CurPos);
mnuIcon.Popup(CurPos.X, CurPos.Y);
end
else
inherited;
end;
procedure TfmMain.OnSysCommand(var Msg: TWMSysCommand);
begin
if (Msg.CmdType = SC_MINIMIZE) then
Hide
else
inherited;
end;
procedure TfmMain.ViewConsole1Click(Sender: TObject);
begin
RestoreWindow;
end;
procedure TfmMain.AutostartwhenOSstarts1Click(Sender: TObject);
begin
AutostartwhenOSstarts1.Checked := not AutostartwhenOSstarts1.Checked;
end;
procedure TfmMain.Abort1Click(Sender: TObject);
begin
actAbout.Execute;
end;
procedure TfmMain.ExitX1Click(Sender: TObject);
begin
Close;
end;
{-----------------------------------------------------------------------------
Procedure: TfmMain.RestoreWindow
Purpose: Restore Window
Arguments: None
Result: None
Author: Cyclone
History: 2004-12-8 22:41:30
-----------------------------------------------------------------------------}
procedure TfmMain.RestoreWindow;
begin
if fmImageViewer <> nil then
begin
if fmImageViewer.Visible then
SetForegroundWindow(fmImageViewer.Handle)
else
fmImageViewer.Show;
end
else
begin
if Self.Visible then
SetForegroundWindow(Self.Handle)
else
Self.Show;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TfmMain.ReadIniFile
Purpose: Read Ini File
Arguments: None
Result: None
Author: Cyclone
History: 2004-12-8 22:54:00
-----------------------------------------------------------------------------}
procedure TfmMain.ReadIniFile;
var
ConfigFile: TIniFile;
begin
ConfigFile := TIniFile.Create(pIniFileName);
try
pMainFormTop := ConfigFile.ReadInteger('GUI', 'MainFormTop', 0);
pMainFormLeft := ConfigFile.ReadInteger('GUI', 'MainFormLeft', 0);
pMainFormHeight := ConfigFile.ReadInteger('GUI', 'MainFormHeight', 570);
pMainFormWidth := ConfigFile.ReadInteger('GUI', 'MainFormWidth', 780);
pMainFormState := TWindowState(ConfigFile.ReadInteger('GUI', 'MainFormState', Ord(wsNormal)));
pImagePreviewTop := ConfigFile.ReadInteger('GUI', 'ImagePreviewTop', 0);
pImagePreviewLeft := ConfigFile.ReadInteger('GUI', 'ImagePreviewLeft', 0);
pImagePreviewHeight := ConfigFile.ReadInteger('GUI', 'ImagePreviewHeight', 500);
pImagePreviewWidth := ConfigFile.ReadInteger('GUI', 'ImagePreviewWidth', 700);
pImagePreviewState := TWindowState(ConfigFile.ReadInteger('GUI', 'ImagePreviewState', Ord(wsNormal)));
pImagePreviewShowInformation := ConfigFile.ReadBool('GUI', 'ImagePreviewShowInformation', False);
pUseSkin := ConfigFile.ReadBool('GUI', 'UseSkin', False);
finally
ConfigFile.Free;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TfmMain.WriteIniFile
Purpose: Write Ini File
Arguments: None
Result: None
Author: Cyclone
History: 2004-12-8 22:54:03
-----------------------------------------------------------------------------}
procedure TfmMain.WriteIniFile;
var
ConfigFile: TIniFile;
begin
ConfigFile := TIniFile.Create(pIniFileName);
try
ConfigFile.WriteInteger('Connection', 'DatabaseType', Ord(pDatabaseType));
ConfigFile.WriteString('Connection', 'DBServerName', pDBServerName);
ConfigFile.WriteString('Connection', 'DBName', pDBName);
ConfigFile.WriteString('Connection', 'DBUserName', pDBUserName);
ConfigFile.WriteString('Connection', 'DBPassword', pDBPassword);
ConfigFile.WriteString('Connection', 'AccessFileName', pAccessFileName);
ConfigFile.WriteInteger('GUI', 'MainFormTop', pMainFormTop);
ConfigFile.WriteInteger('GUI', 'MainFormLeft', pMainFormLeft);
ConfigFile.WriteInteger('GUI', 'MainFormHeight', pMainFormHeight);
ConfigFile.WriteInteger('GUI', 'MainFormWidth', pMainFormWidth);
ConfigFile.WriteInteger('GUI', 'MainFormState', Ord(pMainFormState));
ConfigFile.WriteInteger('GUI', 'ImagePreviewTop', pImagePreviewTop);
ConfigFile.WriteInteger('GUI', 'ImagePreviewLeft', pImagePreviewLeft);
ConfigFile.WriteInteger('GUI', 'ImagePreviewHeight', pImagePreviewHeight);
ConfigFile.WriteInteger('GUI', 'ImagePreviewWidth', pImagePreviewWidth);
ConfigFile.WriteInteger('GUI', 'ImagePreviewState', Ord(pImagePreviewState));
ConfigFile.WriteBool('GUI', 'ImagePreviewShowInformation', pImagePreviewShowInformation);
ConfigFile.WriteBool('GUI', 'UseSkin', pUseSkin);
finally
ConfigFile.Free;
end;
end;
{-----------------------------------------------------------------------------
Procedure: TfmMain.ImportFromFolder
Purpose: Import Documents From Folder
Arguments: APath: String;
CategoryCode: String;
FileExistsAction: TImportFileExistsAction
Result: None
Author: Cyclone
History: 2004-12-11 0:21:23
----------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -