📄 umain.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 + -