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

📄 bookinfo.pas

📁 本图书管理系统一sql server为数据库开发平台
💻 PAS
字号:
unit BookInfo;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ToolWin,ExtCtrls,buttons, ADODB, ImgList,
  ExtDlgs, MyComboBox, Mask;

type
  TbookInfoForm = class(TForm)
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Label4: TLabel;
    Label5: TLabel;
    Edit2: TEdit;
    Label6: TLabel;
    Edit3: TEdit;
    Label7: TLabel;
    Edit4: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    Edit6: TEdit;
    Label10: TLabel;
    Edit7: TEdit;
    Label11: TLabel;
    Edit8: TEdit;
    Label12: TLabel;
    Edit9: TEdit;
    Memo1: TMemo;
    Label13: TLabel;
    GroupBox1: TGroupBox;
    Image1: TImage;
    OPDialog1: TOpenPictureDialog;
    Label3: TLabel;
    ComboBox4: TComboBox;
    ComboBox3: TMyComboBox;
    ComboBox2: TMyComboBox;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    Label14: TLabel;
    Label15: TLabel;
    procedure CreateParams(var Params: TCreateParams); override;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure showfield;
    procedure SpeedButton2Click(Sender: TObject);
    procedure setedit(value:Boolean);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure Customshowfield(const field,str:string);
    procedure ComboBox1Select(Sender: TObject);
    procedure ComboBox21KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox31KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox31Select(Sender: TObject);
    procedure ComboBox21Select(Sender: TObject);
    procedure writefield(test:boolean;fieldname:string;value:variant);
    procedure imagetotable;
    procedure Image1Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit8KeyPress(Sender: TObject; var Key: Char);
    procedure Edit6KeyPress(Sender: TObject; var Key: Char);
    procedure Edit7KeyPress(Sender: TObject; var Key: Char);
    procedure Edit9KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox4KeyPress(Sender: TObject; var Key: Char);
    procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure MaskEdit2KeyPress(Sender: TObject; var Key: Char);
 private

   procedure WMPAINT1(var msg:TMESSAGE);message WM_PAINT;
   procedure WMNCPAINT1(var msg:TWMNCPAINT);message WM_NCPAINT;
   procedure Active1(var msg:Tmessage);message WM_ACTIVATE;
   procedure WMNCLBUTTONDBLCLK1(var msg:Tmessage);message WM_NCLBUTTONDBLCLK;
       { Private declarations }
  public
    cbdrawdown:boolean;

    titleBmp:Tbitmap;
   // procedure FormCreate(Sender: TObject);
    { Public declarations }
  end;
var
   recordMemory:string;
   imagechanged:boolean;

implementation

uses MainForm,DataModule;
{$R *.dfm}
function MyShowmessage(text:Pchar):boolean; external 'resource.dll';

procedure TbookInfoForm.WMNCLBUTTONDBLCLK1(var msg:Tmessage);
begin
  //
end;
procedure TbookInfoForm.Active1(var msg:Tmessage);
begin
  self.WMPAINT1(msg);
end;

procedure TbookInfoForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  params.Style:=params.Style-WS_SYSMENU;
end;

procedure TbookInfoForm.WMPAINT1(var msg:TMESSAGE);
begin
  sendmessage(self.Handle,WM_NCPAINT,0,0);
  inherited;
end;

procedure TbookInfoForm.WMNCPAINT1(var msg:TWMNCPAINT);
var
  dc1:HDC;
  y,frame:integer;
  oldbrush:HBrush;
  oldpen,pen:HPEN;
  canvas:Tcanvas;
begin
  canvas:=Tcanvas.Create;
  dc1:=getwindowdc(Handle);
  y:=GetSystemMetrics(SM_CYSIZE);
  frame:=GetSystemMetrics(SM_CYSIZEFRAME);
  oldbrush:=selectobject(dc1,getstockobject(null_brush));
  pen:=createpen(PS_SOLID,1,rgb(155,155,155));
  oldpen:=selectobject(dc1,pen);
  RoundRect(dc1,0,0,Width,Height,12,12);
  pen:=createpen(PS_SOLID,frame*2-5,rgb(255,255,255));
  selectobject(dc1,pen);
  RoundRect(dc1,2,2,Width-2,Height-2,8,10);
  StretchBlt(dc1,frame,frame,Width-2*frame,y+frame div 2,titlebmp.Canvas.Handle,0,0,titlebmp.Width,titlebmp.Height,srccopy);
  canvas.Handle:=dc1;
  canvas.Brush.Style:=bsclear;
  canvas.TextOut(frame*3,(y-frame)div 2,self.Caption);
  selectobject(dc1,oldbrush);
  selectobject(dc1,oldpen);
  deleteObject(pen);
  canvas.Handle:=0;
  canvas.Free;
  releasedc(Handle,dc1);
