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

📄 umain.pas

📁 人事档案管理
💻 PAS
字号:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, Jpeg, ExtCtrls, XPMenu, ComObj, ComCtrls, IniFiles, ImgList, ActnList,
  DB, ADODB;

type
  TfrmPer = class(TForm)
    mnuPer: TMainMenu;
    miSys: TMenuItem;
    miChgPwd: TMenuItem;
    miAdmin: TMenuItem;
    miLogin: TMenuItem;
    space01: TMenuItem;
    miExit: TMenuItem;
    tmrMain: TTimer;
    sbPer: TStatusBar;
    tmrTime: TTimer;
    miStaff: TMenuItem;
    miStaInfo: TMenuItem;
    miAdds: TMenuItem;
    miInqus: TMenuItem;
    miEdits: TMenuItem;
    miDels: TMenuItem;
    miSet: TMenuItem;
    miDep: TMenuItem;
    space02: TMenuItem;
    miHelp: TMenuItem;
    miTrs: TMenuItem;
    miCData: TMenuItem;
    miBkData: TMenuItem;
    miData: TMenuItem;
    miReData: TMenuItem;
    miSetp: TMenuItem;
    miTrans: TMenuItem;
    imgMain: TImage;
    xmPer: TXPMenu;
    miSeto: TMenuItem;
    miOther: TMenuItem;
    ilPer: TImageList;
    alPer: TActionList;
    actDep: TAction;
    actChgpwd: TAction;
    actOther: TAction;
    actAdmin: TAction;
    actLogin: TAction;
    actExitSystem: TAction;
    actStaInfo: TAction;
    actAdd: TAction;
    actEdit: TAction;
    actDel: TAction;
    actSet: TAction;
    actTrans: TAction;
    actBackup: TAction;
    actPress: TAction;
    actRestore: TAction;
    actInqu: TAction;
    actExport: TAction;
    actInport: TAction;
    miExport: TMenuItem;
    miInport: TMenuItem;
    miLog: TMenuItem;
    miAbout: TMenuItem;
    actLog: TAction;
    actAbout: TAction;
    procedure tmrMainTimer(Sender: TObject);
    procedure tmrTimeTimer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure actChgpwdExecute(Sender: TObject);
    procedure actAdminExecute(Sender: TObject);
    procedure actLoginExecute(Sender: TObject);
    procedure actExitSystemExecute(Sender: TObject);
    procedure actStaInfoExecute(Sender: TObject);
    procedure actAddExecute(Sender: TObject);
    procedure actEditExecute(Sender: TObject);
    procedure actDelExecute(Sender: TObject);
    procedure actInquExecute(Sender: TObject);
    procedure actDepExecute(Sender: TObject);
    procedure actOtherExecute(Sender: TObject);
    procedure actSetExecute(Sender: TObject);
    procedure actTransExecute(Sender: TObject);
    procedure actBackupExecute(Sender: TObject);
    procedure actExportExecute(Sender: TObject);
    procedure actRestoreExecute(Sender: TObject);
    procedure actPressExecute(Sender: TObject);
    procedure actLogExecute(Sender: TObject);
    procedure actAboutExecute(Sender: TObject);
  private
    { Private declarations }
    procedure LoadPlugin;
    procedure ActiveForm;
    procedure InitData;
    procedure OnRestore(Sender: TObject);
  public
    { Public declarations }
    procedure OnHint(Sender: TObject);
  end;

var
  frmPer: TfrmPer;

implementation

uses uLogin, uChgpwd, uGlobal, uAdmin, uStainfo, uDep, uAbout, uData, uSet,
  uOinfo, uSearch, uLogInfo;
  
type
  TDataProc = procedure (hPar: THandle; acPer: TADOConnection); stdcall;

var
  lHandle: THandle;
  BackupData, ComRepData, RestoreData, ExportData, InportData: TDataProc;

{$R *.dfm}

