📄 u_main.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 + -