end;

procedure TbookInfoForm.FormCreate(Sender: TObject);
begin
  titlebmp:=Tbitmap.Create;
  titlebmp.LoadFromResourceName(main.resource,'TItle');
end;

procedure TbookInfoForm.SpeedButton1Click(Sender: TObject);
begin
  setedit(true);
  speedbutton1.Enabled:=false;
  recordmemory:=combobox1.Text;
  combobox1.Enabled:=false;
end;

procedure TbookInfoForm.SpeedButton3Click(Sender: TObject);
begin
  data.PublicQuery.Close;
  close;
end;

procedure Tbookinfoform.setedit(value:Boolean);
var
  i:integer;
begin
  for i:=0 to self.panel1.ControlCount-1 do
  begin
    if self.panel1.Controls[i] is Tedit then
    begin
      (self.panel1.Controls[i] as Tedit).Enabled:=value;
      continue;
    end;
  end;
  maskedit1.Enabled:=value;
  maskedit2.Enabled:=value;
  combobox4.Enabled:=value;
  memo1.Enabled:=value;
end;


procedure TbookInfoForm.FormShow(Sender: TObject);
begin
  combobox1.Items.Clear;
  combobox2.Items.Clear;
  combobox3.Items.Clear;
  combobox4.Items.Clear;
  with data.PublicQuery do
  begin
    close;
    sql.Clear;
    sql.Add('select * from BookKind');
    open;
    while not eof  do
    begin
      combobox4.Items.Add(fieldbyname('KindName').AsString);
      next;
    end;
    close;
    sql.Clear;
    sql.Add('select * from bookinfo');
    open;
    while not eof do
    begin
      combobox1.Items.Add(fieldbyname('bookID').AsString);
      combobox2.Items.Add(fieldbyname('barcode').AsString);
      combobox3.items.Add(fieldbyname('bookname').AsString);
      next;
    end;
    first;
   end;
  showfield;
  recordmemory:=combobox1.text;
  setedit(false);
end;




procedure TbookInfoForm.showfield;
begin
  if data.PublicQuery.Active then
  with data.PublicQuery do
  begin
    combobox1.Text:=fieldbyname('bookid').AsString;
    combobox2.Text:=fieldbyname('barcode').AsString;
    combobox3.Text:=fieldbyname('bookname').AsString;
    edit3.Text:=fieldbyname('AuthorNation').AsString;
    maskedit1.Text:=copy(fieldbyname('PrintDate').AsString,0,4);
    maskedit2.Text:=copy(fieldbyname('PrintDate').AsString,6,8);
    //edit5.Text:=fieldbyname('PrintDate').AsString;
    edit8.Text:=fieldbyname('CDCount').AsString;
    edit7.Text:=fieldbyname('PageCount').AsString;
    edit2.Text:=fieldbyname('AuthorName').AsString;
    edit4.Text:=fieldbyname('Compny').AsString;
    edit6.Text:=fieldbyname('Version').AsString;
    edit9.Text:=fieldbyname('Place').AsString;
    Combobox4.Text:=fieldbyname('kindname').AsString;
    memo1.Text:=fieldbyname('Memo').AsString;
    if fieldbyname('picture').IsNull then
      image1.Picture.Assign(nil);
    image1.Picture.Assign(fieldbyname('picture'));
  end;
end;


procedure TbookInfoForm.SpeedButton2Click(Sender: TObject);
begin
  if not speedbutton1.Enabled then
  begin    //  change
    speedbutton1.Enabled:=true;
    if edit2.Modified then
      writefield(false,'AuthorName',edit2.Text);
    if edit3.Modified then
      writefield(false,'AuthorNation',edit3.Text);
    try
      if maskedit1.Modified or maskedit2.Modified then
         writefield(false,'PrintDate',maskedit1.EditText+'-'+maskedit2.EditText);
    except
    end;
    {if edit5.Modified then
      writefield(false,'PrintDate',edit5.Text);}
    if edit4.Modified then
      writefield(false,'Compny',edit4.Text);
    if edit6.Modified then
      writefield(false,'Version',edit6.Text);
    if edit7.Modified then
      writefield(false,'PageCount',strtoint(edit7.Text));
    if edit8.Modified then
      writefield(false,'CDCount',strtoint(edit8.Text));
    if edit9.Modified then
      writefield(false,'Place',edit9.Text);
    if memo1.Modified then
      writefield(false,'Memo',memo1.Text);
      writefield(true,'barcode',combobox2.Text);
      writefield(true,'bookname',combobox3.Text);
      writefield(false,'KindName',Combobox4.Text);
    if imagechanged then
      imagetotable;
    imagechanged:=false;
    combobox1.Enabled:=true;
    FormShow(self);
  end;  //change
