📄 lendbooku.pas
字号:
unit LendBookU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, ComCtrls,
Menus,StrUtils;
type
TLendBookF = class(TForm)
Edit1: TEdit;
StaticText1: TStaticText;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
StaticText9: TStaticText;
StaticText2: TStaticText;
Edit2: TEdit;
Edit3: TEdit;
ListBox3: TListBox;
StaticText4: TStaticText;
GroupBox1: TGroupBox;
ListBox1: TListBox;
GroupBox2: TGroupBox;
ListView1: TListView;
GroupBox3: TGroupBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit1Change(Sender: TObject);
procedure ListBox1DblClick(Sender: TObject);
procedure ListView1Click(Sender: TObject);
procedure ListView1DblClick(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
public
{ Public declarations }
function CSaveLend:boolean;
procedure COnKeyPress(Sender: TObject; var Key: Char);//回车换行
procedure showdata;
end;
var
LendBookF: TLendBookF;
implementation
uses DataModule, ShowMessageU,ShareU, MainU;
{$R *.dfm}
procedure TLendBookF.WMNCPaint(var Msg: TWMNCPaint);
begin
inherited;
draw(LendBookF);
end;
procedure TLendBookF.showdata;
var
Query:TADOQuery;
begin
Query:=TADOQuery.Create(self);
Query.Connection:=dm.ADOConnection1;
Query.SQL.Text:='select bookid,bookname from book_info '+
'where bookid in (select bookid from book_stock'+
' where booklast=1)';
Query.Open;
query.First;
while not query.Eof do
begin
with listview1.Items.Add do
begin
caption:=query.FieldValues['bookid'];
subitems.Add(query.FieldValues['bookname']);
end;
query.Next;
end;
Query.Close;
Query.Free;
end;
procedure TLendBookF.COnKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if not(ActiveControl is tdbgrid) then
begin
key:=#0;
SelectNext(ActiveControl,True,True);
end;
end;
end;
function TLendBookF.CSaveLend:boolean;
var
Query:TADOQuery;
i:integer;
begin
result:=false;
Query:=TADOQuery.Create(self);
Query.Connection:=dm.ADOConnection1;
Query.SQL.Text:='insert into Lend_Book(readercardid,bookid,lenddate,borrowdate,'+
'state) values (:readercardid,:bookid,:lenddate,:borrowdate,:state)';
try
for i:=0 to listbox3.Items.Count-1 do
begin
Query.Parameters.ParamByName('readercardid').Value:=trim(edit1.Text);
Query.Parameters.ParamByName('bookid').Value:=listbox3.Items.Strings[i];
Query.Parameters.ParamByName('lenddate').Value:=now;
Query.Parameters.ParamByName('borrowdate').Value:=null;
Query.Parameters.ParamByName('state').Value:=1;
dm.ADOConnection1.BeginTrans;
Query.ExecSQL;
dm.ADOConnection1.CommitTrans;
result:=true;
end;
except
dm.ADOConnection1.RollbackTrans;
showmessage('借书失败!');
result:=false;
end;
Query.Close;
Query.Free;
end;
procedure TLendBookF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
LendBookF:=nil;
Action:=cafree;
end;
procedure TLendBookF.FormCreate(Sender: TObject);
begin
caption:='借书';
Icon:=mainf.Icon;
showdata;
end;
procedure TLendBookF.BitBtn2Click(Sender: TObject);
begin
if edit1.Text='' then
showmessage('卡号不能为空!')
else if edit2.Text='' then
showmessage('书号不能为空!')
else if edit3.Text='' then
showmessage('书名不能为空!')
else
if CSaveLend then
begin
application.MessageBox('保存成功!','提示');
LendBookF.close;
end;
end;
procedure TLendBookF.Edit2Change(Sender: TObject);
var
Query:TADOQuery;
begin
if DM.CCheckID('select BookID from book_info where '+
' bookid='''+trim(edit2.Text)+'''') then
// 有此好把书名显示出来
begin
Query:=TADOQuery.Create(self);
Query.Connection:=dm.ADOConnection1;
query.SQL.Text:='select bookname from book_info where bookid=''' +
trim(edit2.Text)+'''';
query.Open;
edit3.Text:=query.FieldValues['bookname'];
query.Close;
query.Free;
end;
end;
procedure TLendBookF.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if not DM.CCheckID('select ReaderCardID from reader_info where '+
' readercardid='''+trim(edit1.Text)+'''') then
begin
showmessage('没有此卡号!');
edit1.SetFocus;
edit1.SelStart:=0;
edit1.SelLength:=length(edit1.text);
exit;
end
else
COnKeyPress(sender,key);
end;
end;
procedure TLendBookF.Edit1Change(Sender: TObject);
begin
edit2.Text:='';
edit3.Text:='';
listbox1.Clear;
listbox3.Clear;
end;
procedure TLendBookF.ListBox1DblClick(Sender: TObject);
begin
listbox3.Items.Delete(listbox1.ItemIndex);
listbox1.DeleteSelected;
getOrder(Listbox1); //ShareU-getOrder
end;
procedure TLendBookF.ListView1Click(Sender: TObject);
begin
edit2.Text:=listview1.Selected.Caption;
edit3.Text:=listview1.Selected.SubItems.Strings[0];
end;
procedure TLendBookF.ListView1DblClick(Sender: TObject);
begin
if edit1.Text='' then exit;
if (listbox3.Items.Count+dm.GetReaderLendBookNum(edit1.Text))>=DM.GetReaderLendBookCount(trim(edit1.Text)) then
begin
showmessage('本人只能借'+inttostr(DM.GetReaderLendBookCount(trim(edit1.Text)))+'本书,'+#13+
'已经借走'+inttostr(dm.GetReaderLendBookNum(trim(edit1.Text)))+'本书,'+#13+
'还只能借'+inttostr(DM.GetReaderLendBookCount(trim(edit1.Text))-dm.GetReaderLendBookNum(trim(edit1.Text)))+'本书!');
exit;
end;
if DM.CheckReaderLendBookName(trim(edit1.Text),trim(edit2.Text)) then
begin
application.MessageBox('本人已借此书尚未归还!','提示');
exit;
end;
if listbox3.Items.IndexOf(edit2.Text)<0 then //没有则增加新的
begin
listbox1.Items.Add(inttostr(listbox1.Items.Count+1)+')'+edit3.Text);
listbox3.Items.Add(edit2.Text);
end;
end;
procedure TLendBookF.BitBtn3Click(Sender: TObject);
begin
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -