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

📄 readeru.pas

📁 一个图书馆管理程序
💻 PAS
字号:
unit ReaderU;

interface

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

type
  TReaderF = class(TForm)
    StaticText7: TStaticText;
    StaticText5: TStaticText;
    StaticText4: TStaticText;
    StaticText3: TStaticText;
    StaticText2: TStaticText;
    ID: TEdit;
    name: TEdit;
    shenfen: TEdit;
    StaticText1: TStaticText;
    sex: TComboBox;
    edu: TComboBox;
    typee: TComboBox;
    StaticText8: TStaticText;
    StaticText9: TStaticText;
    StaticText10: TStaticText;
    StaticText11: TStaticText;
    StaticText13: TStaticText;
    StaticText14: TStaticText;
    homep: TEdit;
    handp: TEdit;
    bp: TEdit;
    qq: TEdit;
    email: TEdit;
    address: TEdit;
    ListBox1: TListBox;
    StaticText15: TStaticText;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    GroupBox2: TGroupBox;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure IDExit(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure nameChange(Sender: TObject);
    procedure homepChange(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure nameKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ListBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);


  private
    { Private declarations }
    procedure CGetReaderInfo(value:string); //获得读者信息
    procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
  public
    { Public declarations }
    IsChange:boolean;    //判断是否修改
    sqlStr,sqlStr1:string;
    function CUpdate:boolean;
    procedure TagInit;

  end;

var
  ReaderF: TReaderF;

implementation

uses DataModule,ShareU, MainU;
{$R *.dfm}

procedure TReaderF.WMNCPaint(var Msg: TWMNCPaint);
begin
    inherited;
    draw(ReaderF);
end;

function TReaderF.CUpdate:boolean;
var
  Query:TADOQuery;
begin
  result:=false;
  if (sqlstr='') and (sqlstr1='') then exit;

    Query:=TADOQuery.Create(self);
    Query.Connection:=dm.ADOConnection1;
  try
    dm.ADOConnection1.BeginTrans;
      if sqlstr<>'' then
      begin
        sqlstr:=leftstr(sqlstr,length(sqlstr)-1);  //去掉逗号
        sqlstr:='update reader_info set '+sqlstr+' where readercardid='''+id.Text+'''';
        Query.SQL.Text:=sqlstr;
        Query.ExecSQL;
        Query.Close;
      end;
      if sqlstr1<>'' then
      begin
        sqlstr1:=leftstr(sqlstr1,length(sqlstr1)-1);  //去掉逗号
        sqlstr1:='update reader_relation set '+sqlstr1+' where readercardid='''+id.Text+'''';
        Query.SQL.Text:=sqlstr1;
        Query.ExecSQL;
      end;
        dm.ADOConnection1.CommitTrans;
        result:=true;
    except
      dm.ADOConnection1.RollbackTrans;
      showmessage('更新失败!');
      result:=false;
    end;
    Query.close;
    Query.free;
end;

procedure TReaderF.CGetReaderInfo(value:string);
Var
  Query:TADOQuery;
begin
    Query:=TADOQuery.Create(SELF);
    Query.Connection:=dm.ADOConnection1;
    Query.SQL.Text:='select * from reader_info where readercardid=:readercardid';
    Query.Parameters.ParamByName('readercardid').Value:=value;
    try
    Query.Open;
    if not DM.CCheckID('select readercardid from reader_info where '+
                'readercardid='''+trim(id.Text)+'''') then
    begin
        showmessage('无此卡号,重新输入!');
        CClearData(ReaderF);
        id.SetFocus;
        exit;
    end;
    name.Text:=Query.FieldValues['name'];
    shenfen.Text:=Query.FieldValues['id'];
    sex.ItemIndex:=Query.FieldValues['sex'];
    edu.ItemIndex:=Query.FieldValues['educationid'];
    typee.ItemIndex:=Query.FieldValues['readertypeid'];
    Query.Close;
    Query.SQL.Text:='select * from reader_relation where readercardid=:readercardid';
    Query.Parameters.ParamByName('readercardid').Value:=value;
    Query.Open;
    homep.Text:=Query.FieldValues['homephone'];
    handp.Text:=Query.FieldValues['handphone'];
    bp.Text:=Query.FieldValues['bp'];
    qq.Text:=query.FieldValues['qq'];
    email.Text:=Query.FieldValues['email'];
    address.Text:=Query.FieldValues['address'];
    finally
      Query.Close;
      Query.Free;
    end;
end;

procedure TReaderF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    ReaderF:=nil;
    Action:=cafree;              //释放窗体
end;
procedure TReaderF.TagInit;       //TAG清0
var
  i:integer;
begin
      for i:=0 to ReaderF.controlcount-1 do
         readerf.Controls[i].Tag:=0;
end;

procedure TReaderF.IDExit(Sender: TObject);
begin
     if id.Text<>'' then
       CGetReaderInfo(id.Text);
     SqlStr:='';
     sqlstr1:='';
     TagInit;
end;

procedure TReaderF.BitBtn3Click(Sender: TObject);
begin
    ccleardata(readerf);
end;

procedure TReaderF.nameChange(Sender: TObject);
begin
    if (sender is TEdit) then
       (sender as Tedit).Tag:=1;
    if (sender is TCombobox) then
       (sender as TCombobox).Tag:=1;
end;

procedure TReaderF.homepChange(Sender: TObject);
begin
    if (sender is TEdit) then
     (sender as Tedit).Tag:=2;
end;

procedure TReaderF.BitBtn1Click(Sender: TObject);
  procedure GetTagText;        //获得更改控件的Text值
  var i:integer;
  begin
    for i:=0 to ReaderF.ControlCount-1 do
    begin
        if readerf.Controls[i].Tag=1 then      //基本信息
        begin
            if (readerf.Controls[i] is TEdit) then
            begin
              if ((readerf.Controls[i] as TEdit)=name) then
                 sqlStr:=sqlstr+'name='''+name.Text+''','
              else if ((readerf.Controls[i] as TEdit)=shenfen) then
                 sqlStr:=sqlstr+'id='''+shenfen.Text+''','
            end
            else if (readerf.Controls[i] is TComboBox) then
            begin
              if ((readerf.Controls[i] as TComboBox)=sex) then
                 sqlstr:=sqlstr+'sex='''+inttostr(sex.ItemIndex)+''','
              else if ((readerf.Controls[i] as TComboBox)=typee) then
                 sqlstr:=sqlstr+'readertypeid='''+inttostr(typee.ItemIndex)+''','
              else if ((readerf.Controls[i] as TComboBox)=edu) then
                 sqlstr:=sqlstr+'educationid='''+inttostr(edu.ItemIndex)+''',';
            end;
        end;

        if readerf.Controls[i].Tag=2 then   //为联系信息
        begin
           if (readerf.Controls[i] is TEdit) then
           begin
              if ((readerf.Controls[i] as TEdit)=homep) then
                  sqlStr1:=sqlstr1+'homephone='''+homep.Text+''','
              else if ((readerf.Controls[i] as TEdit)=handp) then
                  sqlStr1:=sqlstr1+'handphone='''+handp.Text+''','
              else if ((readerf.Controls[i] as TEdit)=bp) then
                  sqlstr1:=sqlstr1+'bp='''+bp.Text+''','
              else if ((readerf.Controls[i] as TEdit)=qq) then
                  sqlstr1:=sqlstr1+'qq='''+qq.Text+''','
              else if ((readerf.Controls[i] as TEdit)=email) then
                  sqlstr1:=sqlstr1+'email='''+email.Text+''','
              else if ((readerf.Controls[i] as TEdit)=address) then
                  sqlstr1:=sqlstr1+'address='''+address.Text+''',';
           end;
        end;
    end;
  end;

begin
    gettagtext;  //获得SQL语句
    if cupdate then showmessage('ok');
    sqlstr:='';
    sqlstr1:='';
    TagInit;
    CClearData(ReaderF);
    id.SetFocus;
end;

procedure TReaderF.nameKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (key=vk_down) or (key=13) then
    begin
      selectnext(activecontrol,true,true);
      if activecontrol is tedit then
        (activecontrol as tedit).SelectAll;
    end
    else if (key=vk_up) then
    begin
      selectnext(activecontrol,false,true);
      if activecontrol is tedit then
        (activecontrol as tedit).SelectAll;
    end
    else
      key:=0;
end;

procedure TReaderF.ListBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=13 then BitBtn1Click(Sender);
end;

procedure TReaderF.BitBtn2Click(Sender: TObject);
begin
    close;
end;

procedure TReaderF.FormCreate(Sender: TObject);
begin
    caption:='读者管理';
    Icon:=mainf.Icon;
end;

end.

⌨️ 快捷键说明

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