亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? userlimitform.pas

?? 進銷存管理 編譯環境Delphi7+Win2000 用到的控件 ReportMachine2.6 InfoPower4000Pro_vcl7 RxLib2.7 SkinEngine 3
?? PAS
字號:
unit UserLimitForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ListForm, dxBar, dxBarExtItems, KsSkinForms, KsSkinPanels, dxExEdtr,
  dxCntner, dxTL, dxDBCtrl, dxDBTL, ExtCtrls, KsSkinTabs, DB, ADODB, SysPublic,
  KsSkinCheckBoxs, StdCtrls, se_controls, ksskinsplitter;

type
  TfrmUserLimit = class(TfrmListForm)
    PageControl: TSeSkinPageControl;
    DataSet: TADODataSet;
    dsSource: TDataSource;
    treeMain: TdxDBTreeList;
    bbPassword: TdxBarLargeButton;
    SeSkinForm2: TSeSkinForm;
    Splitter1: TSeSkinSplitter;
    procedure treeMainGetImageIndex(Sender: TObject; Node: TdxTreeListNode;
      var Index: Integer);
    procedure treeMainGetSelectedIndex(Sender: TObject;
      Node: TdxTreeListNode; var Index: Integer);
    procedure bbRefreshClick(Sender: TObject);
    procedure treeMainChangeNode(Sender: TObject; OldNode,
      Node: TdxTreeListNode);
    procedure bbAllSelectClick(Sender: TObject);
    procedure bbAlldelClick(Sender: TObject);
    procedure bbSaveClick(Sender: TObject);
    procedure bbSelectClick(Sender: TObject);
    procedure bbDelClick(Sender: TObject);
    procedure bbPasswordClick(Sender: TObject);
    procedure PageControlEnter(Sender: TObject);
  private
    { Private declarations }
    bReturn: Boolean;
    lUserID1, lTreeOldID: Integer;
    procedure CheckBoxClickEx(Sender: TObject);
    procedure LoadMenu(dxBar: TdxBarManager);
    function GetPosName(sName: string): string;
    procedure CreateCheckBox(Comp1: TComponent; lX, lY, lTag: integer; sName,
      sCaption: string);
    function SaveLimitstr(sUserID, sLimitStr: string): Boolean;
    procedure SetCheckBox(sLimitStr: string);
    function GetCheckBox: string;
    procedure LoadGrid;
    procedure MainShow;
    procedure LoadData;
  public
    { Public declarations }
  end;

function UserLimitShow(lUserID: Integer): Boolean; //用戶權限設置
function LoadLimitStr(lID: Integer): string; //讀權限字符串
procedure SetMainMenu(dxBar: TdxBarManager); //通過當前權限設置主菜單
function CheckLimit(lMode: Integer): boolean; //檢查用戶權限
procedure SetStartAccountMenu(dxBar: TdxBarManager); //修改期初前后菜單

implementation
uses DBData, MainWindow, ChangePassForm;
{$R *.dfm}

function UserLimitShow(lUserID: Integer): Boolean;
var
  frmUserLimit: TfrmUserLimit;
begin
  frmUserLimit := TfrmUserLimit.Create(Application);
  with frmUserLimit do
  begin
    lUserID1 := lUserID;
    MainShow;
    Result := bReturn;
    Free;
  end;
end;

function LoadLimitStr(lID: Integer): string;
begin
  Result := FieldIdToNameEx('UserLimit', InttoStr(lID), 'UserID', 'LimitStr');
end;

procedure SetMainMenu(dxBar: TdxBarManager);
var
  i, lCate: integer;
  sLimit, s: string;
