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

📄 umain.pas

📁 用户权限管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  if dxBarButton22.Down then
    dxStatusBar1.Visible := True
  else
    dxStatusBar1.Visible := false;
end;

procedure TfrmMain.dxBarButton26Click(Sender: TObject);
begin
  if dxBarButton26.Down then
    dxBarManager1.Bars.Items[1].Visible := True
  else
    dxBarManager1.Bars.Items[1].Visible := false;
end;

procedure TfrmMain.LoadUserGrp;
var
  Node, ParNode: TTreeNode;
  NodData: PUserGrpData;
begin
  with cds_Grp do
  begin
    if Active then
      Active := false;
    XMLData := DM.FreeQuery('select * from T_003 order by V04,V03,V01');
    Active := true;

    first;
    while not eof do
    begin
      ParNode := GetGrpNode(trim(cds_Grp.fieldbyname('V03').AsString));
      Node := TV_Grp.Items.AddChild(ParNode,
        trim(cds_Grp.fieldbyname('V02').AsString));
      Node.ImageIndex := 4;
      Node.SelectedIndex := 3;

      new(NodData);
      NodData^.GrpId := trim(cds_Grp.fieldbyname('V01').AsString);
      NodData^.GrpName := trim(cds_Grp.fieldbyname('V02').AsString);
      NodData^.GrpMemo := trim(cds_Grp.fieldbyname('V05').AsString);
      NodData^.Nod := Node;
      Node.Data := NodData;
      next;
    end;
  end;
end;

function TfrmMain.GetGrpNode(const Id: string): TTreeNode;
var
  i: integer;
begin
  result := nil;
  for i := 0 to TV_Grp.Items.Count - 1 do
  begin
    if PUserGrpData(TV_Grp.Items[i].Data)^.GrpId = Id then
    begin
      result := TV_Grp.Items[i];
      break;
    end;
  end;
end;

procedure TfrmMain.TV_GrpMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  TempStr: string;
  procedure GetCaption(Node: TTreeNode);
  begin
    if trim(TempStr) = '' then
      TempStr := Node.Text
    else
      TempStr := Node.Text + '>>' + TempStr;
    if Node.Parent <> nil then
      GetCaption(Node.Parent);
  end;
begin
  TV_Grp.Selected := TV_Grp.GetNodeAt(X, Y);
  if TV_Grp.Selected <> nil then
  begin
    TempStr := '';
    GetCaption(TV_Grp.Selected);
    Labl_Title.Caption := TempStr;
    UserListSql := 'select * from V_0011 where V31 in (' +
      GetGrpCodeStr(TV_Grp.Selected) + ') order by V01';
    LoadUserList(UserListSql);
  end;
end;

procedure TfrmMain.DelGrpExecute(Sender: TObject);
var
  ListItem: TListItem;
  procedure DelGrpNod(Node: TTreeNode);
  begin
    while Node.HasChildren do
      DelGrpNod(Node.Item[0]);
    DM.UserGrpDel(PUserGrpData(Node.Data)^.GrpId);
    dispose(Node.Data);
    Node.Delete;
  end;
begin
  if ActiveCtrl = 'UserGrp' then
  begin
    if TV_Grp.Selected = nil then
      exit;
    DelGrpNod(TV_Grp.Selected);
  end
  else if ActiveCtrl = 'UserList' then
  begin
    ListItem := LV_UserList.Selected;
    if ListItem <> nil then
    begin
      UserId := PLVData(ListItem.Data)^.UserId;
      if not PLVData(ListItem.Data)^.IfImp then
      begin
        if TPublicFunc.ShowQuestionMsg('您确实要删除此用户吗?') = IDYes then
        begin
          if DM.UserDel(UserId) = 0 then
          begin
            Dispose(ListItem.Data);
            ListItem.Delete;
          end;
        end;
      end
      else
        TPublicFunc.ShowWarningMsg('重要用户不能任意删除,请确定!');
    end;
  end;
