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

📄 optionpas.pas

📁 DELPHI 编写个人工作计划事务管理软件
💻 PAS
字号:
unit Optionpas;

interface

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

type
  TOptionForm = class(TForm)
    PageControl: TPageControl;
    UseTabSheet: TTabSheet;
    SetIsokBut: TBitBtn;
    SetCancelBut: TBitBtn;
    SetAppBut: TBitBtn;
    AllUseListView: TListView;
    All_Use_Label: TLabel;
    Top_Desc_Label: TLabel;
    AddUseBut: TBitBtn;
    DelUseBut: TBitBtn;
    GB_SetPassWord: TGroupBox;
    SetPassBut: TBitBtn;
    Top_Use_Image: TImage;
    Set_Pass_Image: TImage;
    ModifyPassLabel: TLabel;
    ADDADOQuery: TADOQuery;
    ShowOption: TBitBtn;
    UADOConnection: TADOConnection;
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure AllUseListViewSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure AddUseButClick(Sender: TObject);
    procedure DelUseButClick(Sender: TObject);
    procedure SetPassButClick(Sender: TObject);
    procedure SetAppButClick(Sender: TObject);
    procedure SetIsokButClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ShowOptionClick(Sender: TObject);
    procedure AllUseListViewDblClick(Sender: TObject);
  private
    { Private declarations }
    Function LoginDatabase() : Boolean;
    Function UseDataSearch(DBS_SqlStr : String; DBS_Tag : Integer = 1) : Boolean;
  public
    { Public declarations }
  end;

var
  OptionForm: TOptionForm;
  SqlStrArray: TStringList;                   //==== 设置查询语句数组 ====//
  SearchTag: Array of Integer;                //==== 查询标志值用数组 ====//
  AllUseCount : Integer;                      //==== 所有用户总数统计 ====//

implementation

uses Share_Date, Createpas, SetpassPas, ShowUseOptionPas;
{$R *.dfm}

{********************************}
{******** 自定义过程函数 ********}
{********************************}
//---- 连接数据库 ----//
Function TOptionForm.LoginDatabase() : Boolean;
var LD_RootDir : String;
begin
  LD_RootDir := ExtractFilePath(Application.ExeName);
  if LD_RootDir[Length(LD_RootDir)] <> '\' then LD_RootDir := LD_RootDir + '\';
  Try
    With UADOConnection do begin
      Close;
      ConnectionString := Format(CONNSTRING, [LD_RootDir, LD_RootDir]);
      LoginPrompt := FALSE;
      Open;
    end;
    Result := TRUE;
  Except
    Result := FALSE;
    Application.MessageBox('连接数据库时出错!!', '警告', MB_OK);
    Abort();
  end;
end;

//---- 数据库查询与修改 ----//
Function TOptionForm.UseDataSearch(DBS_SqlStr : String; DBS_Tag : Integer = 1) : Boolean;
begin
  Try
    if Trim(DBS_SqlStr) = '' then begin
      Result := FALSE;
      Exit;
    end;
    UADOConnection.Close;
    UADOConnection.Open;
    With ADDADOQuery do begin
      Close;
      Connection:= UADOConnection;
      SQL.Clear;
      SQL.Add(DBS_SqlStr);
      PrePared;
      if DBS_Tag = 1 then Open
      else ExecSQL;
    end;
    Result := TRUE;
  Except
    Result := FALSE;
    Application.MessageBox('查询数据记录错误', '警告', MB_OK);
    Abort();
  end;
end;

{************************************}
{******** 主窗体运行时的代码 ********}
{************************************}
procedure TOptionForm.FormCreate(Sender: TObject);
var FC_CheckOk : Boolean;
    FC_SqlStr : String;
    FC_Str : TStringList;