begin
  dxBar.LockUpdate := True;
  sLimit := LoadLimitStr(LoginEmployeID);
  if FieldIdToName('Employe', IntToStr(LoginEmployeID), 'Admin') = '1' then
    for i := 0 to 50 do
      sLimit := sLimit + '11111';
  if sLimit = '' then Exit;
  for i := 0 to dxBar.ItemCount - 1 do
  begin
    if (dxBar.Items[i] is TdxBarSubItem) and (dxBar.Items[i].Category = 0) then
    begin
      if (dxBar.Items[i].Name = 'MainSubItem12') then Continue; //[幫助]永遠顯示
      dxBar.Items[i].Visible := ivNever;
    end;
  end;

  for i := 0 to dxBar.ItemCount - 1 do
  begin
    if dxBar.Items[i] is TdxBarButton then
    begin
      lCate := dxBar.Items[i].Category - 1;
      s := copy(sLimit, dxBar.Items[i].Index, 1);
      if StrToInt2(s) > 0 then
      begin
        dxBar.Items[i].Visible := ivAlways;
        if dxBar.Items[lCate].Visible = ivNever then dxBar.Items[lCate].Visible := ivAlways;
      end
      else
        dxBar.Items[i].Visible := ivNever;
      if dxBar.Items[i].Category = 12 then dxBar.Items[i].Visible := ivAlways; //[幫助]永遠顯示
    end;
  end;
  dxBar.LockUpdate := False;
end;

procedure SetStartAccountMenu(dxBar: TdxBarManager); //修改期初前后菜單
  procedure HideMainItem;
  var
    i: Integer;
  begin
    dxBar.LockUpdate := True;
    with dxBar do
      for i := 0 to ItemCount - 1 do
      begin
        if (Items[i] is TdxBarSubItem) and (Items[i].Category = 0) then
        begin
          if (Items[i].Name = 'MainSubItem1') or (Items[i].Name = 'MainSubItem2') or
            (Items[i].Name = 'MainSubItem5') or (Items[i].Name = 'MainSubItem8') or
            (Items[i].Name = 'MainSubItem9') or (Items[i].Name = 'MainSubItem11') or
            (Items[i].Name = 'MainSubItem12') then Continue; //永遠顯示
          Items[i].Visible := ivNever;
        end;
      end;
    dxBar.LockUpdate := False;
  end;
  procedure HideMenuButton;
  var
    i: Integer;
  begin
    dxBar.LockUpdate := True;
    for i := 0 to dxBar.ItemCount - 1 do
    begin
      if dxBar.Items[i] is TdxBarButton then
      begin
        dxBar.Items[i].Visible := ivNever;
        case dxBar.Items[i].Category of
          1, 2, 11, 12: dxBar.Items[i].Visible := ivAlways; //永遠顯示;
        end;
        case dxBar.Items[i].Tag of
          BASE_FIXED_SORT, BASE_FIXED_MODE, BASE_FIXED_USE, BASE_FIXED_ADD,
            BASE_WAGE_KIND, BASE_WAGE_PROCEDURE, BASE_WAGE_ITEM,
            WARE_STOCK_EDIT, WARE_STOCK_PRICE_EDIT:
            dxBar.Items[i].Visible := ivAlways; //永遠顯示;
        end;
      end;
    end;
    dxBar.LockUpdate := False;
  end;
  procedure EnabledMenuButton;
  begin
    dxBar.GetItemByName('dxBarButton116').Enabled := not bStartAccount; //啟用賬套
  end;
begin
  if not bStartAccount then
  begin
    HideMainItem;
    HideMenuButton;
  end;
  EnabledMenuButton;
end;

function CheckLimit(lMode: Integer): boolean;
var
  i: integer;
  dxBar: TdxBarManager;
begin
  Result := False;
  dxBar := frmMainWindow.dxBarManager1;
  for i := 0 to dxBar.ItemCount - 1 do
  begin
    if (dxBar.Items[i] is TdxBarButton)
      and (dxBar.Items[i].Tag = lMode)
      and (dxBar.Items[i].Visible = ivAlways) then
    begin
      Result := True;
      Break;
    end;
  end;
end;

procedure TfrmUserLimit.MainShow;
begin
  LoadGrid;
  LoadData;
  if not CheckLimit(USER_LIMIT_FORM) then
  begin
    ShowMsg('對不起,你沒有權限使用此功能!');
    Exit;
  end;
  ShowModal;
end;

procedure TfrmUserLimit.LoadGrid;
begin
  bReturn := False;
  Caption := '用戶權限設置';
  if lUserID1 > 0 then
    treeMain.Visible := False
  else
  begin
    treeMain.Visible := True;
    StrToTreeField(treeMain, 'Name', '員工名稱', '');
  end;
  LoadMenu(frmMainWindow.dxBarManager1);
end;

procedure TfrmUserLimit.LoadData;
var
  sSql: string;
begin
  sSql := 'SELECT ID,TreeParent,Name FROM Employe where Admin<>1';
  DataSet.LockType := ltReadOnly;
  OpenDataSet(DataSet, sSql);
  SetCheckBox(LoadLimitStr(DataSet.FieldByName('ID').AsInteger));
  if DataSet.RecordCount < 1 then
  begin
    bbPassword.Enabled := False;
  end;
end;

function TfrmUserLimit.GetPosName(sName: string): string;
var
  s: string;
begin
  s := Trim(sName);
  if pos('(', s) > 0 then
    s := copy(s, 0, pos('(', s) - 1);
  Result := s;
end;

function TfrmUserLimit.SaveLimitstr(sUserID, sLimitStr: string): Boolean;
var
  sSql: string;