end;

procedure TfrmMain.LoadUserList;
begin
  LoadListViewData(LV_UserList, UserListSql);
end;

procedure TfrmMain.OpenSubSysExecute(Sender: TObject);
begin
  frmSubSystem := TfrmSubSystem.Create(nil);
  frmSubSystem.ShowModal;
  frmSubSystem.Free;
end;

procedure TfrmMain.dxBarButton49Click(Sender: TObject);
begin
  frmRightGrp := TfrmRightGrp.Create(nil);
  frmRightGrp.ShowModal;
  frmRightGrp.Free;

end;

procedure TfrmMain.SetImpExecute(Sender: TObject);
var
  ListItem: TListItem;
begin
  ListItem := LV_UserList.Selected;
  if ListItem <> nil then
  begin
    UserId := PLVData(ListItem.Data)^.UserId;
    cSqlStr := 'update T_001 set V15=1 where V01=' + Quotedstr(UserId);
    if DM.ExecuteSqlCmd(cSqlStr) = 0 then
    begin
      PLVData(ListItem.Data)^.IfImp := true;
      ListItem.SubItems[0] := '!';
    end;
  end;
end;

procedure TfrmMain.SetUnImpExecute(Sender: TObject);
var
  ListItem: TListItem;
begin
  ListItem := LV_UserList.Selected;
  if ListItem <> nil then
  begin
    UserId := PLVData(ListItem.Data)^.UserId;
    cSqlStr := 'update T_001 set V15=0 where V01=' + Quotedstr(UserId);
    if DM.ExecuteSqlCmd(cSqlStr) = 0 then
    begin
      PLVData(ListItem.Data)^.IfImp := false;
      ListItem.SubItems[0] := ' ';
    end;
  end;
end;

procedure TfrmMain.LoadUserList(const cSql: string);
begin
  LoadListViewData(LV_UserList, cSql);
end;

procedure TfrmMain.SpeedButton5Click(Sender: TObject);
begin
  if TV_Grp.Selected <> nil then
    UserListSql := 'select * from V_0011 where (V02 like ' +
      QuotedStr('%' + trim(edt_Search.Text) + '%') + ' or V03 like ' +
      QuotedStr('%' + trim(edt_Search.Text) + '%') + ') and V31 in (' +
      GetGrpCodeStr(TV_Grp.Selected) + ') '
  else
    UserListSql := 'select * from V_001 where V02 like ' +
      QuotedStr('%' + trim(edt_Search.Text) + '%') + ' or V03 like ' +
      QuotedStr('%' + trim(edt_Search.Text) + '%');
  LoadUserList(UserListSql);
end;

procedure TfrmMain.LoadSubSys;
var
  Node: TTreeNode;
  NodData: PSubSysData;
begin
  with cds_SubSys do
  begin
    if Active then
      Active := false;
    XMLData := DM.FreeQuery('select * from T_005 order by V01');
    Active := true;

    first;
    while not eof do
    begin
      Node := TV_SubSys.Items.AddChild(nil,
        trim(fieldbyname('V02').AsString));
      Node.ImageIndex := 4;
      Node.SelectedIndex := 3;

      new(NodData);
      NodData^.SubId := trim(fieldbyname('V01').AsString);
      NodData^.SubName := trim(fieldbyname('V02').AsString);
      NodData^.SubVer := trim(fieldbyname('V03').AsString);
      NodData^.SubMemo := trim(fieldbyname('V04').AsString);
      NodData^.Nod := Node;
      Node.Data := NodData;
      next;
    end;
  end;
end;

procedure TfrmMain.TV_SubSysMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  TmpStr: string;
begin
  TmpStr := '';
  TV_SubSys.Selected := TV_SubSys.GetNodeAt(X, Y);
  if TV_SubSys.Selected <> nil then
  begin
    LoadListViewData(LV_UserList, 'Q_SysUser ' +
      QuotedStr(PSubSysData(TV_SubSys.Selected.Data)^.SubId));

  end;