begin
  //==== 窗口创建时的代码 ====//
  SqlStrArray := TStringList.Create;          //==== 设置查询用语句长 ====//
  SetLength(SearchTag, 25);                   //==== 设置查询标志数长 ====//
  AllUseCount := 0;                           //==== 初始化用户总变量 ====//

  AllUseListView.Clear;                       //==== 清用户信息列表框 ====//
  DelUseBut.Enabled := FALSE;                 //==== 删除按钮不可操作 ====//
  ShowOption.Enabled := FALSE;                //==== 显示用户属性不用 ====//
  SetPassBut.Enabled := FALSE;                //==== 设置密码按钮不用 ====//
  SetAppBut.Enabled := FALSE;                 //==== 应用按钮不可操作 ====//

  FC_CheckOk := LoginDatabase();
  if FC_CheckOk = FALSE then Exit;

  FC_SqlStr := 'SELECT UserName,UserDesc,Remark FROM LoginData ORDER BY ID';
  FC_Str := TStringList.Create;               //==== 设置字符串列表内存 ====//
  Try
    FC_CheckOk := UseDataSearch(FC_SqlStr, 1);//==== 查询用户名与用户名说明 ====//
    if FC_CheckOk = TRUE then begin
      With ADDADOQuery do begin
        First;
        AllUseCount := RecordCount;
        While (Not Eof) do begin
          FC_Str.Clear;
          FC_Str.Add(Trim(FieldByName('UserName').AsString));
          FC_Str.Add(Trim(FieldByName('UserDesc').AsString));
          FC_Str.Add(Trim(FieldByName('Remark').AsString));
          {----------- 把用户加进用户列表 ---------}
          With AllUseListView.Items.Add do begin
            Caption := FC_Str[0];
            SubItems.Add(FC_Str[1]);
            SubItems.Add(FC_Str[2]);
          end;
          Next;
          Application.ProcessMessages;
        end;
      end;
    end;
  Finally
    FC_Str.Clear;                             //==== 释放字符串列表内存 ====//
  end;
end;

procedure TOptionForm.FormActivate(Sender: TObject);
begin
  //==== 窗体成为焦点窗体时的代码 ====//
  AllUseListView.SetFocus;
end;

procedure TOptionForm.AllUseListViewSelectItem(Sender: TObject;
  Item: TListItem; Selected: Boolean);
begin
  //==== 信息列表框选择时 ====//
  if Selected = TRUE then begin
    DelUseBut.Enabled := TRUE;
    ShowOption.Enabled := TRUE;                //==== 显示用户属性可用 ====//
    SetPassBut.Enabled := TRUE;
    GB_SetPassWord.Caption := Trim(Item.Caption) + ' 用户';
  end else begin
    DelUseBut.Enabled := FALSE;
    ShowOption.Enabled := FALSE;                //==== 显示用户属性不用 ====//
    SetPassBut.Enabled := FALSE;
  end;
end;

