commain.pas
来自「IT业进销存管理系统源代码Delphi」· PAS 代码 · 共 1,122 行 · 第 1/3 页
PAS
1,122 行
Application.MessageBox( '数据已经整理完!', '数据整理',MB_OK );
end;
//mnuPrinter.SetupClick
procedure TfrmComMain.mnuPrinterSetupClick(Sender: TObject);
begin
PrinterSetupDialog1.Execute;
end;
//mnuChang.UserClick
procedure TfrmComMain.mnuChangUserClick(Sender: TObject);
begin
//Log
with Data.Tmp do
begin
Close;
CommandText := 'insert into AppLog (uName, cName, CZ, RQ, SJ) ' +
'values (''' + pstrUserName + ''', ' +
'''' + pstrComputerName + ''', ' +
'''退出系统'', ' +
'''' + FormatDateTime('yyyy-mm-dd', Date) + ''', ' +
'''' + FormatDateTime('hh:nn', Time) + ''')';
Execute;
end;
frmLogin := TfrmLogin.Create(self);
frmLogin.ShowModal;
if frmLogin.ModalResult <> MROK then
begin
screen.OnActiveFormChange := nil;
screen.OnActiveControlChange := nil;
Application.Terminate;
end
else
begin
screen.Cursor := crHourGlass;
SetMenuEnabled(MainMenu1.Items);
MenuPopedom;
frmGuide.Free;
Animate1.Active := True;
pnlMain.Visible := True;
pnlMain.Repaint;
if not IsOpenMdiForm('frmGuide') then
frmGuide := TfrmGuide.Create(self);
frmGuide.Show;
Animate1.Active := False;
pnlMain.Visible := False;
screen.Cursor := crdefault;
end;
frmLogin.Free;
StatusBar1.Panels[2].Text := DateToStr(Date);
StatusBar1.Panels[3].Text := pstrUserName;
end;
//mnuExit.Click
procedure TfrmComMain.mnuExitClick(Sender: TObject);
begin
Close;
end;
{-Windows 窗口-}
//mnuToolBar.Click
procedure TfrmComMain.mnuToolBarClick(Sender: TObject);
var
comTmp: TComponent;
begin
mnuToolBar.Checked := not mnuToolBar.Checked;
comTmp := Screen.ActiveCustomForm.FindComponent('ControlBar1');
if comTmp <> nil then
TControlBar(comTmp).Visible := mnuToolBar.Checked;
end;
//mnuStatusBar.Click
procedure TfrmComMain.mnuStatusBarClick(Sender: TObject);
begin
mnuStatusBar.Checked := not mnuStatusBar.Checked;
StatusBar1.Visible := mnuStatusBar.Checked;
end;
//mnuCascade.Click
procedure TfrmComMain.mnuCascadeClick(Sender: TObject);
var
i:integer;
begin
for i := MDIChildCount - 1 downto 0 do
MDIChildren[i].WindowState := wsNormal;
for i := MDIChildCount - 1 downto 0 do
MDIChildren[i].WindowState := wsNormal;
Cascade;
end;
//mnuHorizontally.Click
procedure TfrmComMain.mnuHorizontallyClick(Sender: TObject);
var
i:integer;
begin
for i := MDIChildCount - 1 downto 0 do
MDIChildren[i].WindowState := wsNormal;
for i := MDIChildCount - 1 downto 0 do
MDIChildren[i].WindowState := wsNormal;
Tile;
end;
//mnuMinAll.Click
procedure TfrmComMain.mnuMinAllClick(Sender: TObject);
var
i:integer;
begin
for i := MDIChildCount - 1 downto 0 do
MDIChildren[i].WindowState := wsMinimized;
ArrangeIcons;
end;
//mnuCloseAll.Click
procedure TfrmComMain.mnuCloseAllClick(Sender: TObject);
var
i:integer;
begin
for i := MDIChildCount - 1 downto 0 do
MDIChildren[i].Close;
end;
{-Tools 工具-}
//mnuPopedom.Click
procedure TfrmComMain.mnuPopedomClick(Sender: TObject);
begin
BeginShow(Sender);
if not IsOpenMdiForm('frmPopedom') then
frmPopedom := TfrmPopedom.Create(self);
frmPopedom.Show;
EndShow(Sender);
end;
//mnuUser.Click
procedure TfrmComMain.mnuUserClick(Sender: TObject);
begin
BeginShow(Sender);
if not IsOpenMdiForm('frmUser') then
frmUser := TfrmUser.Create(self);
frmUser.Show;
EndShow(Sender);
end;
//mnuPassword.Click
procedure TfrmComMain.mnuPasswordClick(Sender: TObject);
begin
frmPassword := TfrmPassword.Create(self);
frmPassword.ShowModal;
frmPassword.Free;
end;
//mnuLog.Click
procedure TfrmComMain.mnuLogClick(Sender: TObject);
begin
BeginShow(Sender);
if not IsOpenMdiForm('frmLog') then
frmLog := TfrmLog.Create(self);
frmLog.Show;
EndShow(Sender);
end;
//mnuSetIcon.Click
procedure TfrmComMain.mnuSetIconClick(Sender: TObject);
begin
frmSetIcon := TfrmSetIcon.Create(self);
frmSetIcon.ShowModal;
frmSetIcon.Free;
end;
//mnuDesktop.Click
procedure TfrmComMain.mnuDesktopClick(Sender: TObject);
begin
if frmDesktop = nil then
frmDesktop := TfrmDesktop.Create(self);
frmDesktop.Show;
end;
//mnuCalendar.Click
procedure TfrmComMain.mnuCalendarClick(Sender: TObject);
begin
if frmWnl = nil then
frmWnl := TfrmWnl.Create(self);
frmWnl.MonthCalendar1.Date := Date;
frmWnl.Show;
end;
//mnuCalculator.Click
procedure TfrmComMain.mnuCalculatorClick(Sender: TObject);
begin
WinExec('Calc.exe', SW_SHOWDEFAULT);
end;
procedure TfrmComMain.mnuOptionClick(Sender: TObject);
begin
{ TODO : Option }
end;
{-Help 帮助-}
//mnuHelpBook.Click
procedure TfrmComMain.mnuHelpBookClick(Sender: TObject);
begin
{ TODO : Help Book }
end;
//mnuAbout.Click
procedure TfrmComMain.mnuAboutClick(Sender: TObject);
begin
frmAbout := TfrmAbout.Create(self);
frmAbout.ShowModal;
frmAbout.Free;
end;
{-Bar 快捷菜单 窗体切换-}
//ToolButtonClick
procedure TfrmComMain.ToolButtonClick(Sender: TObject);
var
i: integer;
begin
if Sender is TToolButton then
begin
if TToolButton(Sender).Hint <> screen.ActiveForm.name then
begin
for i := 0 to self.tlbAForm.ButtonCount - 1 do
if TToolButton(Sender) <> self.tlbAForm.Buttons[i] then
self.tlbAForm.Buttons[i].ImageIndex := 0
else
self.tlbAForm.Buttons[i].ImageIndex := 1;
for i := 0 to self.MDIChildCount - 1 do
begin
self.Next;
if screen.ActiveCustomForm.name = TToolButton(Sender).Hint then
break;
end;
end;
end;
end;
//btnGuide.Click
procedure TfrmComMain.btnGuideClick(Sender: TObject);
begin
Animate1.Active := True;
pnlMain.Visible := True;
pnlMain.Repaint;
if not IsOpenMdiForm('frmGuide') then
frmGuide := TfrmGuide.Create(self);
frmGuide.Show;
Animate1.Active := False;
pnlMain.Visible := False;
end;
//btnWord.Click
procedure TfrmComMain.btnWordClick(Sender: TObject);
begin
self.WordApplication1.Quit;
self.WordApplication1.Disconnect;
self.WordApplication1.Connect;
self.WordApplication1.Visible := true;
end;
//btnExcel.Click
procedure TfrmComMain.btnExcelClick(Sender: TObject);
begin
self.ExcelApplication1.Quit;
self.ExcelApplication1.Disconnect;
self.ExcelApplication1.Connect;
self.ExcelApplication1.Visible[0] := true;
end;
{-App Even 系统事件-}
//ActiveFormChange
procedure TfrmComMain.ActiveFormChange(Sender: TObject);
begin
ActivateKeyboardLayout(pHKL, KLF_ACTIVATE);
mnuCascade.Enabled := self.MDIChildCount > 0;
mnuHorizontally.Enabled := mnuCascade.Enabled;
mnuMinAll.Enabled := mnuCascade.Enabled;
mnuCloseAll.Enabled := mnuCascade.Enabled;
pmnCascade.Enabled := mnuCascade.Enabled;
pmnHorizontally.Enabled := mnuCascade.Enabled;
pmnMinAll.Enabled := mnuCascade.Enabled;
pmnCloseAll.Enabled := mnuCascade.Enabled;
end;
//ActiveControlChange
procedure TfrmComMain.ActiveControlChange(Sender: TObject);
begin
pHKL := GetKeyboardLayout(0);
end;
//ApplicationEvents1.Exception
procedure TfrmComMain.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
if Pos( 'not a valid date',E.Message ) <> 0 then
E.Message := '日期输入错误,请重新输入!'
Else if Pos( 'Cannot perform this operation on an empty dataset',E.Message ) <> 0 then
E.Message := '已经没有数据,不能删除!'
Else if Pos( 'not a valid floating point value',E.Message ) <> 0 then
E.Message := '数据输入错误,请重输!'
Else if Pos( 'Invalid input value. Use escape key to abandon changes',E.Message ) <> 0 then
E.Message := '数据输入错误,请按Esc键后重输!'
Else if Pos( 'Key violation', E.Message ) <> 0 then
E.Message := '已有相同的编号,不能修改!'
else if Pos( 'Field value required', E.Message ) <> 0 then
E.Message := '编号不能为空!'
else if Pos( 'I/O error 21', E.Message ) <> 0 then
E.Message := '驱动器未准备好,无法访问!'
else if Pos( 'read-only dataset', E.Message ) <> 0 then
E.Message := '此项资料不能修改!'
else if Pos( 'is not a valid value for', E.Message ) <> 0 then
begin
E.Message := copy(E.Message, pos(' ''', E.Message), pos('''.', E.Message) - pos(' ''', E.Message) + 1) +
'输入无效,输入范围是 ' + copy(E.Message, pos('range is ', E.Message) + 9, length(E.Message)) + '.';
E.Message := StringReplace(E.Message, ' to ', ' 至 ',[rfReplaceAll, rfIgnoreCase]);
end;
Application.MessageBox(Pchar(E.Message), '系统提示', MB_OK + MB_ICONWARNING);
end;
{-Other 其它过程-}
//labOpenAppButton.DblClick
procedure TfrmComMain.labOpenAppButtonDblClick(Sender: TObject);
begin
AppPath.Text := ExtractFilePath(Application.ExeName);
frmMain.AppPnl.Visible := not frmMain.AppPnl.Visible;
end;
//SetMenuEnabled
procedure TfrmComMain.SetMenuEnabled(mnuTmp: TMenuItem);
var
i: integer;
begin
if mnuTmp.Count = 0 then
mnuTmp.Visible := mnuTmp.Tag = 0
else
for i := 0 to mnuTmp.Count - 1 do
SetMenuEnabled(mnuTmp.Items[i]);
end;
//MenuPopedom
procedure TfrmComMain.MenuPopedom;
var
i: integer;
begin
if UpperCase(pstrUserCode) = 'SYS' then exit;
with Data.Tmpl do
begin
Close;
CommandText := 'select * from AppGroupMenu ' +
'where gName = ''' + pstrUserGroup + '''';
Open;
for i := 0 to self.ComponentCount - 1 do
if (self.Components[i] is TMenuItem) and
(UpperCase(Copy(self.Components[i].Name, 1, 3)) <> 'PMN') and
(TMenuItem(self.Components[i]).Count = 0) and
(TMenuItem(self.Components[i]).Caption <> '-')
then
TMenuItem(self.Components[i]).Visible := Locate('mName', self.Components[i].Name, []);
end;
mmuPrintSet.Visible := true;
mnuChangUser.Visible := true;
mnuExit.Visible := true;
mnuToolBar.Visible := true;
mnuStatusBar.Visible := true;
mnuCascade.Visible := true;
mnuHorizontally.Visible := true;
mnuMinAll.Visible := true;
mnuCloseAll.Visible := true;
mnuCalendar.Visible := true;
mnuCalculator.Visible := true;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?