📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, ToolWin, ActnList, ExtCtrls, ImgList, ScktComp, MDIBase,
DB, ADODB, jpeg, StdCtrls, StdActns, Grids, DBGridEh,MSNPopUp;
const
Frequency = 5000; //每隔五秒钟整理一次内存,速度很快的 :
type
TMDIFormClass = Class of TfrmMDIBase;
TfrmMain = class(TForm)
mmMain: TMainMenu;
NSystem: TMenuItem;
mmiChangPWD: TMenuItem;
N2: TMenuItem;
mmiOpen: TMenuItem;
mmiSper_2: TMenuItem;
mmiExit: TMenuItem;
NModule: TMenuItem;
mmiMainControl: TMenuItem;
mmiSper_4: TMenuItem;
mmiSystem1: TMenuItem;
NHelp: TMenuItem;
mmiHelp: TMenuItem;
mmiSper_3: TMenuItem;
mmiAbout: TMenuItem;
clbr1: TCoolBar;
tlb2: TToolBar;
tbtMainControl: TToolButton;
tbtOpenAccount: TToolButton;
ToolButton3: TToolButton;
tbtSendMsg: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
tbtExit: TToolButton;
ImageList: TImageList;
ilToolButtonImages1: TImageList;
ALMain: TActionList;
sysQuit: TAction;
sysChangPWD: TAction;
sysNewAccBook: TAction;
sysOpenAccBook: TAction;
heHelp: TAction;
heAbout: TAction;
moMainControl: TAction;
acupdate: TAction;
ALModule: TActionList;
acSystem: TAction;
StatusBar: TStatusBar;
Image1: TImage;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowTileVertical1: TWindowTileVertical;
WindowMinimizeAll1: TWindowMinimizeAll;
WindowArrange1: TWindowArrange;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton4: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
update_module: TAction;
ADOQuery1: TADOQuery;
N1: TMenuItem;
acBaseMana: TAction;
acMDIBom: TAction;
N7: TMenuItem;
MSNPopUp1: TMSNPopUp;
QMSN: TADOQuery;
Timer1: TTimer;
procedure heAboutExecute(Sender: TObject);
procedure moMainControlExecute(Sender: TObject);
procedure sysQuitExecute(Sender: TObject);
procedure sysChangPWDExecute(Sender: TObject);
procedure sysOpenAccBookExecute(Sender: TObject);
procedure acSystemExecute(Sender: TObject);
procedure acStockExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure update_moduleExecute(Sender: TObject);
procedure acMDIBomExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure MSNPopUp1Click(Sender: TObject);
procedure MSNPopUp1URLClick(Sender: TObject; URL: String);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
// bServerClose :Boolean;{标识是否服务器端的命令}
bMainClose :Boolean; {控制是否能关闭MainControl窗体}
procedure SetAction();{根据当前用户的权限,设置激活状态}
{ Public declarations }
procedure ShowMDIForm(FormClass:TMDIFormClass; ModuleID:Integer); {创建MDI子窗口}
end;
var
frmMain: TfrmMain;
implementation
uses Global, MainControl, MDISystem,Login, DataModule, ChangePWD,Loading,Base,pasMDIBom,ProductInfo;
{$R *.dfm}
{创建MDI子窗口}
procedure TfrmMain.ShowMDIForm(FormClass:TMDIFormClass; ModuleID:Integer);
var
i: Integer;
bFound: Boolean;
NewForm: TForm;
begin
bFound:=False;
NewForm:=Nil;
{查找该窗口是否已存在,如果存在就显示}
For i:=0 to frmMain.MDIChildCount-1 do
begin
if MDIChildren[i].ClassName = FormClass.className then
begin
newForm:=MDIChildren[i];
bFound:=True;
Break;
end
end;
{如果不存在,就重新创建}
if Not bFound then
NewForm:= FormClass.CreateWithModuleID(Self, ModuleID);
Newform.Show ;
end;
{根据当前用户的权限,设置激活状态}
procedure TfrmMain.SetAction();
var
i: Integer;
iTag:Integer;
begin
if G_bAdmin then
for i:=0 to AlModule.ActionCount -1 do
begin
//ShowMessage((ALModule.Actions[i] as TAction).Caption);
(AlModule.Actions[i] as TAction).Enabled :=G_bAdmin
end
else
for i:=0 to AlModule.ActionCount -1 do
begin
iTag:= (AlModule.Actions[i] as TAction).Tag;
//权限表中是否有此模块
(AlModule.Actions[i] as TAction).Enabled :=
dmClient.spUserRight.Locate('fModuleID',iTag,[]);
end;
//frmMain.acSystem.Enabled :=G_bAdmin or (dmClient.spUserRight.Locate('fModuleID',1,[]));
//frmMain.sysTakeEffectAccBook.Enabled := G_bAdmin and Not G_bTakeEffect;
//frmMain.sysImportAccountData.Enabled := G_bAdmin and Not G_bTakeEffect;
end;
procedure TfrmMain.heAboutExecute(Sender: TObject);
begin
if Not Assigned(frmLoading) then
frmLoading:=TfrmLoading.Create(Self);
frmLoading.show;
end;
procedure TfrmMain.moMainControlExecute(Sender: TObject);
begin
ShowMDIForm(TfrmMainControl,(Sender as TAction).Tag )
//ShowMessage('暂无');
end;
procedure TfrmMain.sysQuitExecute(Sender: TObject);
begin
if frmMain.MDIChildCount > 0 then
if frmMain.ActiveMDIChild.ClassName = 'TfrmMainControl' then
close
else
begin
frmMain.ActiveMDIChild.Close
//ShowMessage('jin1');
//MDIApply.frmMDIApply.Close;
//MDIApply.frmMDIApply.Free;
//FreeAndNil(frmMDIApply)
end
else
Close;
end;
procedure TfrmMain.sysChangPWDExecute(Sender: TObject);
begin
ShowModalForm(TfrmChangePWD,Self,Tform(frmChangePWD));
end;
procedure TfrmMain.sysOpenAccBookExecute(Sender: TObject);
var
i : Integer;
begin
if MessageDlg('您确定要注销吗?', mtWarning, [mbOk, mbCancel], 0) <> mrOk then
exit;
//删除登录信息
dmClient.qryOut.Close;
dmClient.qryOut.Parameters.ParamValues['fCode']:=G_sUserCode;
dmClient.qryOut.ExecSQL;
//关闭各窗体
for i := 0 to frmMain.MDIChildCount - 1 do
if frmMain.MDIChildren[i].ClassName <> 'TfrmMainControl' then
frmMain.MDIChildren[i].close;
//show登录窗体
if not Assigned(frmLogin) then
begin
frmLogin := TfrmLogin.create(Self);
frmLogin.Visible:=False;
end;
if frmLogin.ShowModal = mrOk then
begin
SetAction(); //根据当前用户的权限,设置激活状态
end
else
begin
//close;
//Application.Terminate;
end;
end;
procedure TfrmMain.acSystemExecute(Sender: TObject);
begin
ShowMDIForm(TfrmMDISystem,(Sender as TAction).Tag)
end;
procedure TfrmMain.acStockExecute(Sender: TObject);
begin
//ShowMDIForm(TfrmMDIStock,(Sender as TAction).Tag)
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
Caption:=c_AppTitle;
StatusBar.Panels[0].Text :=c_Company;
//初始化变量
bMainClose:=False;
//bServerClose:=False;
//实现分辨率的自适应
{if (screen.width <> c_ScreenWidth) then
begin
Scaled := true;
height := longint(height) * longint(screen.height) div c_ScreenHeight;
width := longint(width) * longint(screen.width) div c_ScreenWidth;
scaleby(screen.width, c_ScreenWidth);
end; }
//show登录窗体
end;
//procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
//begin
//dmClient.CSKClient.Socket.Sendtext(c_Close);
// dmClient.adocnClothingSys.Connected:=false;
// dmClient.adocnequip_manage.Connected:=false;
//end;
procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=True;
if MessageDlg('您确定退出当前系统吗?',mtInformation,[mbOk,mbCancel],0)<>mrOk then
begin
CanClose := False;
//frmLogin.ShowModal;
end
else
begin
//ShowMessage('jin');
dmClient.qryOut.Close;
dmClient.qryOut.Parameters.ParamValues['fCode']:=G_sUserCode;
dmClient.qryOut.ExecSQL;
Application.Terminate;
end;
end;
procedure TfrmMain.update_moduleExecute(Sender: TObject);
var
i: Integer;
flag:Boolean;
begin
try
self.ADOQuery1.Close;
self.ADOQuery1.Open;
for i:=0 to self.ALModule.ActionCount-1 do
begin
if self.ALModule.Actions[i].tag=-1 then
Continue;
if self.ADOQuery1.Locate('fID',Self.ALModule.Actions[i].Tag,[]) then
else
begin
self.ADOQuery1.Append;
self.ADOQuery1.Edit;
self.ADOQuery1.FieldValues['fID']:=self.ALModule.Actions[i].Tag;
self.ADOQuery1.FieldValues['fName']:=(self.ALModule.Actions[i] as TAction).Caption;
self.ADOQuery1.Post;
end;
end;
flag:=False;
self.ADOQuery1.First;
while not self.ADOQuery1.Eof do
begin
for i:=0 to self.ALModule.ActionCount-1 do
begin
if self.ALModule.Actions[i].Tag=-1 then
else
begin
if (self.ALModule.Actions[i].Tag=self.ADOQuery1.FieldValues['fId']) then
begin
flag:=False;
Break;
end
else
begin
flag:=True;
Continue;
end;
end;
end;
if flag then
self.ADOQuery1.Delete
else
self.ADOQuery1.Next;
end;
except
ShowMessage('出错!');
Exit;
end;
ShowMessage('正常!');
end;
procedure TfrmMain.acMDIBomExecute(Sender: TObject);
begin
ShowMDIForm(TfrmMDIBom,(Sender as TAction).Tag)
end;
procedure TfrmMain.FormShow(Sender: TObject);
begin
self.Top:=0;
self.Left:=0;
end;
procedure TfrmMain.MSNPopUp1Click(Sender: TObject);
begin
MSNPopUp1.ClosePopUps;
end;
procedure TfrmMain.MSNPopUp1URLClick(Sender: TObject; URL: String);
begin
if not Assigned(frmProductInfo) then
frmProductInfo := TfrmProductInfo.Create(Self);
with frmProductInfo.QBaseInfo do
begin
DisableControls;
Close;
SQL.Clear;
if Pos('品管',G_sDepName)<>0 then
begin
SQL.Add('select * from CcModel_Remark where sign_Artdept=0 and Artdepter<>'''' and sign_Audit=0 and substring(number,1,2)='''+G_sDepCode+''' ');
frmProductInfo.tbtNew.Visible:=True;
end
else
if Pos('技术',G_sDepName)<>0 then
begin
SQL.Add('select * from CcModel_Remark where sign_Artdept=1 ');
end;
Open;
EnableControls;
end;
frmProductInfo.Label21.Caption:='信息份数:'+IntToStr(frmProductInfo.QBaseInfo.RecordCount)+chr(13)+'当前:'+inttostr(frmProductInfo.QBaseInfo.RecNo);
frmProductInfo.tbtModify.Visible:=True;
frmProductInfo.tbtDelete.Visible:=True;
frmProductInfo.tbtSave.Visible:=True;
frmProductInfo.tbtCancel.Visible:=True;
frmProductInfo.tbtFind.Visible:=True;
frmProductInfo.tbtPrint.Visible:=True;
frmProductInfo.tbtExport.Visible:=True;
MSNPopUp1.ClosePopUps;
frmProductInfo.Show;
end;
procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
if Pos('品管',G_sDepName)<>0 then
begin
with QMSN do
begin
Close;
SQL.Clear;
SQL.Add('select count(1) recardcount from CcModel_Remark where sign_Artdept=0 and Artdepter<>'''' and sign_Audit=0 and substring(number,1,2)='''+G_sDepCode+''' ');
Open;
end;
if QMSN.FieldValues['recardcount']>0 then
begin
MSNPopUp1.Text:=#13+inttostr(QMSN.FieldValues['recardcount'])+'份产品信息需审核!';
MSNPopUp1.ShowPopUp;
end;
end
else
if Pos('技术',G_sDepName)<>0 then
begin
with QMSN do
begin
Close;
SQL.Clear;
SQL.Add('select count(1) recardcount from CcModel_Remark where sign_Artdept=1 ');
Open;
end;
if QMSN.FieldValues['recardcount']>0 then
begin
MSNPopUp1.Text:=#13+inttostr(QMSN.FieldValues['recardcount'])+'份产品信息需审核!';
MSNPopUp1.ShowPopUp;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -