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

📄 featuresmain.pas

📁 一套比较完善的人力资源系统
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit FeaturesMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, cxControls, StdCtrls, Buttons, Menus, ExtCtrls, ToolWin, ComCtrls,
  ImgList, cxSSheet, cxSSTypes, cxSSUtils, cxSSRes, cxGraphics,
  cxExcelAccess, StdActns, ActnList,Registry,shellapi;

type
  TStyleValue = (svAlign, svFontName, svSize, svBold, svItalic, svUnderline, svStrikeOut);
  TStyleValueSet = set of TStyleValue;

  TFeaturesMainForm = class(TForm)
    alMain: TActionList;
    actNew: TAction;
    actDeleteCells: TAction;
    actOpenSpreadSheet: TAction;
    actSaveSpeadSheet: TAction;
    actInsertCells: TAction;
    actExit: TAction;
    actAutomaticCalc: TAction;
    actRecalcFormulas: TAction;
    actCut: TAction;
    actCopy: TAction;
    actPaste: TAction;
    actBeveledLookandFeel: TAction;
    actBufferedpaint: TAction;
    actShowcaptions: TAction;
    actShowgrid: TAction;
    actShowheaders: TAction;
    actShowformulas: TAction;
    actR1C1Referencestyle: TAction;
    actCells: TAction;
    actRow: TAction;
    actColumn: TAction;
    actSheet: TAction;
    actWindowClose: TWindowClose;
    actWindowCascade: TWindowCascade;
    actWindowTileHorizontal: TWindowTileHorizontal;
    actWindowTileVertical: TWindowTileVertical;
    actWindowMinimizeAll: TWindowMinimizeAll;
    actWindowArrange: TWindowArrange;
    actCellLeftAlign: TAction;
    actCellRightAlign: TAction;
    actCellCenterAlign: TAction;
    actBold: TAction;
    actItalic: TAction;
    actUnderline: TAction;
    actStrikeOut: TAction;
    actMergeCells: TAction;
    actSplitCells: TAction;
    actSortAscending: TAction;
    actSortDescending: TAction;
    actSum: TAction;
    actFont: TAction;
    actFontSize: TAction;
    actAverage: TAction;
    actCount: TAction;
    actMax: TAction;
    actMin: TAction;
    actFormatCells: TAction;
    actHideCells: TAction;
    actShowCells: TAction;
    actHideCol: TAction;
    actShowCol: TAction;
    actHideRow: TAction;
    actShowRow: TAction;
    mnuMain: TMainMenu;
    mnuFile: TMenuItem;
    miNew: TMenuItem;
    N2: TMenuItem;
    miOpenSpreadSheet: TMenuItem;
    miSaveSpreadSheet: TMenuItem;
    N1: TMenuItem;
    miExit: TMenuItem;
    mnuEdit: TMenuItem;
    miAutomaticcalculation: TMenuItem;
    miRecalcformulas: TMenuItem;
    N3: TMenuItem;
    miCut: TMenuItem;
    miCopy: TMenuItem;
    miPaste: TMenuItem;
    N7: TMenuItem;
    miCells: TMenuItem;
    miFormat: TMenuItem;
    miHide: TMenuItem;
    miShow: TMenuItem;
    miDeletecells: TMenuItem;
    Insertcells1: TMenuItem;
    miColumns: TMenuItem;
    Hide2: TMenuItem;
    Show2: TMenuItem;
    miRows: TMenuItem;
    Hide3: TMenuItem;
    Show3: TMenuItem;
    mnuInsert: TMenuItem;
    miCells1: TMenuItem;
    miRow: TMenuItem;
    miColumn: TMenuItem;
    N12: TMenuItem;
    miSheet: TMenuItem;
    mnuConfig: TMenuItem;
    miBeveledLookandFeel: TMenuItem;
    miBufferedpaint: TMenuItem;
    N4: TMenuItem;
    miShowcaptions: TMenuItem;
    miShowgrid: TMenuItem;
    miShowheaders: TMenuItem;
    miShowformulas: TMenuItem;
    N5: TMenuItem;
    miR1C1Referencestyle: TMenuItem;
    mnuWindow: TMenuItem;
    Arrange1: TMenuItem;
    Cascade1: TMenuItem;
    Close1: TMenuItem;
    MinimizeAll1: TMenuItem;
    TileHorizontally1: TMenuItem;
    TileVertically1: TMenuItem;
    pmSheetPopup: TPopupMenu;
    pmiCut: TMenuItem;
    pmiCopy: TMenuItem;
    pmiPaste: TMenuItem;
    N6: TMenuItem;
    pmiDelete: TMenuItem;
    pmiInsert: TMenuItem;
    N10: TMenuItem;
    pmiCols: TMenuItem;
    pmiColsHide: TMenuItem;
    pmiColsShow: TMenuItem;
    pmiRows: TMenuItem;
    pmiRowsHide: TMenuItem;
    pmiRowsShow: TMenuItem;
    Show1: TMenuItem;
    Hide1: TMenuItem;
    pmiFormatCells: TMenuItem;
    pmSummary: TPopupMenu;
    Sum: TMenuItem;
    Average1: TMenuItem;
    Count1: TMenuItem;
    Max1: TMenuItem;
    Min1: TMenuItem;
    pmBorders: TPopupMenu;
    N11: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    N41: TMenuItem;
    N51: TMenuItem;
    N61: TMenuItem;
    N71: TMenuItem;
    N81: TMenuItem;
    N91: TMenuItem;
    N101: TMenuItem;
    N111: TMenuItem;
    N121: TMenuItem;
    imgFormatting: TImageList;
    imgBordersImages: TImageList;
    imgStandart: TImageList;
    cbMain: TControlBar;
    tbsFormatting: TToolBar;
    tbLeftAlign: TToolButton;
    tbCenterAlign: TToolButton;
    tbRightAlign: TToolButton;
    ToolButton10: TToolButton;
    tbBold: TToolButton;
    tbItalic: TToolButton;
    tbUnderline: TToolButton;
    tbStrikeOut: TToolButton;
    ToolButton11: TToolButton;
    tbMerge: TToolButton;
    tgSplit: TToolButton;
    ToolButton16: TToolButton;
    tbSummary: TToolButton;
    tbSortAscending: TToolButton;
    tbSortDescending: TToolButton;
    ToolButton18: TToolButton;
    tbBorderStyle: TToolButton;
    tbsStandart: TToolBar;
    tbsNew: TToolButton;
    tbsOpen: TToolButton;
    tbsSave: TToolButton;
    ToolButton7: TToolButton;
    tbsCut: TToolButton;
    tbsCopy: TToolButton;
    tbsPaste: TToolButton;
    pnCell: TPanel;
    edtCellEdit: TEdit;
    pnCellText: TPanel;
    pnCellRect: TPanel;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    actUndo: TAction;
    actRedo: TAction;
    tlbHistory: TToolBar;
    tbUndo: TToolButton;
    pmRedo: TPopupMenu;
    pmUndo: TPopupMenu;
    ToolButton1: TToolButton;
    imgHistory: TImageList;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    cbxFont: TComboBox;
    cbxSize: TComboBox;
    N8: TMenuItem;
    N9: TMenuItem;
    N13: TMenuItem;
    procedure cxSpreadBookSetSelection(Sender: TObject;
      ASheet: TcxSSBookSheet);
    procedure edtCellEditChange(Sender: TObject);
    procedure edtCellEditExit(Sender: TObject);
    procedure edtCellEditKeyPress(Sender: TObject; var Key: Char);
    procedure tbsSummaryClick(Sender: TObject);
    procedure mnuBordersDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
      Selected: Boolean);
    procedure mnuBordersMeasureItem(Sender: TObject; ACanvas: TCanvas;
      var Width, Height: Integer);
    procedure mnuBordersClick(Sender: TObject);
    procedure cbxSizeKeyPress(Sender: TObject; var Key: Char);
    procedure cbxSizeChange(Sender: TObject);
    procedure tbCenterAlignClick(Sender: TObject);
    procedure tbRightAlignClick(Sender: TObject);
    procedure actBoldClick(Sender: TObject);
    procedure actItalicClick(Sender: TObject);
    procedure actUnderlineClick(Sender: TObject);
    procedure actStrikeOutClick(Sender: TObject);
    procedure tbMergeSplitClick(Sender: TObject);
    procedure tbBorderStyleClick(Sender: TObject);
    procedure SummaryItemClick(Sender: TObject);
    procedure cbxFontKeyPress(Sender: TObject; var Key: Char);
    procedure actSheetExecute(Sender: TObject);
    procedure actColumnExecute(Sender: TObject);
    procedure actRowExecute(Sender: TObject);
    procedure actCellsExecute(Sender: TObject);
    procedure actNewExecute(Sender: TObject);
    procedure actOpenSpreadSheetExecute(Sender: TObject);
    procedure actSaveSpeadSheetExecute(Sender: TObject);
    procedure actExitExecute(Sender: TObject);
    procedure AlwaysEnabled(Sender: TObject);
    procedure actPasteExecute(Sender: TObject);
    procedure actCopyExecute(Sender: TObject);
    procedure actCutExecute(Sender: TObject);
    procedure actAutomaticCalcExecute(Sender: TObject);
    procedure actRecalcFormulasExecute(Sender: TObject);
    procedure actBeveledLookandFeelExecute(Sender: TObject);
    procedure actCellLeftAlignExecute(Sender: TObject);
    procedure actCellRightAlignExecute(Sender: TObject);
    procedure actCellCenterAlignExecute(Sender: TObject);
    procedure actFormatCellsExecute(Sender: TObject);
    procedure actHideCellsExecute(Sender: TObject);
    procedure actShowCellsExecute(Sender: TObject);
    procedure actHideColExecute(Sender: TObject);
    procedure actShowColExecute(Sender: TObject);
    procedure actBufferedpaintExecute(Sender: TObject);
    procedure actShowcaptionsExecute(Sender: TObject);
    procedure actShowgridExecute(Sender: TObject);
    procedure actShowheadersExecute(Sender: TObject);
    procedure actShowformulasExecute(Sender: TObject);
    procedure actR1C1ReferencestyleExecute(Sender: TObject);
    procedure actMergeCellsExecute(Sender: TObject);
    procedure actSplitCellsExecute(Sender: TObject);
    procedure actFontExecute(Sender: TObject);
    procedure actFontSizeExecute(Sender: TObject);
    procedure actSumExecute(Sender: TObject);
    procedure actSortExecute(Sender: TObject);
    procedure actHideRowExecute(Sender: TObject);
    procedure actShowRowExecute(Sender: TObject);
    procedure actUndoExecute(Sender: TObject);
    procedure actUndoUpdate(Sender: TObject);
    procedure actRedoUpdate(Sender: TObject);
    procedure actRedoExecute(Sender: TObject);
    procedure pmUndoPopup(Sender: TObject);
    procedure pmRedoPopup(Sender: TObject);
    procedure MeasureItem(Sender: TObject; ACanvas: TCanvas; var Width,
      Height: Integer);
    procedure DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
      Selected: Boolean);
    procedure IsEditorMode(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
  private
    FIsUpdate: Boolean;
    FSummaryItemHeight: Integer;
    Procedure LoadForm(Form:TForm); 
    Procedure SaveForm(Form:TForm);
    procedure SetTokenStyle(AToolButton: TToolButton; AStyleValue: TStyleValue; AFontStyle: TFontStyle);
    function GetCellText(SelectionRect: TRect; R1C1: Boolean): String;
    procedure RedoItemClick(Sender: TObject);
    procedure UndoItemClick(Sender: TObject);
    procedure DrawUndoRedoItem(PopupMenu: TPopupMenu; Sender: TMenuItem;
      ACanvas: TCanvas; ARect: TRect; Selected: Boolean; InfoStr: String);
  protected
    procedure CalculateSummary(AType: Byte);
    function GetSpreadBook: TcxSpreadSheetBook;
    procedure OpenSpreadSheet;
    procedure SaveSpreadSheet;
    procedure SetCellsStyle(AValuesSet: TStyleValueSet; AAlign: TcxHorzTextAlign;
      AFontSize: Integer; const AFontName: string; AStyles: TFontStyles);
    procedure SetStates;
    property IsUpdate: Boolean read FIsUpdate write FIsUpdate;
  public
    constructor Create(AOwner: TComponent); override;
    procedure NewSheet(const ASheetName: string = '');
    property cxSpreadBook: TcxSpreadSheetBook read GetSpreadBook;
  end;

var
  FeaturesMainForm: TFeaturesMainForm;

implementation

{$IFDEF VER140}{$DEFINE DELPHI6}{$ENDIF}
{$IFDEF VER150}{$DEFINE DELPHI6}{$DEFINE DELPHI7}{$ENDIF}

{$R *.dfm}

uses
  FeatureChild, FeatureModify, Flogo;

type
  TcxSSBookAccess = class(TcxCustomSpreadSheetBook);
  TcxSSBookSheetAccess = class(TcxSSBookSheet);
  TcxSheetAccess = class(TcxSSBookSheet);

constructor TFeaturesMainForm.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  cbxFont.Items.Assign(Screen.Fonts);
  cbxFont.Text := '宋体';
  cbxSize.Text := '9';
  FSummaryItemHeight := 9;
  {$IFDEF DELPHI6}
  pmRedo.AutoHotkeys := maManual;
  pmUndo.AutoHotkeys := maManual;
  {$ENDIF}
end;

Procedure TFeaturesMainForm.LoadForm(Form:TForm);
Var 
  MyFormSettings:TRegistry; 
Begin 
  MyFormSettings:=TRegistry.Create; 
  Try
    MyFormSettings.OpenKey('\Software\'+ ExtractFileName(Application.Exename)+ '\WinPos', TRUE); 
    If MyFormSettings.ValueExists(Form.Name) Then 
    Begin 
      If (MyFormSettings.ReadInteger(Form.Name+'_ScrWidth')=Screen.Width) Or  (MyFormSettings.ReadInteger(Form.Name+'_ScrHeight')=Screen.Height) Then 
      Begin 
        Case MyFormSettings.ReadInteger(Form.Name+'_WindowState') Of 
          1:Form.WindowState:=wsNormal; 
          2:Form.WindowState:=wsMinimized; 
          3:Form.WindowState:=wsMaximized; 
        End; 
        if Form.WindowState<>wsMaximized then 
        begin 
          Form.Top:=MyFormSettings.ReadInteger(Form.Name+'_Top'); 
          Form.Left:=MyFormSettings.ReadInteger(Form.Name+'_Left'); 
          Form.Width:=MyFormSettings.ReadInteger(Form.Name+'_Width'); 
          Form.Height:=MyFormSettings.ReadInteger(Form.Name+'_Height') 
        end 
      End 
    End
  Finally 
    MyFormSettings.Free 
  End 
End; 

Procedure TFeaturesMainForm.SaveForm(Form:TForm);
Var 
  MyFormSettings:TRegistry; 
Begin 
  MyFormSettings:=TRegistry.Create; 
  Try 
    MyFormSettings.OpenKey( '\Software\'+ 
                       ExtractFileName(Application.Exename)+ 
                       '\WinPos', TRUE); 
    MyFormSettings.WriteInteger(Form.Name+'_ScrWidth',Screen.Width); 
    MyFormSettings.WriteInteger(Form.Name+'_ScrHeight',Screen.Height); 
    Case Form.WindowState Of 
      wsNormal:MyFormSettings.WriteInteger(Form.Name+'_WindowState',1); 
      wsMinimized:MyFormSettings.WriteInteger(Form.Name+'_WindowState',2); 
      wsMaximized:MyFormSettings.WriteInteger(Form.Name+'_WindowState',3) 
    End; 
    MyFormSettings.WriteInteger(Form.Name+'_Width',Form.Width); 
    MyFormSettings.WriteInteger(Form.Name+'_Height',Form.Height); 
    MyFormSettings.WriteInteger(Form.Name+'_Left',Form.Left); 
    MyFormSettings.WriteInteger(Form.Name+'_Top',Form.Top); 
    MyFormSettings.WriteBool(Form.Name,True) 
  Finally 
    MyFormSettings.Free 
  End 
End;

procedure TFeaturesMainForm.NewSheet(const ASheetName: string = '');
begin
  TFeatureChildForm.Create(Self);
  if ASheetName <> '' then
    ActiveMDIChild.Caption :=  ASheetName
  else
    ActiveMDIChild.Caption :=  '新文件 - ' + IntToStr(Self.MDIChildCount);
  with cxSpreadBook do
    OnSetSelection := cxSpreadBookSetSelection;
end;

procedure TFeaturesMainForm.CalculateSummary(AType: Byte);

  function SelRect(const ARect: TRect): string;
  begin
    Result := cxSpreadBook.CellsNameByRef(cxSpreadBook.ActivePage, ARect, False);
  end;
var
  S: string;
  ARect: TRect;
  ACell: TcxssCellObject;
const
  AFunc: array[0..4] of string = (sxlfSum, sxlfAverage, sxlfCount, sxlfMax, sxlfMin);
begin
  with cxSpreadBook do

⌨️ 快捷键说明

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