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

📄 main.pas

📁 一个MRPII系统源代码版本
💻 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 + -