📄 bookin.pas
字号:
unit BookIn;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ToolWin,ExtCtrls,buttons, ADODB, ImgList, DB,
Grids, DBGrids;
type
TBookInForm = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Edit2: TEdit;
Edit1: TEdit;
Label2: TLabel;
GroupBox1: TGroupBox;
DBGrid1: TDBGrid;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Label6: TLabel;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Label9: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
function Codecreate(var query:TADOQUERY;const codeclass,table:string):string;
function IDcreate:string;
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure clearedit(value:boolean);
procedure DBGrid1CellClick(Column: TColumn);
procedure SpeedButton1Click(Sender: TObject);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure FormDestroy(Sender: TObject);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure Edit5Change(Sender: TObject);
private
procedure CreateParams(var Params: TCreateParams); override;
procedure WMPAINT1(var msg:TMESSAGE);message WM_PAINT;
procedure WMNCPAINT1(var msg:TWMNCPAINT);message WM_NCPAINT;
procedure Active(var msg:Tmessage);message WM_ACTIVATE;
procedure WMNCLBUTTONDBLCLK1(var msg:Tmessage);message WM_NCLBUTTONDBLCLK;
{ Private declarations }
public
titleBmp:Tbitmap;
{ Public declarations }
end;
var
insertorchange,fond:boolean;
implementation
uses MainForm,DataModule;
{$R *.dfm}
function MyShowmessage(text:Pchar):boolean; external 'resource.dll';
procedure TBookInForm.WMNCLBUTTONDBLCLK1(var msg:Tmessage);
begin
//
end;
procedure TBookInForm.Active(var msg:Tmessage);
begin
self.WMPAINT1(msg);
end;
procedure TBookInForm.CreateParams(var Params: TCreateParams);
begin
inherited;
params.Style:=params.Style-WS_SYSMENU;
end;
procedure TBookInForm.WMPAINT1(var msg:TMESSAGE);
begin
sendmessage(self.Handle,WM_NCPAINT,0,0);
inherited;
end;
procedure TBookInForm.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 TBookInForm.FormCreate(Sender: TObject);
begin
titlebmp:=Tbitmap.Create;
titlebmp.LoadFromResourceName(main.resource,'TItle');
end;
function TBookInForm.Codecreate(var query:TADOQUERY;const codeclass,table:string):string;
var
code:string;
begin
Randomize;
result:='0000000000';
repeat
code:=codeclass+FormatDateTime('yyyymmdd',date)+'N'+inttostr(random(9999));
with query do
begin
close;
sql.Clear;
sql.Add('select * from '+table+' where BillID=:rd');
parameters.ParamByName('rd').Value:=code;
open;
end;
until query.RecordCount<1;
result:=code;
end;
function TBookInForm.IDcreate:string;
var
i:integer;
begin
with data.PublicQuery do
begin
result:='0001';
close;
sql.Clear;
sql.Add('select ID from Booksave order by ID');
open;
for i:=1 to 9999 do
begin //for
while not eof do
begin //while
if strtoint(fieldbyname('ID').AsString)=i then
begin
Break;
end
else
if i<10 then
result := '000'+inttostr(i)
else
if i<100 then
result:='00'+inttostr(i)
else
if i<1000 then
result:='0'+inttostr(i)
else
if i<10000 then
result:=inttostr(i);
next;
end; // while
end; // for
end;
end;
procedure TBookInForm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
try
if not (key in ['0'..'9',char(VK_Back),#13]) then
key:=#0;
if (key=#13) and (trim(edit2.Text)<>'')then
begin // begin
with data.LendQuery do
begin
close;
sql.Clear;
sql.Add('select * from booksave where barcode = '+''''+trim(edit2.Text)+'''');
//parameters.ParamByName('code').Value:=edit2.Text;
open;
if recordcount > 0 then
begin // if >0
edit1.text:=fieldbyname('ID').AsString;
edit3.Text:=fieldbyname('bookname').AsString;
edit4.Text:=Floattostr(Fieldbyname('price').asfloat);
edit6.Text:=edit4.Text;
end
else
begin
edit1.text:='';
edit3.Text:='';
end;
end;
with data.SellQuery do
begin
if label9.Caption ='' then
begin ///////////////////////////label null create table
repeat //create temp table
label9.Caption:=Codecreate(data.sellquery,'RK','bookin');
close;
sql.Clear;
sql.Add('select * from sysobjects where name=:name');
parameters.ParamByName('name').Value:=label9.Caption;
open;
until (recordcount<1);
close;
sql.Clear;
sql.Add('create table '+label9.Caption);
sql.Add(' ([BillId] [varchar] (20),[BookId] [varchar] (20),');
sql.Add('[BookName] [varchar] (30),[Price] [numeric](18, 2) NULL,');
sql.Add('[InNumber] [int] NULL,[SumPrice] [numeric](18, 2) NULL,');
sql.Add('[Indate] [datetime] NULL ,[HandMan] [varchar] (10) NULL,');
sql.Add('[Worker] [varchar] (10) NULL )');
execsql;
end;//////////////////////////////////createtable;
if trim(edit3.text)<>'' then
begin // if >0
close;
sql.Clear;
sql.Add('select * from '+label9.Caption+' where bookid=:bookid');
parameters.ParamByName('BookID').Value:=edit1.text;
open;
if recordcount>0 then
begin
close;
sql.Clear;
sql.Add('update '+label9.Caption+' set InNumber=InNumber+1 where bookname=:bookname');
parameters.ParamByName('bookname').Value:=edit3.Text;
execsql;
clearedit(false);
edit2.Enabled:=true;
edit2.SetFocus;
end
else
begin
close;
sql.Clear;
sql.Add('insert into '+label9.Caption);
sql.Add(' (BillID,BookID,BookName,Indate,InNumber,HandMan,Price,SumPrice,worker) ');
sql.Add('values(:BillID,:BookID,:BookName,:indate,:InNumber,:HandMan,:Price,:SumPrice,:worker)');
parameters.ParamByName('BillID').Value:=label9.Caption;
parameters.ParamByName('BookID').Value:=edit1.text;
parameters.ParamByName('BookName').Value:=Edit3.Text;
parameters.ParamByName('InNumber').Value:=1;
parameters.ParamByName('Indate').Value:=date;
parameters.ParamByName('HandMan').Value:=edit7.Text;
parameters.ParamByName('Price').Value:=strtofloat(edit4.Text);
parameters.ParamByName('SumPrice').Value:=strtofloat(edit6.Text);
parameters.ParamByName('worker').Value:=main.userPurview.username;
execsql;
edit5.Enabled:=true;
edit5.SetFocus;
end;
fond:=true;
speedbutton2.Enabled:=true;
end // if >0
else
begin //>0 else
myshowmessage('该书在库存中没有找到,请输入详细信息!');
fond:=false;
edit1.Text:=idcreate;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -