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

📄 main.pas

📁 产品信息系统!关于产品基础信息的系统!功能强大!
💻 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 + -