end;

function TfrmMain.GetGrpCodeStr(Node: TTreeNode): string;
var
  TempStr: string;
  procedure GetChild(Nod: TTreeNode);
  var
    i: smallint;
  begin
    if not Nod.HasChildren then
      TempStr := TempStr + ',' + QuotedStr(PUserGrpData(Nod.Data)^.GrpId)
    else
    begin
      TempStr := TempStr + ',' + QuotedStr(PUserGrpData(Nod.Data)^.GrpId);
      for i := 0 to Nod.Count - 1 do
        GetChild(Nod.Item[i]);
    end;
  end;
begin
  TempStr := '''''';
  GetChild(Node);
  result := TempStr;
end;

procedure TfrmMain.FreeLVData(LV: TRzListView);
var
  i: smallint;
begin
  for i := 0 to LV.Items.Count - 1 do
  begin
    if LV.Items.Item[i].Data <> nil then
    begin
      Dispose(LV.Items.Item[i].Data);
      LV.Items.Item[i].Data := nil;
    end;
  end;
  LV.Items.Clear;
end;

procedure TfrmMain.LoadListViewData(LV: TRzListView; const cSql: string);
var
  ListItem: TListItem;
  LVDataPtr: PLVData;
begin
  FreeLVData(LV);
  LV.Items.Clear;
  if cds_UserList.Active then
    cds_UserList.Active := false;
  cds_UserList.XMLData := DM.FreeQuery(cSql);
  cds_UserList.Active := true;

  cds_UserList.First;
  while not cds_UserList.Eof do
  begin
    ListItem := LV.Items.Add;
    ListItem.Caption := trim(cds_UserList.FieldByName('V37').AsString);
    ListItem.SubItems.Add(trim(cds_UserList.FieldByName('V38').AsString));
    ListItem.SubItems.Add(trim(cds_UserList.FieldByName('V02').AsString));
    ListItem.SubItems.Add(trim(cds_UserList.FieldByName('V03').AsString));
    ListItem.SubItems.Add(trim(cds_UserList.FieldByName('V05').AsString));
    ListItem.SubItems.Add(trim(cds_UserList.FieldByName('V06').AsString));
    ListItem.SubItems.Add(trim(cds_UserList.FieldByName('V32').AsString));
    ListItem.SubItems.Add(trim(cds_UserList.FieldByName('V35').AsString));
    ListItem.SubItems.Add(trim(cds_UserList.FieldByName('V11').AsString));

    new(LVDataPtr);
    LVDataPtr^.UserId := trim(cds_UserList.FieldByName('V01').AsString);
    LVDataPtr^.UserGrpId := trim(cds_UserList.FieldByName('V31').AsString);
    LVDataPtr^.UserGrpName := trim(cds_UserList.FieldByName('V32').AsString);
    if cds_UserList.FieldByName('V15').AsInteger = 1 then
      LVDataPtr^.IfImp := true
    else
      LVDataPtr^.IfImp := false;
    if cds_UserList.FieldByName('V14').AsInteger = 1 then
      LVDataPtr^.IfManager := true
    else
      LVDataPtr^.IfManager := false;

    ListItem.Data := LVDataPtr;
    cds_UserList.Next;
  end;
end;

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  FreeLVData(LV_UserList);
end;

procedure TfrmMain.LV_UserListEnter(Sender: TObject);
begin
  ActiveCtrl := 'UserList';
end;

procedure TfrmMain.MoveToGrpExecute(Sender: TObject);
var
  ListItem: TListItem;
begin
  ListItem := LV_UserList.Selected;
  if ListItem <> nil then
  begin
    UserId := PLVData(ListItem.Data)^.UserId;
    frmMoveToGrp := TfrmMoveToGrp.Create(nil);
    frmMoveToGrp.UserId := UserId;
    if frmMoveToGrp.ShowModal = mrOK then
      ListItem.SubItems[5] := frmMoveToGrp.GrpName;
    frmMoveToGrp.Free;
  end;
