u_checkrights.~pas

来自「餐营的数据核算,模拟入库,出库,库存.对餐营的流程详细叙述」· ~PAS 代码 · 共 70 行

~PAS
70
字号
unit U_CheckRights;

interface
   uses windows,Classes,ADODB;

var
  RightsList:TStringList;

type
  PRights=^RRights;
  RRights=record
    FormName:String;
    BtnName:String;
  end;

   function FillStrList(ADO:TADOQuery):Boolean;
   procedure ClearStrList;
   function CheckRights(FormName,BtnName:String):Boolean;

implementation

function FillStrList(ADO:TADOQuery):Boolean;
var
  i:integer;
  Rights:PRights;
begin
  if Not Assigned(RightsList) then
    RightsList:=TStringList.Create;

  ADO.First;
  while Not ADO.Eof do
  begin
    New(Rights);
    Rights^.FormName:=ADO.fieldByName('FormName').AsString;
    Rights^.BtnName:= ADO.fieldByName('BtnName').AsString;
    RightsList.AddObject(Rights^.BtnName,TObject(Rights));

    ADO.next;
  end;
end;

procedure ClearStrList;
var
  i:integer;
begin
  for i:=0 to RightsList.Count-1 do
  begin
    if RightsList.Objects[0]<>nil then
      Dispose(PRights(RightsList.Objects[0]));
    RIghtsList.Delete(0);
  end;
end;

function CheckRights(FormName,BtnName:String):Boolean;
var
  i:integer;
begin
  Result:=false;

  if RightsList.IndexOf(BtnName)=-1 then exit;
  for i:=0 to RightsList.Count-1 do
  begin
    if RightsList[i]=BtnName then
      Result:=PRights(RightsList.Objects[i])^.FormName=FormName;

    if Result then exit;
  end;
end;
end.

⌨️ 快捷键说明

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