DELPHI 中如何使用菜单数组

有时候我们需要进行批量设置某一组菜单或按纽,这里候就需要菜单数组。

这儿以设置菜单为例。

unit ulogin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxLookAndFeelPainters, cxCheckBox, cxDropDownEdit, cxCalendar,
  cxTextEdit, cxMaskEdit, cxControls, cxContainer, cxEdit, cxLabel,
  StdCtrls, cxButtons, ExtCtrls, ADODB, DB,inifiles,registry,StrUtils, Menus;

type
  Tfrmlogin = class(TForm)
    Panel1: TPanel;
    Bevel1: TBevel;
    Bevel2: TBevel;

type tagLIMITS = record
    nNew:     integer;
    nModify:  integer;
    nDel:     integer;
    nSh:      integer;
    nJz:      integer;
    nPrint:   integer;
end;

var
    SM:array[1..36] of TMenuItem;   //定义菜单数组
    qx:array[1..36] of tagLIMITS;  //全局结构体变量,存放权限
   
var
  frmlogin: Tfrmlogin;

procedure GetLimits(FunId:string;var outlimits:tagLIMITS);stdcall external 'LimitMng.dll';    //调用外部DLL
procedure SetLoginUser(UserId:string);stdcall external 'LimitMng.dll';

implementation

uses ujserp, udmjserp, uJdt,md5, uDataInit;

{$R *.dfm}
//function MD5String(M: string): MD5Digest;stdcall;External'md5.dll' name 'MD5String';
//function MD5Print(D: MD5Digest): string;stdcall;external'md5.dll' name 'MD5Print';

 

procedure Tfrmlogin.cxButton1Click(Sender: TObject);
var s,Temp:           string;
               i:              Integer;
begin
  if cxYfmc.Text = '' then
    begin
      MessageBox(self.Handle,'没有用户名!','系统提示',MB_ICONINFORMATION);
      Exit;
    end;

  with ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * From UserLogin Where User_Name = '+QuotedStr(cxYfmc.Text));
      Open;
    end;

  if MD5Print(MD5String(cxDlmm.Text)) = ADOQuery1.fieldbyname('User_Password').AsString then
    begin
      FrmJdt :=TFrmJdt.Create(Self);   //创建登录进度条
      FrmJdt.Show;
      FrmJdt.lblCaption.Caption :='正在初始化系统,请稍候......';
      FrmJdt.Update;
      FrmJdt.cxBar.Position :=2;
      FrmJdt.Update;
     
      frmjserp.statSystemBar.Panels.Items[3].Text:=cxYfmc.Text;
      FrmJdt.cxBar.Position :=5;
      FrmJdt.Update;

      ShowBackPicture(Sender); //显示主界面的背景
      FrmJdt.cxBar.Position :=10;
      FrmJdt.Update;
      cxDlmm.Clear;

      SetLoginUser(ADOQuery1.fieldbyname('User_Id').AsString);   //设置用户ID

      for i:=low(SM) to high(SM) do
        begin
          s:='fun00000';
          if i<10 then Temp:='0'+ IntToStr(i)
          else Temp:=IntToStr(i);
          S:=S+Temp;
          GetLimits(s,qx[i]);

          if (qx[i].nNew = 1) or (qx[i].nModify = 1) or (qx[i].nDel = 1) or
             (qx[i].nSh = 1) or(qx[i].nJz = 1) or (qx[i].nPrint = 1) then
              SM[i].Enabled:=True
          else
              SM[i].Enabled:=False;    //使用控件数组设置菜单的ENABLED 属性
          // MessageBox(self.Handle,PChar(Temp),'销售管理系统',MB_ICONINFORMATION);
          FrmJdt.cxBar.Position :=20+i*2;
        end;

      FrmJdt.cxBar.Position :=100;

      SaveIni;
      Close;
    end
  else
    begin
      MessageBox(self.Handle,'密码错误!','系统提示',MB_ICONINFORMATION);
      cxDlmm.Clear;
      cxDlmm.SetFocus;
    end;
end;

 

procedure Tfrmlogin.FormCreate(Sender: TObject);
begin
  EnableMenuItem(GetSystemMenu(Self.Handle,False),SC_CLOSE,MF_GRAYED);
    ADOQuery1.Connection := dmjserp.con1;
    cxDlsj.Date:= Date;

     //窗体创建时,把菜单读入定义的数组中 

     SM[1]:=frmjserp.fun0000001;
      SM[2]:=frmjserp.fun0000002;
      SM[3]:=frmjserp.fun0000003;
      SM[4]:=frmjserp.fun0000004;
      SM[5]:=frmjserp.fun0000005;
      SM[6]:=frmjserp.fun0000006;
      SM[7]:=frmjserp.fun0000007;
      SM[8]:=frmjserp.fun0000008;
      SM[9]:=frmjserp.fun0000009;
      SM[10]:=frmjserp.fun0000010;
      SM[11]:=frmjserp.fun0000011;
      SM[12]:=frmjserp.fun0000012;
      SM[13]:=frmjserp.fun0000013;
      SM[14]:=frmjserp.fun0000014;
      SM[15]:=frmjserp.fun0000015;
      SM[16]:=frmjserp.fun0000016;
      SM[17]:=frmjserp.fun0000017;
      SM[18]:=frmjserp.fun0000018;
      SM[19]:=frmjserp.fun0000019;
      SM[20]:=frmjserp.fun0000020;
      SM[21]:=frmjserp.fun0000021;
      SM[22]:=frmjserp.fun0000022;
      SM[23]:=frmjserp.fun0000023;
      SM[24]:=frmjserp.fun0000024;
      SM[25]:=frmjserp.fun0000025;
      SM[26]:=frmjserp.fun0000026;
      SM[27]:=frmjserp.fun0000027;
      SM[28]:=frmjserp.fun0000028;
      SM[29]:=frmjserp.fun0000029;
      SM[30]:=frmjserp.fun0000030;
      SM[31]:=frmjserp.fun0000031;
      SM[32]:=frmjserp.fun0000032;
      SM[33]:=frmjserp.fun0000033;
      SM[34]:=frmjserp.fun0000034;
      SM[35]:=frmjserp.fun0000035;
      SM[36]:=frmjserp.fun0000036;
end;

end.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值