end;

procedure Tbookinfoform.imagetotable;
begin
  with data.PublicQuery do
  begin
    close;
    sql.Clear;
    sql.Add('update bookinfo set picture=:value where bookid=:bookid');
    parameters.ParamByName('value').Assign(image1.picture);
    parameters.ParamByName('bookid').Value:=recordmemory;
    execsql;
  end;
end;
procedure TbookInfoForm.writefield(test:boolean;fieldname:string;value:variant);
begin
  with data.PublicQuery do
  begin
    if test then
      begin
        close;
        sql.Clear;
        sql.add('select * from bookinfo where '+fieldname+'=:value and not bookid=:bookid');
        parameters.parambyname('value').value:=value;
        parameters.ParamByName('bookid').Value:=recordmemory;
        open;
        if recordcount > 0 then
        begin
          myshowmessage(pchar('你所填写的字段值:'+vartostr(value)+' 与其他纪录的重复'));
          exit;
        end;
      end;
    close;
    sql.Clear;
    sql.Add('update bookinfo set '+fieldname+'=:value where bookid=:bookid');
    parameters.ParamByName('value').Value:=value;
    parameters.ParamByName('bookid').Value:=recordmemory;
    execsql;
  end;
end;

procedure TbookInfoForm.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  key:=#0;
end;

procedure TbookInfoForm.Customshowfield(const field,str:string);
begin
  with data.PublicQuery do
    begin
      close;
      sql.Clear;
      sql.Add('select * from bookinfo where '+field+'=:value');
      parameters.ParamByName('value').Value:=str;
      open;
      if recordcount <1 then
      begin
        myshowmessage('对不起!没有找到您所输入的纪录!');
      end;
    end;
  showfield;
end;

procedure TbookInfoForm.ComboBox1Select(Sender: TObject);
begin
  if speedbutton1.Enabled then
    Customshowfield('bookid',(sender as TCombobox).Text);
end;

procedure TbookInfoForm.ComboBox21KeyPress(Sender: TObject; var Key: Char);
begin
  if speedbutton1.Enabled  then
    if (key=#13) and (trim((sender as TMyCombobox).Text)<>'')then
    begin
      if not (sender as TMyCombobox).DroppedDown then
      begin
        Customshowfield('barcode',(sender as TmyCombobox).Text);
        if edit3.Enabled then
        edit3.SetFocus;
      end;
    end
    else
       (sender as TmyCombobox).DroppedDown:=true;
end;

procedure TbookInfoForm.ComboBox31KeyPress(Sender: TObject; var Key: Char);
begin
  if speedbutton1.Enabled  then
    if (key=#13) and (trim((sender as TMyCombobox).Text)<>'')then
    begin
      if not combobox3.DroppedDown then
      begin
        Customshowfield('bookname',(sender as TmyCombobox).Text);
        combobox2.SetFocus;
      end;
    end
    else
       combobox3.DroppedDown:=true;

end;

procedure TbookInfoForm.ComboBox31Select(Sender: TObject);
begin
 if speedbutton1.Enabled  then
    customshowfield('bookname',(sender as TmyCombobox).Text);
end;

procedure TbookInfoForm.ComboBox21Select(Sender: TObject);
begin
  if speedbutton1.Enabled  then
    Customshowfield('barcode',(sender as TmyCombobox).Text);
end;

procedure TbookInfoForm.Image1Click(Sender: TObject);
begin
  if not speedbutton1.Enabled then
    if  opdialog1.Execute then
    begin
      imagechanged:=true;
      image1.Picture.LoadFromFile(opdialog1.Filename);
    end;
end;

procedure TbookInfoForm.SpeedButton4Click(Sender: TObject);
begin
  setedit(false);
  imagechanged:=false;
  showfield;
  combobox1.Enabled:=true;
  speedbutton1.Enabled:=true;
end;

procedure TbookInfoForm.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    edit2.SetFocus;
end;

procedure TbookInfoForm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    maskedit1.SetFocus;
end;

procedure TbookInfoForm.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    edit4.SetFocus;
end;

procedure TbookInfoForm.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    edit8.SetFocus;
end;

procedure TbookInfoForm.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    edit6.SetFocus;
end;

procedure TbookInfoForm.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    edit7.SetFocus;
end;

procedure TbookInfoForm.Edit7KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    edit9.SetFocus;
end;

procedure TbookInfoForm.Edit9KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    combobox4.SetFocus;
end;

procedure TbookInfoForm.ComboBox4KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    memo1.SetFocus
  else
    key:=#0;

end;

procedure TbookInfoForm.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    maskedit2.SetFocus;
end;

procedure TbookInfoForm.MaskEdit2KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
    Edit4.SetFocus;
end;

end.

⌨️ 快捷键说明

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