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

📄 mainf.pas

📁 极具实用价值的文件管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  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 + -