📄 optionpas.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 + -