procedure TOptionForm.AddUseButClick(Sender: TObject);
var ABC_SqlStr : String;
begin
  //==== 添加用户按钮代码 ====//
  if Share_Level < 2 then begin
    if SqlStrArray.Count < 25 then begin
      CreatForm := TCreatForm.Create(Application);
      Try
        CreatForm.ShowModal;
        if CreatForm.ModalResult = mrOK then begin
          Inc(AllUseCount);                      //==== 增加一条记录 ====//
          ABC_SqlStr := 'INSERT INTO LoginData (ID,UserName,UserDesc,PassWord,UseLevel,Remark) VALUES(''';
          ABC_SqlStr := ABC_SqlStr + GetStantLenStr(AllUseCount, 4) + ''',''';
          ABC_SqlStr := ABC_SqlStr + Trim(CreatForm.ED_UseName.Text) + ''',''';
          ABC_SqlStr := ABC_SqlStr + Trim(CreatForm.ED_NameDesc.Text) + ''',''';
          ABC_SqlStr := ABC_SqlStr + Trim(CreatForm.ED_PassWord.Text) + ''',''';
          ABC_SqlStr := ABC_SqlStr + IntToStr(CreatForm.RG_UseLevel.ItemIndex + 1) + ''',''';
          ABC_SqlStr := ABC_SqlStr + Trim(CreatForm.ED_Level.Text) + ''')';
          SearchTag[SqlStrArray.Count] := 2;
          SqlStrArray.Add(ABC_SqlStr);
          With AllUseListView.Items.Add do begin
            Caption := Trim(CreatForm.ED_UseName.Text);
            SubItems.Add(Trim(CreatForm.ED_NameDesc.Text));
            SubItems.Add(Trim(CreatForm.ED_Level.Text));
          end;
        end;
      Finally
        CreatForm.Free;
      end;
    end else Application.MessageBox('当前用户连续操作超过规定次数 : 25 次', '提示', MB_OK);
    SetAppBut.Enabled := TRUE;                 //==== 应用按钮可操作 ====//
  end else Application.MessageBox('当前用户的权限不能添加用户', '提示', MB_OK);
end;

procedure TOptionForm.DelUseButClick(Sender: TObject);
var DBC_Str : String;
begin
  //==== 删除用户按钮代码 ====//
  if Share_Level < 2 then begin
    if SqlStrArray.Count < 25 then begin
      DBC_Str := 'DELETE FROM LoginData WHERE UserName=''';
      DBC_Str := DBC_Str + Trim(AllUseListView.Selected.Caption) + ''' AND UserDesc=''';
      DBC_Str := DBC_Str + Trim(AllUseListView.Selected.SubItems.Strings[0]) + '''';
      SearchTag[SqlStrArray.Count] := 2;
      SqlStrArray.Add(DBC_Str);
      AllUseCount := AllUseCount - 1;
      AllUseListView.Selected.Delete;
      SetAppBut.Enabled := TRUE;                 //==== 应用按钮可操作 ====//
    end else Application.MessageBox('当前用户连续操作超过规定次数 : 25 次', '提示', MB_OK);
  end else Application.MessageBox('当前用户的权限不能删除其它用户', '提示', MB_OK);
end;

procedure TOptionForm.SetPassButClick(Sender: TObject);
var SPB_SqlStr : String;
begin
  //==== 更改当前用户密码按钮代码 ====//
  if (Share_Level < 2)OR(CompareText(Trim(Share_LogName), Trim(AllUseListView.Selected.Caption)) = 0)then begin
    if SqlStrArray.Count < 25 then begin
      SetPassForm:= TSetPassForm.Create(Application);
      Try
        SetPassForm.ShowModal;
        if SetPassForm.ModalResult = mrOK then begin
          SPB_SqlStr := 'UPDATE LoginData SET PassWord=''';
          SPB_SqlStr := SPB_SqlStr + Trim(SetPassForm.ED_NewPass.Text) + ''' WHERE UserName=''';
          SPB_SqlStr := SPB_SqlStr + Trim(AllUseListView.Selected.Caption) + ''' AND UserDesc=''';
          SPB_SqlStr := SPB_SqlStr + Trim(AllUseListView.Selected.SubItems.Strings[0]) + '''';
          SearchTag[SqlStrArray.Count] := 2;
          SqlStrArray.Add(SPB_SqlStr);             //==== 加入到查询列表 ====//
          SetAppBut.Enabled := TRUE;               //==== 应用按钮可操作 ====//
        end;
      Finally
        SetPassForm.Free;                          //==== 释放面板内存 ====//
      end;
    end else Application.MessageBox('当前用户连续操作超过规定次数 : 25 次', '提示', MB_OK);
  end else Application.MessageBox('你无权修改他人的密码', '提示', MB_OK);
end;

procedure TOptionForm.SetAppButClick(Sender: TObject);
var I : Integer;
begin
  //==== 单击应用按钮运行的代码 ====//
  SetAppBut.Enabled := FALSE;                 //==== 应用按钮不可操作 ====//
  for I := 0 to SqlStrArray.Count - 1 do begin
    if Trim(SqlStrArray[I]) <> '' then begin
      UseDataSearch(SqlStrArray[I], SearchTag[I]);
    end;
  end;
  SqlStrArray.Clear;                          //==== 设置查询用语句长 ====//
  SetLength(SearchTag, 25);                   //==== 设置查询标志数长 ====//
end;

procedure TOptionForm.SetIsokButClick(Sender: TObject);
begin
  //==== 单击确定按钮时的代码 ====//
  if SetAppBut.Enabled = TRUE then SetAppButClick(SetAppBut);
end;

procedure TOptionForm.FormDestroy(Sender: TObject);
begin
  SqlStrArray.Free;                         //==== 释放公用字符串变量 ====//
end;

procedure TOptionForm.ShowOptionClick(Sender: TObject);
begin
  //==== 显示属性面板设置 ====//
  ShowOptionForm:= TShowOptionForm.Create(Application);
  Try
    ShowOptionForm.ED_UseName.Text := Trim(AllUseListView.Selected.Caption);
    ShowOptionForm.ED_NameDesc.Text := Trim(AllUseListView.Selected.SubItems.Strings[0]);
    ShowOptionForm.ED_LevelDesc.Text := Trim(AllUseListView.Selected.SubItems.Strings[1]);
    ShowOptionForm.ShowModal;
  Finally
    ShowOptionForm.Free;
  end;
end;

procedure TOptionForm.AllUseListViewDblClick(Sender: TObject);
begin
  //====  双击时的代码 ====//
  if AllUseListView.SelCount > 0 then ShowOptionClick(ShowOption);
end;

end.

⌨️ 快捷键说明

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