📄 ureadersetting.~pas
字号:
unit uReaderSetting;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls,dbtables, Db, ExtCtrls, Buttons;
type
TfrmReaderSetting = class(TForm)
Panel3: TPanel;
PageControl1: TPageControl;
TabSheet2: TTabSheet;
GroupBox2: TGroupBox;
lstUserDetail: TListView;
btnRefresh: TButton;
ListBox2: TListBox;
btnDeleteUser: TButton;
GroupBox3: TGroupBox;
GroupBox5: TGroupBox;
edtReaderID: TEdit;
edtReaderCode: TEdit;
edtReaderName: TEdit;
cmbSex: TComboBox;
cmbClass: TComboBox;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
StaticText6: TStaticText;
btnOKUser: TButton;
TabSheet3: TTabSheet;
GroupBox6: TGroupBox;
lstClassDetail: TListView;
btnDeleteClass: TButton;
GroupBox7: TGroupBox;
GroupBox9: TGroupBox;
edtClassCode: TEdit;
edtClassDescr: TEdit;
StaticText8: TStaticText;
StaticText9: TStaticText;
edtBookMax: TEdit;
StaticText10: TStaticText;
btnOKClass: TButton;
TabSheet4: TTabSheet;
ListView4: TListView;
btnRefreshReader: TButton;
btnCancel: TSpeedButton;
Label1: TLabel;
chkNewReader: TCheckBox;
chkNewReaderClass: TCheckBox;
procedure btnRefreshClick(Sender: TObject);
procedure lstUserDetailChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure lstUserDetailMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btnOKUserClick(Sender: TObject);
procedure btnDeleteUserClick(Sender: TObject);
procedure lstClassDetailChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure btnOKClassClick(Sender: TObject);
procedure btnDeleteClassClick(Sender: TObject);
procedure btnRefreshReaderClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure chkNewReaderClick(Sender: TObject);
procedure chkNewReaderClassClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure RefreshUser;
function CheckUserExist(UserID : string):boolean;
procedure InsUser(UserID,Name,Sex,GroupID,IDCard : string);
procedure UpdateUser(UserID,Name,Sex,GroupID,IDCard : string);
procedure DelUser(UserID : string);
function CheckDelUser(UserID : string):integer;
procedure UserEditViewInit;
procedure RefreshGroup;
function CheckGroupExist(GroupID : string):boolean;
procedure InsGroup(GroupID,Des : string;MaxNum : integer);
procedure UpdateGroup(GroupID,Des : string;MaxNum:integer);
procedure DelGroup(GroupID : string);
procedure GroupEditViewInit;
procedure InitGroup;
function GetUserTotalNum:integer;
function GetUserNum(GroupID:string):integer;
function GetLendedUserNum(GroupID:string):integer;
function GetLendedBookNum(GroupID:string):integer;
procedure RefreshCountUser;
end;
var
frmReaderSetting: TfrmReaderSetting;
implementation
uses
main, uPublic;
{$R *.DFM}
//刷新显示当前读者用户情况
procedure TfrmReaderSetting.RefreshUser;
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQL.Add('select * from Userb order by UserID');
Query.Open;
lstUserDetail.Items.Clear;
while not Query.Eof do
begin
with lstUserDetail.Items.Add do
begin
Caption := Query.FieldByName('UserID').AsString;
SubItems.Add(Query.FieldByName('Name').AsString);
if Query.FieldByName('Sex').AsString = '1' then
SubItems.Add('女')
else SubItems.Add('男');
SubItems.Add(Query.FieldByName('GroupID').AsString);
SubItems.Add(Query.FieldByName('IDCard').AsString);
end;
Query.Next;
end;
GroupBox2.Caption := '用户列表/共'+IntToStr(Query.RecordCount)+'条记录';
Query.Close;
Query.Free;
end;
procedure TfrmReaderSetting.btnRefreshClick(Sender: TObject);
begin
try
RefreshUser;
except
lstUserDetail.Items.Clear;
MessageDlg('刷新出错',mtError,[mbok],0);
end;
end;
//读者用户列表发生改变时的处理
procedure TfrmReaderSetting.lstUserDetailChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
var
i : integer;
Found : boolean;
begin
if lstUserDetail.Selected <> nil then
begin
chkNewreader.Checked := false;
chkNewreaderClick(Sender);
edtReaderCode.Text := lstUserDetail.Selected.Caption;
edtReaderName.Text := lstUserDetail.Selected.SubItems.Strings[0];
if lstUserDetail.Selected.SubItems.Strings[1] = '女' then
cmbSex.ItemIndex := 1
else cmbSex.ItemIndex := 0;
Found := False;
i := 0;
while (Found = False)and(i<ListBox2.Items.Count) do
begin
if lstUserDetail.Selected.SubItems.Strings[2] = ListBox2.Items[i] then
Found := True
else Inc(i);
end;
if Found <> True then
i:=0;
cmbClass.ItemIndex := i;
edtReaderID.Text := lstUserDetail.Selected.SubItems.Strings[3];
end;
end;
//处理读者用户列表的鼠标点击动作
procedure TfrmReaderSetting.lstUserDetailMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
i : integer;
Found : boolean;
begin
if lstUserDetail.Selected <> nil then
begin
edtReaderCode.Text := lstUserDetail.Selected.Caption;
edtReaderName.Text := lstUserDetail.Selected.SubItems.Strings[0];
if lstUserDetail.Selected.SubItems.Strings[1] = '女' then
cmbSex.ItemIndex := 1
else cmbSex.ItemIndex := 0;
Found := False;
i := 0;
while (Found = False)and(i<ListBox2.Items.Count) do
begin
if lstUserDetail.Selected.SubItems.Strings[2] = ListBox2.Items[i] then
Found := True
else Inc(i);
end;
if Found <> True then
i:=0;
cmbClass.ItemIndex := i;
edtReaderID.Text := lstUserDetail.Selected.SubItems.Strings[3];
end;
end;
//检查某读者用户名是否已经存在
function TfrmReaderSetting.CheckUserExist(UserID: string): boolean;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName :=DBName;
Query.SQl.Add('select UserID from Userb where UserID=:UserID');
Query.ParamByName('UserID').AsString := UserID;
Query.Open;
if Query.RecordCount = 0 then
Result := False
else Result := True;
Query.Close;
Query.Free;
except
Result := False;
end;
end;
//删除某读者用户
procedure TfrmReaderSetting.DelUser(UserID: string);
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQl.Add('delete from Userb where UserID=:UserID');
Query.ParamByName('UserID').AsString := UserID;
Query.ExecSQL;
Query.Free;
end;
//Insert某读者用户
procedure TfrmReaderSetting.InsUser(UserID, Name, Sex, GroupID, IDCard: string);
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQl.Add('insert into Userb(UserID,Name,Sex,GroupID,IDCard) '+
'values(:UserID,:Name,:Sex,:GroupID,:IDCard)');
Query.ParamByName('UserID').AsString := UserID;
Query.ParamByName('Name').AsString := Name;
Query.ParamByName('Sex').AsString := Sex;
Query.ParamByName('GroupID').AsString := GroupID;
Query.ParamByName('IDCard').AsString := IDCard;
Query.ExecSQL;
Query.Free;
end;
//更新某读者用户信息
procedure TfrmReaderSetting.UpdateUser(UserID, Name, Sex, GroupID, IDCard: string);
var
Query : TQuery;
begin
Query := TQuery.Create(nil);
Query.DatabaseName :=DBName;
Query.SQl.Add('update Userb set Name=:Name,Sex=:Sex,'+
'GroupID=:GroupID,IDCard=:IDCard '+
' where UserID= :UserID');
Query.ParamByName('UserID').AsString := UserID;
Query.ParamByName('Name').AsString := Name;
Query.ParamByName('Sex').AsString := Sex;
Query.ParamByName('GroupID').AsString := GroupID;
Query.ParamByName('IDCard').AsString := IDCard;
Query.ExecSQL;
Query.Free;
end;
//初始化读者用户相关的一些控件
procedure TfrmReaderSetting.UserEditViewInit;
begin
edtReaderCode.Text := '';
edtReaderName.Text := '';
edtReaderID.Text := '';
cmbSex.ItemIndex := 0;
cmbClass.ItemIndex := 0;
if edtReaderCode.Enabled = True then
edtReaderCode.SetFocus
else edtReaderName.SetFocus;
end;
//更具情况增加或修改读者用户信息
procedure TfrmReaderSetting.btnOKUserClick(Sender: TObject);
begin
//新增读者
if chkNewReader.Checked then
begin
if Length(edtReaderCode.Text)<> UserIDLength then
begin
MessageDlg('用户借书号不正确',mtError,[mbok],0);
Exit;
end;
if CheckUserExist(edtReaderCode.Text) then
begin
MessageDlg('用户<'+edtReaderCode.Text+'>已经存在',mtError,[mbok],0);
Exit;
end;
try
InsUser(edtReaderCode.Text,edtReaderName.Text,IntToStr(cmbSex.ItemIndex),
ListBox2.Items[cmbClass.ItemIndex],edtReaderID.Text);
except
MessageDlg('添加<'+edtReaderCode.Text+'>失败',mtError,[mbok],0);
Exit;
end;
end;
//修改读者信息
if chkNewReader.Checked=false then
begin
if Length(edtReaderCode.Text)<> UserIDLength then
begin
MessageDlg('用户借书号不正确',mtError,[mbok],0);
Exit;
end;
try
UpdateUser(edtReaderCode.Text,edtReaderName.Text,IntToStr(cmbSex.ItemIndex),
ListBox2.Items[cmbClass.ItemIndex],edtReaderID.Text);
except
MessageDlg('修改<'+edtReaderCode.Text+'>失败',mtError,[mbok],0);
Exit;
end;
end;
UserEditViewInit;
//RefreshUser;
end;
//删除指定读者用户信息
procedure TfrmReaderSetting.btnDeleteUserClick(Sender: TObject);
var
i : integer;
Checked : integer;
begin
for i := lstUserDetail.Items.Count -1 downto 0 do
if lstUserDetail.Items[i].Selected then
try
Checked := CheckDelUser(lstUserDetail.Items[i].Caption);
if Checked = IDYES then
begin
DelUser(lstUserDetail.Items[i].Caption);
lstUserDetail.Items.Delete(i);
end else
if Checked = IDNO then
Exit;
except
MessageDlg('删除<'+lstUserDetail.Items[i].Caption+'>出错',mtError,[mbok],0);
end;
end;
//检查某读者用户身份是否已经存在
function TfrmReaderSetting.CheckGroupExist(GroupID: string): boolean;
var
Query : TQuery;
begin
try
Query := TQuery.Create(nil);
Query.DatabaseName := DBName;
Query.SQl.Add('select GroupID from Groupb where GroupID=:GroupID');
Query.ParamByName('GroupID').AsString := GroupID;
Query.Open;
if Query.RecordCount = 0 then
Result := False
else Result := True;
Query.Close;
Query.Free;
except
Result := False;
end;
end;
//删除某用户身份
procedure TfrmReaderSetting.DelGroup(GroupID: string);
var
Query : TQuery;
Answer : integer;
Checked : Integer;
begin
Answer := MessageBox(0,PChar('删除将删除此身份的所有用户及与这些用户相关的所有信息'+
#13+'是否要删除'),'警告',MB_YESNO);
if Answer = IDNO then
Exit;
Query := TQuery.Create(nil);
Query.DatabaseName :=DBName;
Query.SQL.Add('select UserID from Userb where GroupID =:GroupID');
Query.ParamByName('GroupID').AsString := GroupID;
Query.Open;
while not Query.Eof do
begin
try
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -