📄 main.pas
字号:
{$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1}
{$MINSTACKSIZE $00004000}
{$MAXSTACKSIZE $00100000}
{$IMAGEBASE $00400000}
{$APPTYPE GUI}
//没有考虑ini文件中的password的加密
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
baseOld, ComCtrls, Menus, ExtCtrls, StdCtrls,
inifiles,jpeg, Db, ADODB, ActnList, DBClient, Grids, DBGrids, MConnect;
type
Tfrm_main = class(TFrm_BaseIme)
StatusBar1: TStatusBar;
MainMenu1: TMainMenu;
AdoConnectMain: TADOConnection;
AdoQry_Sysmenu: TADOQuery;
AdoQry_SysmenuAccessCtrl: TADOQuery;
AdoQry_Tmp: TADOQuery;
ActionList1: TActionList;
Action1: TAction;
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Action1Execute(Sender: TObject);
private
F_LoginId:string;
F_LoginName:string;
F_LoginDate:string;
F_ModuleCode:string;
procedure InsertmenuItem(father: TMenuItem;fidstring:string);
procedure newmenuclick(Sender: TObject);
procedure SysMenuClick(Sender: TObject);
procedure ShowRMRPFlag();
function newnumber(number:integer):string;
{ Private declarations }
public
//显示statusbar上的时钟
currentmenuid:string;
procedure createmenu;
procedure timedisp(Sender: TObject; var Done: Boolean);
{ Public declarations }
end;
var
frm_main: Tfrm_main;
implementation
uses sys_global,aj_sys_login, Bas_Employee, Bas_Vendor,
Bas_Customer, Bas_Currency, Bas_ExchRate,
Bas_Item, Bas_StandardPrice, sys_sysmenu, sys_AccessCtrl, Mrp_Planner,
Mrp_Enter_NormalMps,Sys_Operator, Bas_VendorItem,
Mrp_Qry_Mps, Bas_Warehouse, Bas_SysParam, Pm_Buyer, Pm_PmParam,
Inv_WHSelect, bas_dept, Sys_ChangePassword, Pm_PoTerm, Pm_PoTermset,
Inv_BillType, Inv_BillType2, Inv_SalePrice2, Ap_PayMode, Sfc_WipInv,
Inv_CurrentInvQry_S, Inv_WHAccessCtrl,
pm_VendorItemAssign, Mrp_Enter_PassMo, Mrp_Enter_CloseMo,
Mrp_Enter_ForeverCloseMo, Mrp_Qry_AnalyzerMo2, Mrp_Qry_InformalMrpInfo,
Mrp_Enter_DelMo, Mrp_Qry_Mo, Mrp_Qry_Calendar, Mrp_Qry_MoH, Mrp_Enter_MoH,
Pm_Pc_Entry_H, Mrp_Enter_Mrpinfo,
Mrp_Enter_Calendar,
Inv_Qry_CurrentInv_Position, Inv_Qry_CurrentInv_WareHouse, SFC_MnIn,
Bas_WHPosition, Bas_Uom, Inv_MNInBillListQry, Inv_MNOutBillListQry,
Pm_Pc_Check_H, Pm_Enter_PoH, Pm_Enter_ClosePo, Pm_Enter_DelPo,
Pm_Enter_PassPo, Pm_Enter_ForeverClosePo, Pm_Qry_Po,
Mrp_Qry_AnalyzerMo3, Mrp_Qry_AnalyzerMo4, Pm_Qry_ChngInfoPo,
Pm_Qry_AnalyzerPo7, Pm_Qry_AnalyzerPo5, Pm_Qry_AnalyzerPo3,
Pm_Qry_AnalyzerPo1, Pm_Qry_AnalyzerPo2, Pm_Qry_AnalyzerPo4,
Pm_Qry_ChngInfoPoH, Mrp_Enter_FreeMoH, Pm_Enter_FreePoH,
Inv_MNInAudit, Mrp_Qry_ChngInfoMps, Mrp_Qry_AnalyzerMo1,
Pm_Qry_AnalyzerPo6, Bas_Bom,
Mrp_Qry_AnalyzerCapacity1,
Inv_OtherOut_H, Sys_ReportCtrl,
Inv_OtherOutAudit_H, Mrp_Enter_InformalMrpInfo,
Mrp_Qry_AnalyzerCapacity_H, Pm_Enter_InformalSSPoInfo, Pm_Enter_SSPoInfo,
Bas_qry_BomTreeview,
Inv_PurchaseInBillListQry, Inv_SaleBillListQry, Inv_OtherOutBillListQry,
Inv_OtherInBillListQry, Mrp_Qry_MrpInfo, Ap_SubAp,
Mrp_Qry_informalUpRightMrp,Ap_Qry_VendorInvoice,
mrp_qry_informaloblongmrp, Mrp_Qry_UpRightMrp,
Inv_CheckIn_H,Qc_CheckResult, Bas_Qry_bomSviewMaster,
Mrp_Qry_AnalyzerMps, Mrp_Qry_OblongMrp, Ap_invoice,
Ap_Qry_SubAp, Mrp_Qry_OblongMps,
Bas_Qry_MultiBom, Ap_Qry_InvoicePay, Ap_Qry_NoInvoiceInbInbill,
Mrp_Qry_ClassifyStatMo, Ap_Qry_CurryAp, Bas_BomBatchReplace,
Mrp_Qry_FreeMo, Pm_Qry_FreePo, Ap_Qry_ApDetail, Ap_pay, Inv_WHPMove_H,
Inv_OtherIn_H, Inv_OPOutBillQry, Inv_MNOutAudit_H, Mrp_Enter_RunMrp,
Mrp_Enter_FreePassMo, Mrp_Enter_FreeCloseMo, Mrp_Enter_FreeForeverCloseMo,
Mrp_Enter_FreeDelMo, Pm_Enter_ForeverClosePo1, Pm_Enter_FreePassPo,
Pm_Enter_FreeClosePo, Pm_Enter_FreeForeverClosePo,
Pm_Enter_FreeForeverClosePo1, Pm_Enter_FreeDelPo, Pm_Qry_SSPoInfo,
Pm_Qry_InformalSSPoInfo, Inv_OPOutBillListQry, Inv_ValuationBillListQry,
Inv_PriceAudit_H, Inv_MNInAudit_H, Mrp_Enter_Mo, Bas_Dept2,
Mrp_Enter_PassMps, Mrp_Enter_CloseMps, Inv_OtherInAudit_H, Inv_JournalQry,
Inv_WHPMOveBillListQry, PC_Qry_Pc, PM_OPPOBalance_H, Inv_OPOut_H,
Sfc_mnrequest, AP_CheckOut, Inv_PurchInAudit_H, Mrp_Qry_AnalyzerMrpMo_H,
Mrp_Enter_DelMps, Pm_Enter_SSPoInfo1, Inv_PurchaseIn_H, bas_bom_copy,
Bas_Qry_BomAmount, MRP_MRPParam, Pm_Qry_AnalyzerVendorSupply,
Pm_PoBalance_H, Pm_Qry_AnalyzerItemVendor, Pm_Qry_AnalyzerPoEnterItem,
Inv_OPVendorInvQry, Inv_OPInvQry, Inv_OPPOInvQry, Ap_Qry_APInvoiceLog,
Ap_Qry_PayJournalLog,PM_Qry_Pc, Inv_MNInSumQry, Inv_MNOutSumQry,
Inv_OPJournalQry, Inv_JournalQry_Inv, Inv_BillListQry, Sfc_MOOutQry,
Sfc_MOInQry, Sfc_MnOutQry, Sfc_MnInQry, Qc_CheckResultQry,
Mrp_Qry_AnalyzerMoIn, Pm_Enter_SSPoInfo2, Inv_SaleMaterialAudit_H,
Inv_SaleProductAudit_H, Inv_SaleMaterial_H, Inv_SaleProduct_H,
Mrp_Enter_ImportMps, Bas_SToSBom, Bas_ApBalance, Inv_OtherIOHSum,
Inv_DailyReport, Inv_MonthSumQty, Inv_OtherIOSum, Inv_SafeInvQry,
Inv_ImportSumQry, Inv_OPMaterialSumQry, Inv_VendorSumQry, Inv_MonthSum,
Inv_CloseBook, Inv_UndoCloseBook, Inv_ItemSaleSum, Inv_VendorSaleSum,
Inv_SaleSum, Inv_WHSumQry, ap_param, Pm_Qry_NormalSSPoInfo,
Mrp_Qry_MaterialMo, Pm_Qry_PoInvinInvoicePay, Pm_Qry_PoExecuteDetail,
Mrp_Qry_GraphAnalyzerCapacity_H, Inv_MonthClassSumQty, Inv_MonthReport,
Inv_DailyPurchIn, Inv_DailyMnOut, Inv_DailyMnIn, Bas_Qry_BomLog;
{$R *.DFM}
procedure Tfrm_main.FormCreate(Sender: TObject);
{var
Tmp_inifile:tinifile; //操作ini文件的对象
Tmp_lserverip:string;
Tmp_ldatabasename:string;
Tmp_ldbuserid:string;
Tmp_ldbpass:string; }
begin
frm_main.height:=screen.Height;
frm_main.width:=screen.width;
frm_main.refresh;
{ //从INI获取口令
Tmp_inifile:=tinifile.create(ExtractFilePath(Application.Exename)+'autojet.ini');
Tmp_lserverip:=Tmp_inifile.readstring('system','serverip','');
Tmp_ldatabasename:=Tmp_inifile.readstring('system','databasename','');
Tmp_ldbuserid:=Tmp_inifile.readstring('system','dbuserid','');
Tmp_ldbpass:=Tmp_inifile.readstring('system','dbpass','');
Tmp_inifile.free;
//测试连接数据库
with AdoConnectMain do
begin
ConnectionString:=
'Provider=SQLOLEDB.1;'+
'Password='+Tmp_ldbpass+';'+
'Persist Security Info=True;'+
'User ID='+Tmp_ldbuserid+';'+
'Initial Catalog='+Tmp_ldatabasename+';'+
'Data Source='+Tmp_lserverip+'';
end;
AdoConnectMain.Connected:=True; }
//改变运行时win98状态栏上的icon和titlename
application.icon:=frm_main.icon;
application.title:='美迪电器集团有限公司';
//将SQL时的等待鼠标改成沙漏
screen.cursors[crsqlwait]:=screen.cursors[crhourglass];
//定义日期格式
DateSeparator:='.';
shortdateformat:='yyyy.mm.dd';
//局部私有变量初始化
F_LoginDate:=datetostr(date);
F_LoginId:='';
F_LoginName:='';
F_ModuleCode:='';
//数据库连接
{ AdoConnectMain.Connected:=true; }
frm_main.caption:='制造资源计划管理系统';
//初始化状态栏
with statusbar1 do
begin
Panels[0].Text :='请联系软件提供者 0755-12345678';
panels[2].text:='用户:';
panels[3].text:='业务日期:';
end;
//利用系统空闲显示时间
Application.OnIdle:= timedisp;
end;
procedure Tfrm_main.FormActivate(Sender: TObject);
begin
Application.ProcessMessages;
//建立菜单
if mainmenu1.items.count=0 then
begin
Application.CreateForm(TFrm_aj_Sys_Login, Frm_aj_Sys_Login);
If (Frm_aj_sys_Login.ShowModal=Mrok) Then
begin
repaint;
F_LoginId:=Frm_aj_sys_Login.EmployeeCode;
F_LoginName:=Frm_aj_sys_Login.EmployeeName;
AdoConnectMain.ConnectionString:=Frm_aj_sys_Login.AdoConnect.ConnectionString;
AdoConnectMain.Connected:=True;
createmenu;
StatusBar1.panels[2].text:='用户:'+F_LoginId+F_LoginName;
StatusBar1.panels[3].text:='业务日期:'+F_LoginDate;
Frm_aj_sys_Login.Release;
end
Else
Application.Terminate; //修改处
End;
end;
procedure Tfrm_main.timedisp(Sender: TObject; var Done: Boolean);
begin
Statusbar1.panels[4].text:=timetostr(time);
done:=false;
end;
procedure Tfrm_main.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
i:integer;
begin
//是否建立了系统菜单,是则提示是否退出,
//否则在登录时已经提示
if mainmenu1.items.count<>0 then
if DispInfo(' 确认退出系统吗? ',2)='n' then
canclose:=false
else
with self do
for I := MDIChildCount-1 downto 0 do
MDIChildren[I].Close;
end;
procedure Tfrm_main.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
//系统内定的Ctrl+L热键,改变登录条件
if (key=ord('L')) and (shift-[ssalt]-[ssshift]+[ssctrl]=shift) then
frm_aj_sys_login.showmodal;
end;
procedure Tfrm_main.createmenu;
var
PullDown:tmenuitem;
//count 菜单基数目
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -