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

📄 invuserprivilege.~pas

📁 文件包含程序源原文件
💻 ~PAS
字号:
unit InvUserPrivilege;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons, invDef, Ex2nmedt;

type
  TfrmUser = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    ListviewUser: TListView;
    Panel4: TPanel;
    Panel5: TPanel;
    edtPassWord: TLabeledEdit;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    chkbom: TCheckBox;
    chkstk: TCheckBox;
    chkmatin: TCheckBox;
    chkmatout: TCheckBox;
    chkothin: TCheckBox;
    chkothout: TCheckBox;
    chkiohis: TCheckBox;
    chkrpt: TCheckBox;
    chkInvoice: TCheckBox;
    chkUndelivery: TCheckBox;
    chkincheck: TCheckBox;
    chkparams: TCheckBox;
    chkiotype: TCheckBox;
    chkpaperno: TCheckBox;
    chkinvguage: TCheckBox;
    chkdataexp: TCheckBox;
    chkexprpt: TCheckBox;
    SpeedButton1: TSpeedButton;
    btnUpdate: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    chkrtnmana: TCheckBox;
    chkuserprivi: TCheckBox;
    cbxUser: TComboBox;
    edtUserName: TEdit;
    edtUserID: TEx2NumEdit;
    Label2: TLabel;
    stsBarCnt: TStatusBar;
    Panel6: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpeedButton1Click(Sender: TObject);
    procedure btnUpdateClick(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure ListviewUserChange(Sender: TObject; Item: TListItem; Change: TItemChange);
    procedure cbxUserDropDown(Sender: TObject);
    procedure cbxUserChange(Sender: TObject);
  private
    { Private declarations }
    Procedure Read_UserPriviListView(sListView: TListView);

    function  SetListColumn(listView: TListView): Integer;
    function  SetListView(lstView: TListView): Integer;
    procedure ClearListView(lstView: TListView);

    procedure MakeItemCaption(Item: TListItem);
    procedure Set_currItem(Item: TListItem);
    procedure SetNull;

  public
    { Public declarations }
    Procedure NewUserPrivilege(ListView: TListView);
    Procedure Update_UserPrivilege(ListView: TListView);
    procedure Delete_UserPrivilege(ListView: TListView);

    Function  GetIntValueofBool(ibool: Boolean): integer;
    Function  GetBoolofInteger(iValue: Integer): Boolean;
  end;

var
  frmUser: TfrmUser;

  FUserPrivilegeList: TList;
  FSelectedItem: TListItem;
  FOnMakeItemCaption,
  FListViewClear,
  FOnCloseForm: Boolean;
  FColCnt: integer;

implementation

uses InvDM, Main;

{$R *.dfm}

procedure TfrmUser.FormCreate(Sender: TObject);
begin
  Top  := 0;
  Left := frmMain.Width;
  Height := Height;
  Width := Width;

  FUserPrivilegeList := TList.Create;
  FUserPrivilegeList.Clear;
  
end;

procedure TfrmUser.FormShow(Sender: TObject);
begin
  FOnCloseForm := false;
  Read_UserPriviListView(ListviewUser);


end;

procedure TfrmUser.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FOnCloseForm := true;
  dm_inventory.ListFreeMemory(FUserPrivilegeList);
end;

Procedure TfrmUser.Read_UserPriviListView(sListView: TListView);
var SaveCursor: TCursor;
begin
  dm_inventory.ListFreeMemory(FUserPrivilegeList);
  
  SaveCursor := Screen.Cursor;
  Screen.Cursor := crSqlWait;

  try
    dm_inventory.Read_UserPrivilegeList(FUserPrivilegeList);

    FListViewClear:=True;

    FColCnt := SetListColumn(sListView); //--

    sListView.Selected := nil;

    if SetListView(sListView) > 0 then
    begin
      sListView.TopItem.Selected := True;
      sListView.TopItem.Focused := True;
      sListView.SetFocus;
      FSelectedItem := sListView.TopItem;
      Set_currItem(FSelectedItem);
    end;

    FListViewClear := False;

  finally
    Screen.Cursor := SaveCursor;
  end;
end;

function  TfrmUser.SetListColumn(listView: TListView): Integer;
var
  Column: TListColumn;
  Count: Integer;
begin
  ListView.Columns.Clear;
  ListView.Items.BeginUpdate;               //--
  ListView.RowSelect := False;
  Count := 0;
  try
    Column := ListView.Columns.Add;
      Column.Caption := '员工工号';
      Column.Width   := ListView.Font.Size * 12;
      Inc(Count);

      Column := ListView.Columns.Add;
      Column.Caption := '用户名称';
      Column.Width   := ListView.Font.Size * 16;
      Inc(Count);

      Column := ListView.Columns.Add;
      Column.Caption := '用户密码';
      Column.Width   := ListView.Font.Size * 14;
      Column.Alignment := taLeftJustify;
      Inc(Count);
  finally
    ListView.RowSelect := True;
    ListView.Items.EndUpdate;               //--
  end;
  Result := Count;
end;

function  TfrmUser.SetListView(lstView: TListView): Integer;
var
  i, j, ItemCount: Integer;
  lcP: PUserPrivilege;
  Item: TListItem;
begin
  ItemCount := 0;
  FListViewClear := True;

  ClearListView(lstView);

  FListViewClear := False;
  LockWindowUpdate(lstView.Handle);
  try
    for i := 0 to FUserPrivilegeList.Count - 1 do begin
      lcP := FUserPrivilegeList[i];

      Item := lstView.Items.Add;
      for j := 0 to FColCnt - 2 do
        Item.Subitems.Add('');

      lcP^.item := Item;
      Item.Data := lcP;

      MakeItemCaption(Item);
      Inc(ItemCount);
   end;
  finally
    LockWindowUpdate(0);
    stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(lstView.Items.Count)+' 条';
  end;
  Result := ItemCount;
end;

procedure TfrmUser.ClearListView(lstView: TListView);
begin
  lstView.Items.BeginUpdate;
  try
    lstView.Items.Clear;
  finally
    lstView.Items.EndUpdate;
  end;
end;

procedure TfrmUser.MakeItemCaption(Item: TListItem);
var
  lcP: PUserPrivilege;
begin
  if Item = nil then Exit;

  lcP := Item.Data;
  if lcP = nil then Exit;

  FOnMakeItemCaption := True; //--

  Item.Caption     := IntToStr(lcP^.user_id);
  Item.SubItems[0] := dm_inventory.Get_EmpName(inttostr(lcp^.user_id));
  Item.SubItems[1] := lcp^.password;

  FOnMakeItemCaption := False;
end;

procedure TfrmUser.Set_currItem(Item: TListItem);
var
  lcp: PUserPrivilege;
begin 
  if (Item = nil) or ((item = nil) and (Item.Data <> nil)) then
  begin
    SetNull;
    exit;
  end
  else begin
    FSelectedItem := nil;
    FSelectedItem := Item;
    lcp := Item.Data;

    edtUserID.Value   := lcp^.user_id;
    edtUserName.Text  := dm_inventory.Get_EmpName(inttostr(lcp^.user_id));
    edtPassWord.Text  := lcp^.password;

    chkbom.Checked  := (lcp^.bom_func=1);
  chkstk.Checked    := (lcp^.stk_func=1);
  chkmatin.Checked  := (lcp^.matin_func=1);
  chkmatout.Checked := (lcp^.matout_func=1);
  chkothin.Checked  := (lcp^.othin_func=1);
  chkothout.Checked := (lcp^.othout_func=1);
  chkiohis.Checked  := (lcp^.iohis_func=1);
  chkrpt.Checked    := (lcp^.rpt_func=1);
  chkInvoice.Checked := (lcp^.invoice_func=1);
  chkUndelivery.Checked := (lcp^.undelivery_func=1);
  chkincheck.Checked    := (lcp^.incheck_func=1);
  chkrtnmana.Checked    := (lcp^.rtnmana_func=1);
  chkparams.Checked     := (lcp^.params_func=1);
  chkiotype.Checked     := (lcp^.iotype_func=1);
  chkpaperno.Checked    := (lcp^.paperno_func=1);
  chkinvguage.Checked   := (lcp^.invguage_func=1);
  chkdataexp.Checked    := (lcp^.dataexport_func=1);
  chkexprpt.Checked     := (lcp^.expdatarpt_func=1);
  chkuserprivi.Checked  := (lcp^.userprivilege_func=1);
  end;
end;

procedure TfrmUser.SetNull;
begin
  FSelectedItem := nil;
  edtUserID.Value   := 0;
  edtUserName.Text  := '';
  cbxUser.Text      := '';
  edtPassWord.Text  := '';
  chkbom.Checked    := false;
  chkstk.Checked    := false;
  chkmatin.Checked  := false;
  chkmatout.Checked := false;
  chkothin.Checked  := false;
  chkothout.Checked := false;
  chkiohis.Checked  := false;
  chkrpt.Checked    := false;
  chkInvoice.Checked := false;
  chkUndelivery.Checked := false;
  chkincheck.Checked    := false;
  chkrtnmana.Checked    := false;
  chkparams.Checked     := false;
  chkiotype.Checked     := false;
  chkpaperno.Checked    := false;
  chkinvguage.Checked   := false;
  chkdataexp.Checked    := false;
  chkexprpt.Checked     := false;
  chkuserprivi.Checked  := false;  
end;

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Procedure TfrmUser.NewUserPrivilege(ListView: TListView);
var
  lcpNew: PUserPrivilege;
  j: integer;
  Item: TListItem;
begin
  New(lcpNew);
  ZeroMemory(lcpNew, sizeof(TUserPrivilege));
  SetNull;

  lcpNew^.paperno   := dm_inventory.Get_AutoPaperNo('User Privilege Information');
  lcpNew^.user_id   := 0;
  lcpNew^.user_name := '';
  lcpNew^.password  := '';
  lcpNew^.rec_date  := Now;

  if not dm_inventory.isExists_UserID(lcpNew) then
  begin
    dm_inventory.Insert_UserPrivilege(lcpNew);

    with listView do
    begin
      Item := ListView.Items.Add;
      for j := 0 to FColCnt - 2 do
        Item.Subitems.Add('');
        lcPNew^.item := Item;
        Item.Data := lcPNew;
    end;
    MakeItemCaption(Item);
    Set_currItem(Item);
    Item.Selected := true;
  end
  else begin
    MessageDlg('this User is Repeat!',mtError,[mbOK],0);
    Item := ListView.TopItem;
    FSelectedItem := Item;
    Set_currItem(Item);
    Item.Selected := true;    
    Exit;
  end;
end;

Procedure TfrmUser.Update_UserPrivilege(ListView: TListView);
var
  lcpUpd: PUserPrivilege;
  Item: TListItem;
begin
  if FSelectedItem = nil then exit;
  if FSelectedItem.Selected then lcpUpd := FSelectedItem.Data;

  lcpUpd^.user_id      := trunc(edtUserID.Value);
  lcpUpd^.password     := trim(edtPassWord.Text);
  lcpUpd^.bom_func     := GetIntValueofBool(chkbom.Checked);
  lcpUpd^.stk_func           := GetIntValueofBool(chkstk.Checked);
  lcpUpd^.matin_func         := GetIntValueofBool(chkmatin.Checked);
  lcpUpd^.matout_func        := GetIntValueofBool(chkmatout.Checked);
  lcpUpd^.othin_func         := GetIntValueofBool(chkothin.Checked);
  lcpUpd^.othout_func        := GetIntValueofBool(chkothout.Checked);
  lcpUpd^.iohis_func         := GetIntValueofBool(chkiohis.Checked);
  lcpUpd^.rpt_func           := GetIntValueofBool(chkrpt.Checked);
  lcpUpd^.invoice_func       := GetIntValueofBool(chkInvoice.Checked);
  lcpUpd^.undelivery_func    := GetIntValueofBool(chkUndelivery.Checked);
  lcpUpd^.incheck_func       := GetIntValueofBool(chkincheck.Checked);
  lcpUpd^.rtnmana_func       := GetIntValueofBool(chkrtnmana.Checked);
  lcpUpd^.params_func        := GetIntValueofBool(chkparams.Checked);
  lcpUpd^.iotype_func        := GetIntValueofBool(chkiotype.Checked);
  lcpUpd^.paperno_func       := GetIntValueofBool(chkpaperno.Checked);
  lcpUpd^.invguage_func      := GetIntValueofBool(chkinvguage.Checked);
  lcpUpd^.dataexport_func    := GetIntValueofBool(chkdataexp.Checked);
  lcpUpd^.expdatarpt_func    := GetIntValueofBool(chkexprpt.Checked);
  lcpUpd^.userprivilege_func := GetIntValueofBool(chkuserprivi.Checked);

  dm_inventory.Update_UserPrivilege(lcpUpd);

  with listView do
  begin
    listView.Selected.Data := lcpUpd;
    Item := listView.Selected;
    MakeItemCaption(Item);
    Set_currItem(Item);
    Item.Selected := true;
  end;
end;

procedure TfrmUser.Delete_UserPrivilege(ListView: TListView);
var
  lcpDel: PUserPrivilege;
  Item: TListItem;
begin
  if FSelectedItem = nil then exit;
  if FSelectedItem.Selected then lcpDel := FSelectedItem.Data;

  dm_inventory.Delete_UserPrivilege(lcpDel);
  with listView do
  begin
    listView.Selected.Delete;
    IF ListView.Items.Count >0 then
    Item := listView.TopItem
    else Item := Nil;
    if Item = Nil then exit;
    Item.Selected := true;
    MakeItemCaption(Item);
    Set_currItem(Item);
  end;
end;

//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

procedure TfrmUser.SpeedButton1Click(Sender: TObject);
begin
  NewUserPrivilege(ListviewUser);
end;

procedure TfrmUser.btnUpdateClick(Sender: TObject);
begin
  Update_UserPrivilege(ListviewUser);//
end;

procedure TfrmUser.SpeedButton3Click(Sender: TObject);
begin
  Delete_UserPrivilege(ListviewUser);
end;

procedure TfrmUser.SpeedButton4Click(Sender: TObject);
begin
  close;
end;

procedure TfrmUser.ListviewUserChange(Sender: TObject; Item: TListItem; Change: TItemChange);
begin
  if FOnCloseForm then exit;
  if Item.Data = nil then
  begin
    setNull;
    exit;
  end
  else Set_currItem(ListviewUser.Selected);
end;

////////////////////////////////////////////////////////////////////////////
Function  TfrmUser.GetIntValueofBool(ibool: Boolean): integer;
begin
  result := 0;
  if iBool then result := 1 else result := 0;
end;

Function  TfrmUser.GetBoolofInteger(iValue: Integer): Boolean;
begin
  result := false;
  if iValue=1 then result := true else result := false; 
end;



procedure TfrmUser.cbxUserDropDown(Sender: TObject);
begin
  dm_inventory.Read_EmpInfoToCbx(cbxUser);
end;

procedure TfrmUser.cbxUserChange(Sender: TObject);
begin
  edtUserID.Value    := StrToIntDef(Get_PosBeforeStr(cbxUser.Text,'_'),0);
  edtUserName.Text   := Get_PosAfterStr(cbxUser.Text,'_');
  edtUserID.SetFocus;
end;

end.

⌨️ 快捷键说明

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