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

📄 unituserconfg.pas

📁 delphi基于工业控制的串口通讯
💻 PAS
字号:
unit UnitUserConfg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls, XPMenu, Grids, DBGrids, Buttons,
  ToolWin, CheckLst;

type
  Tfrm_UserConfg = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    XPMenu1: TXPMenu;
    Panel1: TPanel;
    Edit_Login_Type: TComboBox;
    Label1: TLabel;
    Edit_Login_Name: TLabeledEdit;
    Edit_Login_Pwd: TLabeledEdit;
    ToolBar2: TToolBar;
    Cmd_Add: TSpeedButton;
    Cmd_Delete: TSpeedButton;
    Cmd_Update: TSpeedButton;
    Cmd_Save: TSpeedButton;
    Cmd_Rush: TSpeedButton;
    DBGrid1: TDBGrid;
    Edit_ID: TEdit;
    Panel2: TPanel;
    Label2: TLabel;
    Edit_RLogin_Type: TComboBox;
    Edit1: TEdit;
    Edit_RLogin_Name: TComboBox;
    Label3: TLabel;
    Panel3: TPanel;
    BtOk: TSpeedButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    GroupBox1: TGroupBox;
    CheckListBox1: TCheckListBox;
    procedure Cmd_AddClick(Sender: TObject);
    procedure Cmd_SaveClick(Sender: TObject);
    procedure Cmd_RushClick(Sender: TObject);
    procedure Cmd_DeleteClick(Sender: TObject);
    procedure Cmd_UpdateClick(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure BtOkClick(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure Edit_RLogin_NameChange(Sender: TObject);
  private
    { Private declarations }
    procedure UserBrush;
  public
    { Public declarations }
  end;

var
  frm_UserConfg: Tfrm_UserConfg;
  tempPwd:String;
  Right         :string;//局部权限定义
implementation

uses UnitkeyCryptClass, UnitDataModule, UnitPublic;

{$R *.dfm}
procedure Tfrm_UserConfg.UserBrush;
begin
    with frm_DataModule.ADO_QuerySearch do
    begin
        Close;
        Sql.Clear;
        Sql.Add('Select * from [Chang]');
        try
            Open;
            if RecordCount>0 then
            begin
                frm_DataModule.DataSourceSearch.DataSet:=frm_DataModule.ADO_QuerySearch;
                frm_DataModule.DataSourceSearch.Enabled:=True;
                DBGrid1.DataSource:=frm_DataModule.DataSourceSearch;
                DBGrid1.Columns[0].Title.Caption:='自动编号';
                DBGrid1.Columns[1].Title.Caption:='用户类型';
                DBGrid1.Columns[2].Title.Caption:='用户姓名';
                DBGrid1.Columns[3].Title.Caption:='用户口令';
                Edit_Login_Type.Text:=FieldByname('Login_Type').AsVariant;
                Edit_Login_Name.Text:=FieldByname('Login_Name').AsVariant;
                Edit_Login_Pwd.Text :=FieldByname('Login_Pwd').AsVariant;
                Edit_ID.Text        :=FieldByname('ID').AsVariant;
                Cmd_Add.Enabled:=True;
                Cmd_Save.Enabled:=False;
                Cmd_Delete.Enabled:=True;
                Cmd_Update.Enabled:=True;
            end
            else
            begin
                frm_DataModule.DataSourceSearch.Enabled:=False;
                Cmd_Add.Enabled:=True;
                Cmd_Save.Enabled:=False;
                Cmd_Delete.Enabled:=False;
                Cmd_Update.Enabled:=False;
            end;
        except
            Application.MessageBox('系统错误,不能连接数据库服务器!',Pchar(Application.Title),MB_ICONWARNING);
            Exit;
        end;
    end;
end;
procedure Tfrm_UserConfg.Cmd_AddClick(Sender: TObject);
begin
    Cmd_Add.Enabled:=False;
    Cmd_Delete.Enabled:=False;
    Cmd_Update.Enabled:=False;
    Cmd_Save.Enabled:=True;
    Cmd_Rush.Caption:='取消(&E)';
    Edit_ID.Text        :='';
    Edit_Login_Type.Text:='';
    Edit_Login_Name.Text:='';
    Edit_Login_Pwd.Text :='';
end;

procedure Tfrm_UserConfg.Cmd_SaveClick(Sender: TObject);
begin
    with frm_DataModule.ADO_QuerySearch do
    begin
        Close;
        Sql.Clear;
        Sql.Add('Select * from [Chang] where Login_Type=:u0 and Login_Name=:u1');
        Parameters[0].Value:=Trim(Edit_Login_Type.Text);
        Parameters[1].Value:=Trim(Edit_Login_Name.Text);
        try
            Open;
            if RecordCount=0 then
            begin
                with frm_DataModule.ADO_QueryInsert do
                begin
                    tempPwd:=Decrypt(trim(Edit_Login_Pwd.Text),'luersoft');  //加密码
                    Close;
                    Sql.Clear;
                    Sql.Add('Insert into [Chang] (Login_Type,Login_Name,Login_Pwd) values (:u0,:u1,:u2)');
                    Parameters[0].Value:=Trim(Edit_Login_Type.Text);
                    Parameters[1].Value:=Trim(Edit_Login_Name.Text);
                    Parameters[2].Value:=Trim(tempPwd);
                    try
                        ExecSql;
                        UserBrush;
                    except
                        Application.MessageBox('保存记录失败,不能连接数据库服务器!',Pchar(Application.Title),MB_ICONWARNING);
                        Exit;
                    end;
                end;
            end
            else
            begin
                UserBrush;
                Application.MessageBox('操作错误,不能保存重复的记录!',Pchar(Application.Title),MB_ICONWARNING);
                Exit;
            end;
        except
            Application.MessageBox('系统错误,不能连接数据库服务器!',Pchar(Application.Title),MB_ICONWARNING);
            Exit;
        end;
    end;
end;

procedure Tfrm_UserConfg.Cmd_RushClick(Sender: TObject);
begin
    UserBrush;
end;

procedure Tfrm_UserConfg.Cmd_DeleteClick(Sender: TObject);
begin
    if Application.MessageBox('确定需要删除该记录吗?',Pchar(Application.Title),mb_OKCancel)=IDOK then
    begin
        with frm_DataModule.ADO_QueryDelete do
        begin
            Close;
            Sql.Clear;
            Sql.Add('Delete from [Chang] where ID=:u1');
            Parameters[0].Value:=Trim(Edit_ID.Text);
            try
                ExecSql;
                UserBrush;
            except
                Application.MessageBox('删除记录失败,不能连接数据库服务器!',Pchar(Application.Title),MB_ICONWARNING);
                Exit;
            end;
        end;
    end;
end;

procedure Tfrm_UserConfg.Cmd_UpdateClick(Sender: TObject);
begin
    if Application.MessageBox('确定需要修改该记录吗?',Pchar(Application.Title),mb_OKCancel)=IDOK then
    begin
        with frm_DataModule.ADO_QueryDelete do
        begin
            tempPwd:=Decrypt(trim(Edit_Login_Pwd.Text),'luersoft');  //加密码
            Close;
            Sql.Clear;
            Sql.Add('Update [Chang] set Login_Type=:u0,Login_Name=:u1,Login_Pwd=:u2 where ID=:u3');
            Parameters[0].Value:=Trim(Edit_Login_Type.Text);
            Parameters[1].Value:=Trim(Edit_Login_Name.Text);
            Parameters[2].Value:=Trim(tempPwd);
            Parameters[3].Value:=Trim(Edit_ID.Text);
            try
                ExecSql;
                UserBrush;
            except
                Application.MessageBox('修改记录失败,不能连接数据库服务器!',Pchar(Application.Title),MB_ICONWARNING);
                Exit;
            end;
        end;
    end;
end;

procedure Tfrm_UserConfg.DBGrid1CellClick(Column: TColumn);
begin
    Edit_Login_Type.Text:=frm_DataModule.ADO_QuerySearch.FieldByname('Login_Type').AsVariant;
    Edit_Login_Name.Text:=frm_DataModule.ADO_QuerySearch.FieldByname('Login_Name').AsVariant;
    Edit_Login_Pwd.Text :=frm_DataModule.ADO_QuerySearch.FieldByname('Login_Pwd').AsVariant;
    Edit_ID.Text        :=frm_DataModule.ADO_QuerySearch.FieldByname('ID').AsVariant;
end;

procedure Tfrm_UserConfg.BtOkClick(Sender: TObject);
var
    i:Integer;
begin
    if trim(Edit_RLogin_Type.Text)='' then
    begin
        Application.MessageBox('操作失败,【用户类型】不能为空,请确认!',Pchar(application.Title),MB_ICONWarning);
        RadioButton1.Checked:=false;
        Exit;
    end;
    if trim(Edit_RLogin_Name.Text)='' then
    begin
        Application.MessageBox('操作失败,【用户姓名】不能为空,请确认!',Pchar(application.Title),MB_ICONWarning);
        RadioButton1.Checked:=false;
        Exit;
    end;
    with frm_DataModule.ADO_QueryLogin do
    begin
        Close;
        Sql.Clear;
        Sql.Add('delete [UserRight] where Login_Type=:u0 and Login_Name=:u1');
        Parameters[0].Value:=Trim(Edit_Login_Type.Text);
        Parameters[1].Value:=Trim(Edit_Login_Name.Text);
        Try
            Prepared;
            ExecSql;
            for i:=0 to  checklistbox1.Items.Count-1 do
            begin
                if checklistbox1.Checked[i] then
                begin
                    with frm_DataModule.ADO_QueryRight do
                    begin
                        Close;
                        Sql.Clear;
                        Sql.Add('insert into [UserRight] (Login_Type,Login_Name,Right_Name) values (:u0,:u1,:u2)');
                        Parameters[0].Value:=Trim(Edit_RLogin_Type.Text);
                        Parameters[1].Value:=Trim(Edit_RLogin_Name.Text);
                        Parameters[1].Value:=checklistbox1.Items[i];

                        Try
                            Prepared;
                            ExecSql;
                        Except
                            Application.MessageBox('系统错误,系统在保存数据表【User_Right】时出错!,请确认!',Pchar(application.Title),MB_ICONWarning);
                            Exit;
                        End;
                    end;
                end;
            end;
            Application.MessageBox('权限设置完成!请确认!',Pchar(application.Title),MB_ICONWarning);
        Except
            Application.MessageBox('系统错误,系统在删除数据表【User_Right】时出错!,请确认!',Pchar(application.Title),MB_ICONWarning);
            Exit;
        End;
    end;
end;

procedure Tfrm_UserConfg.RadioButton1Click(Sender: TObject);
var
    i:Integer;
begin
    if trim(Edit_RLogin_Name.Text)='' then
    begin
        Application.MessageBox('操作失败,【用户姓名】不能为空,请确认!',Pchar(application.Title),MB_ICONWarning);
        RadioButton1.Checked:=false;
        exit;
    end
    else
    begin
        for i:=0 to checklistbox1.Count-1 do
        begin
            Checklistbox1.Checked[i]:=true;
        end;
    end;
end;

procedure Tfrm_UserConfg.RadioButton2Click(Sender: TObject);
var
    i:Integer;
begin
    for i:=0 to checklistbox1.Count-1 do
    begin
        Checklistbox1.Checked[i]:=False;
    end;
end;

procedure Tfrm_UserConfg.Edit_RLogin_NameChange(Sender: TObject);
var
    i:Integer;
begin
    //
    //**************************************************************************
    //把符合条件的用户ID过滤出来并加载到文本筐里
    with frm_DataModule.ADO_QueryRight do
    begin
        Close;
        Sql.Clear;
        Sql.Add('SELECT * FROM [Chang] WHERE Login_Type='''+Trim(Edit_RLogin_Type.Text)+'''');
        Try
            Prepared;
            Open;
            Edit_RLogin_Name.Text:=FieldByName('Login_Name').AsString;
        Except
            Application.MessageBox('系统错误!在打开数据表【Chang】时与远程服务器连接错误!请确认!',Pchar(Application.Title),MB_ICONWARNing);
            Exit;
        End
    end;
    //**************************************************************************
    //
    //--------------------------------------------------------------------------
    //提取现有权限
    with frm_DataModule.ADO_QueryRight do
    begin
        Close;
        Sql.Clear;
        Sql.Add('Select * from [UserRight] where Login_Type=:u0 and Login_Name=:u1');
        Parameters[0].Value:=Trim(Edit_Login_Type.Text);
        Parameters[1].Value:=Trim(Edit_Login_Name.Text);
        Try
            Prepared;
            Open;
            RightStr:='';
            if RecordCount>0 then
            begin
                First;
                while not Eof do
                begin
                    Right:=Right+FieldByName('Right_Name').AsString+',';
                    Next ;
                end;

                for i:=0 to checklistbox1.Count-1 do
                begin
                    if pos(checklistbox1.Items.Strings[i],right)>0 then
                    begin
                        checklistbox1.Checked[i]:=true
                    end
                    else
                    begin
                        checklistbox1.Checked[i]:=false;
                    end;
                end;
            end
            else
            begin
                for i:=0 to checklistbox1.Count-1 do
                begin
                    checklistbox1.Checked[i]:=false;
                end;
            end;
        Except
            Application.MessageBox('系统错误!在打开数据表【User_Right】时与远程服务器连接错误!请确认!',Pchar(Application.Title),MB_ICONWARNing);
            Exit;
        End;
    end;
        //--------------------------------------------------------------------------
end;

end.

⌨️ 快捷键说明

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