procedure TfrmPer.LoadPlugin;
begin
  if lHandle = 0 then Exit;
  @BackupData := GetProcAddress(lHandle, PAnsiChar('BackupData'));
  @ComRepData := GetProcAddress(lHandle, PAnsiChar('ComRepData'));
  @RestoreData := GetProcAddress(lHandle, PAnsiChar('RestoreData'));
  @ExportData := GetProcAddress(lHandle, PAnsiChar('ExportData'));
  @InportData := GetProcAddress(lHandle, PAnsiChar('InportData'));
end;

procedure TfrmPer.ActiveForm;
begin
  if not Assigned(frmStainfo) then
    frmStainfo := TfrmStainfo.Create(Application)
  else if IsIconic(frmStainfo.Handle) then
    frmStainfo.WindowState := wsNormal;
end;

procedure TfrmPer.InitData;
var
  iFile: TIniFile;
begin
  App.Image := imgMain;
  iFile := TIniFile.Create(App.Path + 'perset.ini');
  try
    App.Topic := iFile.ReadString('sTopic', 'topic', AppCaption);
    App.ImgStr := iFile.ReadString('sysbg', 'bground', 'main.jpg');
    App.StaBirth := iFile.ReadBool('staff', 'sbirth', False);
  finally
    iFile.Free;
  end;
  if App.Topic = '' then App.Topic := AppCaption;
  if (App.ImgStr = '') or not FileExists(App.Path + App.ImgStr) then App.ImgStr := 'main.jpg';
  Caption := App.Topic;
  sbPer.Panels[0].Text := '管理员:还没有登录';
  sbPer.Panels[1].Text := App.Topic;
  Application.ShowHint := True;
  Application.HintColor := clLime;
  Constraints.MaxWidth := 800;
  Constraints.MaxHeight := 600;
end;

procedure TfrmPer.OnHint(Sender: TObject);
begin
  if Application.Hint <> '' then
    sbPer.Panels[1].Text := Application.Hint
  else sbPer.Panels[1].Text := App.Topic;
end;

procedure TfrmPer.OnRestore(Sender: TObject);
begin
  if WindowState = wsMaximized then FormResize(Sender);
end;

procedure TfrmPer.FormCreate(Sender: TObject);
begin
  Application.OnHint := OnHint;
  Application.OnRestore := OnRestore;
  InitData;
  LoadPlugin;
end;

procedure TfrmPer.tmrMainTimer(Sender: TObject);
begin
  tmrMain.Enabled := False;
  frmLogin := TfrmLogin.Create(Self);
  if frmLogin.ShowModal <> mrOk then Close;
  FreeAndNil(frmLogin);
  miLog.Visible := App.Admin;
  Caption := App.Topic + '  管理员:' + App.UserID;

  sbPer.Panels[0].Text := '管理员:' + App.UserID;
  if App.Admin then
  begin
    Caption := Caption + '  --系统管理员';
    sbPer.Panels[0].Text := sbPer.Panels[0].Text + '  您是系统管理员';
  end
  else sbPer.Panels[0].Text := sbPer.Panels[0].Text + '  您是普通管理员';
end;

procedure TfrmPer.tmrTimeTimer(Sender: TObject);
var
  wdStr: string;
begin
  case DayOfWeek(Date) of
    1: wdStr := '星期日';
    2: wdStr := '星期一';
    3: wdStr := '星期二';
    4: wdStr := '星期三';
    5: wdStr := '星期四';
    6: wdStr := '星期五';
    7: wdStr := '星期六';
  end;
  sbPer.Panels[2].Text := FormatDateTime('yyyy年mm月dd日 hh时nn分ss秒', Now) + '  [' + wdStr + ']';
end;

procedure TfrmPer.actChgpwdExecute(Sender: TObject);
begin
  frmChgPwd := TfrmChgPwd.Create(self);
  if frmChgPwd.ShowModal = mrOk then
    MessageBox(Handle, '密码更新成功!', '提示',  mb_IconInformation + mb_Ok);
  FreeAndNil(frmChgPwd);
end;

procedure TfrmPer.actAdminExecute(Sender: TObject);
begin
  if App.Admin then
    ShowFormModal(Self, TfrmAdmin)
  else
    MessageBox(Handle, '这是系统管理员的权限!', '提示',  mb_IconWarning + mb_Ok);