begin
  sSql := ' SELECT * FROM UserLimit where UserID=' + sUserID;
  if GetDataSetEmpty(sSql) then
    sSql := 'INSERT INTO UserLimit (UserID,LimitStr)VALUES(' + sUserID + ',''' +
      sLimitStr + ''')'
  else
    sSql := ' update UserLimit Set LimitStr=''' + sLimitStr + ''' Where UserID='
      + sUserID;
  Result := ExecSql(sSql);
end;

procedure TfrmUserLimit.SetCheckBox(sLimitStr: string);
var
  i: Integer;
  s: string;
begin
  for i := 0 to ComponentCount - 1 do
  begin
    if (Components[i] is TSeSkinCheckBox) then
    begin
      s := copy(sLimitStr, TSeSkinCheckBox(Components[i]).Tag, 1);
      if StrToInt2(Trim(s)) > 0 then
        TSeSkinCheckBox(Components[i]).Checked := True
      else
        TSeSkinCheckBox(Components[i]).Checked := False;
    end;
  end;
end;

function TfrmUserLimit.GetCheckBox: string;
var
  i, lTag: integer;
  s, s1: string;
begin
  for i := 0 to 50 do
    s := s + '00000';
  s1 := s;
  for i := 0 to ComponentCount - 1 do
  begin
    if (Components[i] is TSeSkinCheckBox) then
    begin
      lTag := TSeSkinCheckBox(Components[i]).Tag;
      if TSeSkinCheckBox(Components[i]).Checked then
        s[lTag] := '1'
      else
        s[lTag] := '0';
    end;
  end;
  if s1 = s then
    s := '';
  Result := s;
end;

procedure TfrmUserLimit.CheckBoxClickEx(Sender: TObject);
begin
  bbSave.Enabled := True;
end;

procedure TfrmUserLimit.CreateCheckBox(Comp1: TComponent; lX, lY, lTag: integer;
  sName, sCaption: string);
var
  Checkbox1: TSeSkinCheckBox;
begin
  CheckBox1 := TSeSkinCheckBox.Create(self);
  CheckBox1.Left := lX;
  CheckBox1.Top := lY;
  CheckBox1.Width := 120;
  CheckBox1.Tag := lTag;
  CheckBox1.Name := sName;
  CheckBox1.Caption := sCaption;
  CheckBox1.Parent := TWinControl(Comp1);
  CheckBox1.OnClick := CheckBoxClickEx;
end;

procedure TfrmUserLimit.LoadMenu(dxBar: TdxBarManager);
var
  i, l, lX, lY, j, k, lIndex: integer;
  Compt: TComponent;
  sCap: string;
begin
  for i := 0 to dxBar.Categories.Count - 1 do
    PageControl.Tabs.Add(GetPosName(dxBar.Categories.Strings[i]));
  for i := 0 to dxBar.Categories.Count - 1 do
  begin
    j := 0;
    k := 0;
    for l := 0 to dxBar.ItemCount - 1 do
    begin
      if dxBar.Items[l] is TdxBarButton then
      begin
        if dxBar.Items[l].Category = i then
        begin
          lX := j * 120 + 20;
          lY := k * 30 + 5;
          Compt := PageControl.Pages[dxBar.Items[l].Category];
          sCap := GetPosName(dxBar.Items[l].Caption);
          lIndex := dxBar.Items[l].Index;
          CreateCheckBox(Compt, lX, lY, lIndex, 'Chx' + IntToStr(lIndex), sCap);
          if j >= 3 then
          begin
            j := 0;
            Inc(k)
          end
          else
            Inc(j);
        end;
      end;
    end;
  end;
  PageControl.Pages[0].PageVisible := False;
  PageControl.Pages[12].PageVisible := False;
  PageControl.TabIndex := 0;
end;

procedure TfrmUserLimit.treeMainGetImageIndex(Sender: TObject;
  Node: TdxTreeListNode; var Index: Integer);
const
  ImagesIndex: array[Boolean] of Integer = (16, 17);
begin
  inherited;
  if Node.HasChildren then
    Index := ImagesIndex[Node.Expanded]
  else
    Index := 16;
end;

procedure TfrmUserLimit.treeMainGetSelectedIndex(Sender: TObject;
  Node: TdxTreeListNode; var Index: Integer);
const
  ImagesIndex: array[Boolean] of Integer = (16, 17);
begin
  inherited;
  if Node.HasChildren then
    Index := ImagesIndex[Node.Expanded]
  else
    Index := 16;
end;

procedure TfrmUserLimit.bbRefreshClick(Sender: TObject);
begin
  inherited;
  DataSet.Filter := '';
end;

procedure TfrmUserLimit.treeMainChangeNode(Sender: TObject; OldNode,
  Node: TdxTreeListNode);
begin
  inherited;
  SaveLimitstr(IntToStr(lTreeOldID), GetCheckBox);
  lTreeOldID := DataSet.FieldByName('ID').AsInteger;
  SetCheckBox(LoadLimitStr(lTreeOldID));
end;

procedure TfrmUserLimit.bbAllSelectClick(Sender: TObject);
var
  i: integer;
begin
  inherited;
  for i := 0 to ComponentCount - 1 do
  begin
    if (Components[i] is TSeSkinCheckBox) then
    begin
      TSeSkinCheckBox(Components[i]).Checked := True
    end;
  end;
end;

procedure TfrmUserLimit.bbAlldelClick(Sender: TObject);
var
  i: integer;
begin
  inherited;
  for i := 0 to ComponentCount - 1 do
  begin
    if (Components[i] is TSeSkinCheckBox) then
    begin
      TSeSkinCheckBox(Components[i]).Checked := False;
    end;
  end;
end;

procedure TfrmUserLimit.bbSaveClick(Sender: TObject);
begin
  inherited;
  SaveLimitstr(IntToStr(DataSet.FieldByName('ID').AsInteger), GetCheckBox);
  bbSave.Enabled := False;
end;

procedure TfrmUserLimit.bbSelectClick(Sender: TObject);
var
  i: integer;
  dxBar: TdxBarManager;
begin
  inherited;
  dxBar := frmMainWindow.dxBarManager1;
  for i := 0 to ComponentCount - 1 do
  begin
    if (Components[i] is TSeSkinCheckBox) and
      (dxBar.Items[Components[i].Tag].Category = PageControl.ActivePageIndex) then
    begin
      TSeSkinCheckBox(Components[i]).Checked := True
    end;
  end;
end;

procedure TfrmUserLimit.bbDelClick(Sender: TObject);
var
  i: integer;
  dxBar: TdxBarManager;
begin
  inherited;
  dxBar := frmMainWindow.dxBarManager1;
  for i := 0 to ComponentCount - 1 do
  begin
    if (Components[i] is TSeSkinCheckBox) and
      (dxBar.Items[Components[i].Tag].Category = PageControl.ActivePageIndex) then
    begin
      TSeSkinCheckBox(Components[i]).Checked := False;
    end;
  end;
end;

procedure TfrmUserLimit.bbPasswordClick(Sender: TObject);
var
  lEID: Integer;
begin
  inherited;
  lEID := DataSet.FieldByName('ID').AsInteger;
  ChangePassShow(lEID, 1);
end;

procedure TfrmUserLimit.PageControlEnter(Sender: TObject);
begin
  inherited;
  bbSave.Enabled := True;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频精品在线观看| 制服丝袜中文字幕一区| 色哟哟欧美精品| 欧美日韩免费不卡视频一区二区三区| 欧美性视频一区二区三区| 欧美精三区欧美精三区| 国产偷国产偷精品高清尤物| 亚洲男同性视频| 捆绑紧缚一区二区三区视频| 国产成人亚洲综合a∨婷婷| 色综合久久久久综合体| 久久亚洲精品国产精品紫薇| 亚洲精选免费视频| 激情图片小说一区| 91丨国产丨九色丨pron| 日韩精品一区二区三区四区| 中文字幕 久热精品 视频在线| 亚洲一二三级电影| 国产麻豆视频一区二区| 91福利社在线观看| 久久人人97超碰com| 亚洲国产一区二区三区 | 中文字幕欧美一| 亚洲h精品动漫在线观看| 国产成人在线电影| 日韩无一区二区| 亚洲电影一级黄| 99免费精品在线观看| 精品捆绑美女sm三区| 亚洲一区二区三区四区在线观看| 国产高清亚洲一区| 欧美一区欧美二区| 夜夜精品视频一区二区 | 亚洲色图一区二区三区| 日本91福利区| 欧美精品一二三区| 一区二区三区波多野结衣在线观看| 国产乱码一区二区三区| 日韩一区二区三区高清免费看看| 亚洲免费观看高清完整版在线| 国产九九视频一区二区三区| 欧美一区二区黄| 日韩和欧美一区二区| 欧美色窝79yyyycom| 亚洲精品国产第一综合99久久| 成人三级在线视频| 国产亚洲视频系列| 国产一区二区主播在线| 精品国内片67194| 日韩高清在线电影| 欧美一区二区三区免费视频 | 国产九色sp调教91| 久久久久久99久久久精品网站| 国产综合久久久久久久久久久久| 日韩欧美一二三区| 久久国产生活片100| 精品免费国产一区二区三区四区| 奇米777欧美一区二区| 日韩午夜电影在线观看| 精久久久久久久久久久| 国产日韩av一区二区| 福利电影一区二区三区| 国产精品久久久久国产精品日日| 99久免费精品视频在线观看| 亚洲欧洲精品天堂一级 | 国产精品美女一区二区三区| 成人免费视频视频在线观看免费 | 亚洲国产岛国毛片在线| 成人av先锋影音| 伊人色综合久久天天| 欧美日韩激情在线| 免播放器亚洲一区| 久久久久久久久久久99999| 国产不卡在线一区| 一级特黄大欧美久久久| 91精品国产品国语在线不卡| 天天av天天翘天天综合网 | 在线观看日韩国产| 亚洲一区在线视频观看| 欧美一区二视频| 成人黄色小视频在线观看| 亚洲一区二区三区国产| 欧美成人欧美edvon| 成人午夜激情片| 水野朝阳av一区二区三区| 精品国产区一区| 91一区二区在线| 丝袜亚洲另类丝袜在线| 欧美国产精品中文字幕| 精品视频一区 二区 三区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲国产经典视频| 69av一区二区三区| 国产成人aaaa| 日本午夜一区二区| 中文字幕在线一区免费| 日韩一区二区三区视频在线 | 麻豆极品一区二区三区| 成人免费在线观看入口| 777色狠狠一区二区三区| 国产91精品在线观看| 亚洲国产精品嫩草影院| 欧美国产欧美综合| 欧美精品第1页| 91在线观看地址| 国产一区二区看久久| 日韩极品在线观看| 中文字幕视频一区二区三区久| 91精品久久久久久久久99蜜臂| av在线这里只有精品| 国内成+人亚洲+欧美+综合在线| 亚洲综合偷拍欧美一区色| 国产欧美一区二区在线观看| 3d动漫精品啪啪1区2区免费| 在线国产电影不卡| 成人精品国产福利| 国产一区二区三区最好精华液| 午夜av区久久| 亚洲激情校园春色| 国产午夜精品一区二区三区视频| 色婷婷亚洲精品| 蜜桃免费网站一区二区三区| 香港成人在线视频| 夜夜揉揉日日人人青青一国产精品 | 中国av一区二区三区| 日韩美女天天操| 91精品国产一区二区三区蜜臀| 欧美最新大片在线看| 91网站视频在线观看| 北条麻妃一区二区三区| 国产91在线观看丝袜| 韩国女主播成人在线观看| 免费看精品久久片| 奇米精品一区二区三区四区| 视频一区视频二区中文字幕| 亚洲一区二区三区视频在线| 亚洲尤物在线视频观看| 一区二区三区高清| 亚洲高清一区二区三区| 亚洲成国产人片在线观看| 亚洲精品中文在线观看| 一区二区三区精密机械公司| 亚洲女同一区二区| 午夜精品视频一区| 免费看精品久久片| 久久99精品国产麻豆不卡| 精品系列免费在线观看| 国产精品一级片在线观看| 国产成人精品免费看| 成人综合婷婷国产精品久久免费| 国产成人精品1024| 不卡视频一二三| 日本高清不卡在线观看| 欧美精品1区2区3区| 日韩欧美一区在线| 国产喂奶挤奶一区二区三区| 国产精品传媒在线| 亚洲一区中文日韩| 麻豆精品在线观看| 国产成人精品影视| 国产另类ts人妖一区二区| 成人av免费在线播放| 色偷偷久久人人79超碰人人澡| 成人美女在线观看| 波多野结衣亚洲| 欧美视频一区二区在线观看| 26uuu国产日韩综合| ㊣最新国产の精品bt伙计久久| 亚洲精品欧美专区| 蜜臀99久久精品久久久久久软件| 大桥未久av一区二区三区中文| 色94色欧美sute亚洲线路一ni| 欧美肥妇bbw| 国产精品午夜在线| 五月激情丁香一区二区三区| 国产a区久久久| 欧美久久久久久久久久| 日本一区二区免费在线观看视频| 亚洲一区二区三区不卡国产欧美| 精品一区二区三区av| 91视频免费播放| 日韩欧美一区电影| 亚洲欧美日韩中文播放 | 欧美挠脚心视频网站| 国产精品久久午夜| 蜜桃一区二区三区在线观看| www.亚洲色图.com| 91精品国产综合久久精品图片| 中文在线资源观看网站视频免费不卡 | 久久天天做天天爱综合色| 亚洲高清免费观看| 色先锋aa成人| 一区二区久久久久久| 色婷婷久久99综合精品jk白丝| 成人欧美一区二区三区1314| 成人黄色电影在线| 亚洲欧美自拍偷拍| 99久久国产综合精品女不卡| 日韩理论片中文av| 色成年激情久久综合|