end;

procedure TfrmMain.ChgPwdExecute(Sender: TObject);
var
  ListItem: TListItem;
begin
  ListItem := LV_UserList.Selected;
  if ListItem <> nil then
  begin
    UserId := PLVData(ListItem.Data)^.UserId;
    frmChangePwd := TfrmChangePwd.Create(nil);
    frmChangePwd.UserId := UserId;
    frmChangePwd.lab_Name.Caption := ListItem.SubItems[2];
    frmChangePwd.lab_LoginName.Caption := ListItem.SubItems[1];
    frmChangePwd.ShowModal;
    frmChangePwd.Free;
  end;
end;

procedure TfrmMain.LookUpExecute(Sender: TObject);
begin
  frmSearch := TfrmSearch.Create(nil);
  frmSearch.ShowModal;
  frmSearch.Free;
end;

procedure TfrmMain.UserLogExecute(Sender: TObject);
begin
  frmUserLog := TfrmUserLog.Create(nil);
  frmUserLog.ShowModal;
  frmUserLog.Free;
end;

procedure TfrmMain.ActPrintExecute(Sender: TObject);
var
  ListItem: TListItem;
  CardId: string;
begin
  ListItem := LV_UserList.Selected;
  if ListItem <> nil then
  begin
    UserId := PLVData(ListItem.Data)^.UserId;
    if cds_Card.Active then
      cds_Card.Active := false;
    //cds_Card.XMLData:= DM.FreeQuery('Q_Card ' + Quotedstr(''));
    cds_Card.XMLData :=
      DM.FreeQuery('select V01 from T_009 where V07=1 and V05= ' +
      Quotedstr(UserId));
    cds_Card.Active := true;
    if cds_Card.RecordCount > 0 then
    begin
      CardId := trim(cds_Card.fieldbyname('V01').AsString);
      cds_Card.Active := false;
      cds_Card.XMLData := DM.FreeQuery('Q_Card ' + Quotedstr(CardId));
      cds_Card.Active := true;
      frmCustomReport := TfrmCustomReport.Create(nil);
      frmCustomReport.AddDataSetX('Card', cds_Card.XMLData, '', -1, '');
      frmCustomReport.ReportFileName := '口令卡打印报表.rmf';
      frmCustomReport.ShowModal;
      frmCustomReport.Free;
    end;
  end;
end;

procedure TfrmMain.dxBarButton48Click(Sender: TObject);
const
  PARAMFORMAT = '"%s" "%s"';
var
  par: string;
begin
  par := Format(PARAMFORMAT, ['192.168.1.1', AppFilePath]);
  ShellExecute(0, nil, PChar('Card.exe'), PChar(par), nil, sw_shownormal);
end;

procedure TfrmMain.FormShow(Sender: TObject);
begin
  ActiveCtrl := 'UserGrp';
  self.ActiveControl := TV_Grp;
  LoadUserGrp;
  LoadSubSys;
  UserListSql := 'select * from V_001 order by V01';
  LoadUserList;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  AppFilePath:= ExtractFilePath(Application.ExeName);
end;

procedure TfrmMain.ActClearCookieExecute(Sender: TObject);
begin
  if ClearCookies then
    TPublicFunc.ShowInfoMsg('Cookie已清除!')
  else
    TPublicFunc.ShowErrorMsg('Cookie清除失败!');
end;

procedure TfrmMain.ActOpenExecute(Sender: TObject);
begin
  if TV_Grp.Selected = nil then
    exit;

  UserListSql := 'select * from V_0011 where V31 in (' +
    GetGrpCodeStr(TV_Grp.Selected) + ') order by V01';

  LoadUserList(UserListSql);
  TV_Grp.Selected.Expand(true);
end;

end.

⌨️ 快捷键说明

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