end;

procedure TfrmPer.actLoginExecute(Sender: TObject);
begin
  tmrMainTimer(Sender);
end;

procedure TfrmPer.actExitSystemExecute(Sender: TObject);
begin
  if MessageBox(Handle, '要退出系统么?', '提示',  mb_IconQuestion + mb_YesNo) = idYes then
    Close;
end;

procedure TfrmPer.actStaInfoExecute(Sender: TObject);
begin
  ActiveForm;
end;

procedure TfrmPer.actAddExecute(Sender: TObject);
begin
  ActiveForm;
  frmStaInfo.actAddExecute(Sender);
end;

procedure TfrmPer.actEditExecute(Sender: TObject);
begin
  ActiveForm;
  if frmStaInfo.tvper.selected.data <> nil then
    frmStaInfo.actEditExecute(Sender)
  else MessageBox(Handle, '请先选择记录!', '提示', mb_IconInformation + mb_Ok);
end;

procedure TfrmPer.actDelExecute(Sender: TObject);
begin
  ActiveForm;
  if frmStaInfo.tvper.selected.data <> nil then
    frmStaInfo.actDelExecute(Sender)
  else MessageBox(Handle, '请先选择记录!', '提示', mb_IconInformation + mb_Ok);
end;

procedure TfrmPer.actInquExecute(Sender: TObject);
var
  frmFind: TfrmFind;
begin
  ActiveForm;
  frmFind := TfrmFind.Create(Self);
  frmFind.Show;
end;

procedure TfrmPer.actDepExecute(Sender: TObject);
begin
  ShowFormModal(Self, TfrmDep);
end;

procedure TfrmPer.actOtherExecute(Sender: TObject);
begin
  ShowFormModal(Self, TfrmOInfo);
end;

procedure TfrmPer.actSetExecute(Sender: TObject);
begin
  ShowFormModal(Self, TfrmSet);
end;

procedure TfrmPer.actTransExecute(Sender: TObject);
begin
  miTrs.Checked := not miTrs.Checked;
  if miTrs.Checked then
  begin
    AlphaBlend := True;
    AlphaBlendValue := 125;
  end
  else AlphaBlend := False;
end;

procedure TfrmPer.actBackupExecute(Sender: TObject);
begin
  if @BackupData <> nil then BackupData(Handle, dmPer.acPer);
end;

procedure TfrmPer.actExportExecute(Sender: TObject);
begin
  if @ExportData <> nil then ExportData(Handle, dmPer.acPer);
end;

procedure TfrmPer.actRestoreExecute(Sender: TObject);
begin
  if @RestoreData <> nil then
  begin
    if Assigned(frmStaInfo) then
    begin
      frmStaInfo.Close;
      RestoreData(Handle, dmPer.acPer);
      actStaInfoExecute(Sender);
    end
    else RestoreData(Handle, dmPer.acPer);
  end;
end;

procedure TfrmPer.actPressExecute(Sender: TObject);
begin
  if @ComRepData <> nil then
  begin
    if Assigned(frmStaInfo) then
    begin
      frmStaInfo.Close;
      ComRepData(Handle, dmPer.acPer);
      actStaInfoExecute(Sender);
    end
    else ComRepData(Handle, dmPer.acPer);
  end;
end;

procedure TfrmPer.actLogExecute(Sender: TObject);
begin
  ShowFormModal(Self, TfrmLog);
end;

procedure TfrmPer.actAboutExecute(Sender: TObject);
begin
  ShowFormModal(Self, TfrmAbout);
end;

procedure TfrmPer.FormResize(Sender: TObject);
begin
  if Screen.Width = 800 then Exit;
  Left := Trunc((Screen.Width - Width) / 2);
  Top := Trunc((Screen.Height - Height) / 2);
end;

initialization
  lHandle := LoadLibrary('data.dll');
finalization
  FreeLibrary(lHandle);

end.

⌨️ 快捷键说明

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