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

📄 lendbooku.pas

📁 关于图书馆管理的vfp程序
💻 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 + -