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

📄 u_main.pas

📁 超信人力资源管理系统,一个用Delphi编写的人事管理系统
💻 PAS
字号:
unit U_main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, ActnList, ComCtrls, db, adodb, ToolWin, ImgList,
  StdCtrls;

type
  TF_main = class(TForm)
    MM: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N15: TMenuItem;
    ActionList1: TActionList;
    SYS_Lock: TAction;
    ChangePassword: TAction;
    Set_Params: TAction;
    Soft_seting: TAction;
    Open_log: TAction;
    Open_power: TAction;
    DB_back: TAction;
    REG_FORMS: TAction;
    Fack_set: TAction;
    Soft_REG: TAction;
    CLose_allForm: TAction;
    Panel_main: TPanel;
    StateBar: TStatusBar;
    Sys_exit: TAction;
    N14: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    TB: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ImageList1: TImageList;
    PToolmenu: TPopupMenu;
    N7: TMenuItem;
    N18: TMenuItem;
    Label1: TLabel;
    Image1: TImage;
    procedure REG_FORMSExecute(Sender: TObject);
    procedure SYS_LockExecute(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Sys_exitExecute(Sender: TObject);
    procedure Open_logExecute(Sender: TObject);
    procedure Fack_setExecute(Sender: TObject);
    procedure Mainmenuclick(Sender: tobject);
    procedure N7Click(Sender: TObject);
    procedure N18Click(Sender: TObject);
    procedure ChangePasswordExecute(Sender: TObject);
    procedure Set_ParamsExecute(Sender: TObject);
    procedure Soft_setingExecute(Sender: TObject);
  private
    { Private declarations }
  public
    procedure setMainmenu();
    { Public declarations }
  end;

var
  F_main: TF_main;

implementation

uses U_data, U_login, U_change_Password, U_Set_Params;

{$R *.dfm}

//加载用户菜单

procedure TF_main.setMainmenu();
var I, J, Z: integer;
  newitem: TmenuItem;
  TempItem,Tempitem1: Tmenuitem;
  Q: Tadoquery;
begin
  if Login_code <> '' then
  try
    begin
      for I := COMPONENTCOUNT - 1 downto 0 do //先把自定义的菜单释放掉
      begin
        if COMPONENTS[I] is TMENUITEM then
          if COMPONENTS[I].Tag = 100 then
            COMPONENTS[I].Destroy;
      end; //经典

      Q := Tadoquery.create(self);
      Q.Connection := Current_Con;
      SQL_S := 'Select sid, Mainmenu From TB_Acount_Menu where CNID in (select SID from TB_Acount where Ucode=''' + Login_code + ''') order by orderno';
      SQL_open(Sql_s);
      for i := 0 to DM.Q_TempA.RecordCount - 1 do
      begin
        newitem := Tmenuitem.Create(Self);
        newitem.Caption := Dm.Q_TempA.fieldbyname('mainmenu').AsString;
        newitem.Name := 'Mn' + inttostr(i);
        newitem.Tag := 100;
        MM.Items.Add(newitem);
        SQL_S := 'Select A.formname,A.haschild,A.Mcaption,B.caption from TB_Acount_detail A,TB_Form B  where A.Formname=B.formname and A.CNID=''' + DM.Q_TempA.fieldbyname('SID').AsString + ''' order by orderno';
        Q.Close;                     
        Q.SQL.Clear;
        Q.SQL.Add(SQL_S);
        Q.Open;
     // Showmessage(inttostr(Q.RecordCount));
        for J := 0 to Q.RecordCount - 1 do
        begin
          Tempitem := Tmenuitem.Create(self);
          Tempitem.Name := 'Mnn' + Inttostr(i) + inttostr(J);
          if Q.FieldByName('haschild').AsBoolean then //如果有子模块,则A表中的Mcation
          begin
            Tempitem.Caption := Q.fieldbyname('Caption').AsString;
            newitem.Add(tempitem);
            Tempitem1:=Tmenuitem.Create(self);
            Tempitem1.Name:='bbb';
            Tempitem1.Caption:=Q.fieldbyname('MCaption').AsString;
            Tempitem.Add(tempitem1); 
          end
          else
          begin
            Tempitem.Caption := Q.fieldbyname('Caption').AsString; //没有则用B表中的caption
            Tempitem.Hint := Q.fieldbyname('Formname').AsString;
            Tempitem.OnClick := Mainmenuclick;
            Tempitem.Tag := 100;
            newitem.Add(tempitem);
          end;
          Q.Next;
        end;
        DM.Q_TempA.Next;
      end;
    end
  finally
    begin
      Q.Free;
  // newitem.Free;  //为什么不能释放,释放后就会少一个菜单
  // Tempitem.Free;
    end;
  end;

end;




procedure TF_main.Mainmenuclick(Sender: tobject); //菜单单JI事件的代替
begin
  SHOW_FORM(TMENUITEM(SENDER).HINT);
end;

procedure TF_main.REG_FORMSExecute(Sender: TObject);
begin
//if LOGIN_CODE <> 'SYSTEM' then
 // begin
 //   MessageDlg('对不起,你的权限不够,不能注册窗体。', mtWarning, [mbOK], 0);
 //   EXIT;
 // end;
  SHOW_FORM('F_RegForm');
end;

procedure TF_main.SYS_LockExecute(Sender: TObject);
  //MY_INI: TINIFILE;
 // PATH: string;
begin
  Application.CreateForm(TF_LOGIN, F_LOGIN);
  F_LOGIN.ShowModal;
  F_LOGIN.Release;
  //SET_LOOK(LOGIN_CODE);

//  ADOQuery1.Open;

 // PATH := ExtractFileDir(APPLICATION.ExeName);
 // if LOGIN_CODE = 'SYSTEM' then
  //  TREE_INTERFACE.PopupMenu := POPUPMENU1
 // else TREE_INTERFACE.PopupMenu := nil;
end;

procedure TF_main.FormPaint(Sender: TObject);
begin
  StateBar.Panels[0].Text := Sys_title;
  StateBar.Panels[2].Text := Login_code + '    [' + Login_name + ']';
  StateBar.Panels[4].Text := datetimetostr(Sys_Login_Time);

end;

procedure TF_main.FormShow(Sender: TObject);
begin
  //当用户存在时加载此用用户菜单

  SetMainmenu();

  SQL_S := 'Insert into TB_SYS_log (Ucode,computer,Title,logintime,Dotime,havedo) values(''' + Login_code + ''',''' + Computer_name
    + ''',''' + Caption + ''',Convert(varchar(20),Getdate(),20),Convert(varchar(20),Getdate(),20),''进入系统'')';
  Insert_log(sql_S);
end;

procedure TF_main.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CANCLOSE := APPLICATION.MessageBox('确定退出系统吗?', '退出系统', MB_YESNO + MB_ICONQUESTION) = IDYES
end;

procedure TF_main.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//退出用户状态
  SQL_S := 'UPDATE TB_Acount SET LastIP=''' + user_IP + ''',Computername=''' + COMPUTER_NAME + ''',Uactive=0 WHERE UCODE='''
    + LOGIN_CODE + '''';
  SQL_EXEC(SQL_S);
 //更新操作日志

  SQL_S := 'Insert into TB_SYS_LOG (UCODE,Computer,Title,LogoutTime,Dotime,Havedo) VALUES(''' + LOGIN_CODE + ''',''' + Computer_name + ''','''
    + '主窗口'',Convert(varchar(20),Getdate(),20),Convert(varchar(20),Getdate(),20),''退出系统'')';
  Insert_log(sql_s);

  Application.Terminate;
end;

procedure TF_main.Sys_exitExecute(Sender: TObject);
begin
  if APPLICATION.MessageBox('确定退出系统吗?', '退出系统', MB_YESNO + MB_ICONQUESTION) = IDYES then
  begin
//退出用户状态
    SQL_S := 'UPDATE TB_Acount SET LastIP=''' + user_IP + ''',Computername=''' + COMPUTER_NAME + ''',Uactive=0 WHERE UCODE='''
      + LOGIN_CODE + '''';
    SQL_EXEC(SQL_S);
 //更新操作日志

    SQL_S := 'Insert into TB_SYS_LOG (UCODE,Computer,Title,LogoutTime,Havedo) VALUES(''' + LOGIN_CODE + ''',''' + Computer_name + ''','''
      + caption + ''',Convert(varchar(20),Getdate(),20),''退出系统'')';
    Insert_log(sql_s);

    Application.Terminate;
  end;
end;

procedure TF_main.Open_logExecute(Sender: TObject);
begin
//if Login_Code<>'SYSTEM' then exit;
  SHOW_FORM('F_Log');
end;

procedure TF_main.Fack_setExecute(Sender: TObject);
begin
  if Login_code <> 'System' then exit;
  Show_form('F_UserFace_set');
end;

procedure TF_main.N7Click(Sender: TObject);
begin
  TB.Flat := false;

end;

procedure TF_main.N18Click(Sender: TObject);
begin
  TB.Flat := true;
end;

procedure TF_main.ChangePasswordExecute(Sender: TObject);
begin
  SHOW_FORM('F_change_password');
end;

procedure TF_main.Set_ParamsExecute(Sender: TObject);

begin
  if UpperCase(Login_code) <> 'SYSTEM' then
  begin
    MessageDlg('你没有足够权限,请与管理员联系!', mtWarning, [mbOK], 0);
    Exit;
  end;
  SHOW_Form('F_Set_Params');
end;

procedure TF_main.Soft_setingExecute(Sender: TObject);
begin
  if Uppercase(Login_code) <> 'SYSTEM' then
  begin
    MessageDlg('你没足够的权限,请与管理员联系!', mtWarning, [mbOK], 0);
    Exit;
  end;
  Show_form('F_Sys_seting')
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -