📄 drmainunt.pas
字号:
unit drmainunt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, Grids, ExtCtrls, BaseGrid, AdvGrid;
type
Tdrmainfrm = class(TForm)
BitBtn1: TBitBtn;
BitBtn4: TBitBtn;
BitBtn3: TBitBtn;
Label4: TLabel;
Label3: TLabel;
Label6: TLabel;
Label5: TLabel;
Label2: TLabel;
Bevel1: TBevel;
AdvStringGrid1: TAdvStringGrid;
Label1: TLabel;
Edit1: TEdit;
Label7: TLabel;
ComboBox1: TComboBox;
Label8: TLabel;
Edit2: TEdit;
Label9: TLabel;
Edit3: TEdit;
BitBtn2: TBitBtn;
Label10: TLabel;
Label11: TLabel;
Label13: TLabel;
Label12: TLabel;
Label14: TLabel;
Edit4: TEdit;
Timer1: TTimer;
procedure FormActivate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Edit1Enter(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure ComboBox1Enter(Sender: TObject);
procedure ComboBox1Exit(Sender: TObject);
procedure Edit3Enter(Sender: TObject);
procedure Edit3Exit(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit2Exit(Sender: TObject);
procedure Edit2Enter(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure AdvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Timer1Timer(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
drmainfrm: Tdrmainfrm;
implementation
uses data,maind, mainunt,datam;
{$R *.dfm}
var
drno:integer;
procedure Tdrmainfrm.FormActivate(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:=main.Edit8.Text;
advstringgrid1.Cells[0,0]:='';
edit1.SetFocus;
label4.Caption:=formatdatetime('yyyy-mm-dd',date);
Label6.caption:=create_movein_no('moveinm');
advstringgrid1.Cells[1,0]:='货物条形码';
advstringgrid1.Cells[2,0]:='标准零售价';
advstringgrid1.Cells[3,0]:='调入数量';
advstringgrid1.Cells[4,0]:='金额';
drno:=1;
end;
procedure Tdrmainfrm.BitBtn4Click(Sender: TObject);
begin
close;
end;
procedure Tdrmainfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
drmainfrm:=nil;
drmainfrm.Free;
end;
procedure Tdrmainfrm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
Perform(CM_DialogKey,Vk_TAB,0);
key:=#0;
end;
end;
procedure Tdrmainfrm.Edit1Enter(Sender: TObject);
begin
Edit1.Color:=clSkyBlue;
end;
procedure Tdrmainfrm.Edit1Exit(Sender: TObject);
begin
Edit1.color:=clWindow;
if (length(edit1.Text)<>15) and (edit1.Text<>'') then
begin
messagedlg('对不起!条形码不等于15位',mtError,[mbOk],0);
edit1.SetFocus;
end;
with dataman.mrQuery do
begin
close;
sql.Clear;
sql.Add('select distinct 单价 from kc where 货物条形码='''+trim(edit1.Text)+'''');
open;
if not IsEmpty then edit3.Text:=floattostr(Fields[0].Value)
else edit3.Text:='';
end;
end;
procedure Tdrmainfrm.ComboBox1Enter(Sender: TObject);
begin
ComboBox1.Color:=clSkyBlue;
end;
procedure Tdrmainfrm.ComboBox1Exit(Sender: TObject);
begin
ComboBox1.color:=clWindow;
end;
procedure Tdrmainfrm.Edit3Enter(Sender: TObject);
begin
Edit3.Color:=clSkyBlue;
end;
procedure Tdrmainfrm.Edit3Exit(Sender: TObject);
begin
Edit3.color:=clWindow;
end;
procedure Tdrmainfrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
key:=#0;
end;
end;
procedure Tdrmainfrm.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
key:=#0;
end;
end;
procedure Tdrmainfrm.Edit2Exit(Sender: TObject);
begin
Edit2.Color:=clWindow;
end;
procedure Tdrmainfrm.Edit2Enter(Sender: TObject);
begin
Edit2.Color:=clSkyBlue;
end;
procedure Tdrmainfrm.BitBtn2Click(Sender: TObject);
var
i:integer;
begin
if (edit1.Text='') or (edit2.Text='') or (edit3.Text='') then
begin
showmessage('请输入完整的信息!');
edit1.SetFocus;
end
else
begin
for i:=1 to advstringgrid1.RowCount do
begin
if trim(edit1.Text)=trim(advstringgrid1.Cells[1,i]) then
begin
advstringgrid1.Cells[3,i]:=inttostr(strtoint(trim(advstringgrid1.Cells[3,i]))+strtoint(trim(edit2.Text)));
edit1.Text:='';
edit1.SetFocus;
edit3.Text:='';
break;
exit;
end;
end;
for i:=advstringgrid1.RowCount downto 1 do
begin
if trim(edit1.Text)<>trim(advstringgrid1.cells[1,i]) then
begin
advstringgrid1.Cells[0,drno]:=inttostr(drno);
advstringgrid1.Cells[1,drno]:=trim(edit1.Text);
advstringgrid1.Cells[2,drno]:=trim(edit3.Text);
advstringgrid1.Cells[3,drno]:=trim(edit2.Text);
drno:=drno+1;
advstringgrid1.RowCount:=drno;
edit1.Text:='';
edit1.SetFocus;
edit3.Text:='';
break;
exit;
end;
break;
end;
end;
end;
procedure Tdrmainfrm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
key:=#0;
end;
end;
procedure Tdrmainfrm.AdvStringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s:string;
r:TRect;
begin
with advStringGrid1 do
begin
Canvas.FillRect(Rect);
if ACol = 4 then
begin
Canvas.Font.Color := clred;
canvas.Font.Style:=[fsBold];
end;
s:=Cells[ACol,ARow];
r:=Rect;
DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
end;
procedure Tdrmainfrm.Timer1Timer(Sender: TObject);
var
j,quality:integer;
totalth:real;
begin
totalth:=0;
quality:=0;
for j:=1 to advstringgrid1.RowCount do
begin
if advstringgrid1.Cells[1,j]='' then break;
advstringgrid1.Cells[4,j]:=floattostr(strtofloatdef(trim(advstringgrid1.Cells[2,j]),0)*strtointdef(trim(advstringgrid1.Cells[3,j]),0));
totalth:=strtofloatdef(trim(advstringgrid1.cells[4,j]),0)+totalth;
label11.Caption:=floattostr(totalth);
quality:=strtoint(trim(advstringgrid1.cells[3,j]))+quality;
label12.Caption:=inttostr(quality);
end;
end;
procedure Tdrmainfrm.BitBtn1Click(Sender: TObject);
var
i:integer;
begin
timer1.Enabled:=false;
try
dataman.ADOCon.BeginTrans;
//更新进货单据表
with dataman.dcQuery do
begin
close;
sql.Clear;
sql.Add('insert into moveinm');
sql.Add('values(:dj,:yf,:js,:je,:jsj,:jsr)');
parameters.ParamByName('dj').Value:=trim(label6.Caption);
parameters.ParamByName('yf').Value:=trim(combobox1.text);
parameters.ParamByName('js').Value:=strtoint(trim(label12.Caption));
parameters.ParamByName('je').Value:=strtofloat(trim(label11.Caption));
parameters.ParamByName('jsj').Value:=date();
parameters.ParamByName('jsr').Value:=trim(edit4.Text);
prepared;
execsql;
//end;
//更新进货明细表
close;
for i:=1 to drno do
begin
if trim(advstringgrid1.Cells[1,i])='' then break;
sql.Clear;
sql.Add('insert into movein');
sql.Add('values(:dj,:ht,:djq,:shl,:je)');
parameters.ParamByName('dj').Value:=trim(label6.Caption);
parameters.ParamByName('ht').Value:=trim(advstringgrid1.Cells[1,i]);
parameters.ParamByName('djq').Value:=strtofloat(trim(advstringgrid1.Cells[2,i]));
parameters.ParamByName('shl').Value:=strtoint(trim(advstringgrid1.Cells[3,i]));
parameters.ParamByName('je').Value:=strtofloat(trim(advstringgrid1.Cells[4,i]));
prepared;
execsql;
//更新库存
sql.Clear;
sql.Add('select * from kc where 货物条形码 ='''+trim(advstringgrid1.Cells[1,i])+'''');
open;
if IsEmpty then
begin
sql.Clear;
sql.Add('insert into kc (货物条形码,库存数量,单价) values('''+trim(advstringgrid1.Cells[1,i])+''',:tno,:djd)');
parameters.ParamByName('djd').Value:=strtoint(advstringgrid1.Cells[2,i]);
parameters.ParamByName('tno').Value:=strtoint(advstringgrid1.Cells[3,i]);
execsql;
end
else
begin
sql.Clear;
sql.Add('update kc set 库存数量=库存数量+:tno where 货物条形码='''+trim(advstringgrid1.Cells[1,i])+'''');
parameters.ParamByName('tno').Value:=strtoint(advstringgrid1.Cells[3,i]);
execsql;
end;
end; //结束循环
end;
dataman.ADOCon.CommitTrans;
showmessage('调入单据为'+trim(label6.Caption)+'存盘成功!');
except
dataman.ADOCon.RollbackTrans;
showmessage('调入单据为'+trim(label6.Caption)+'存盘失败!');
end;
end;
procedure Tdrmainfrm.BitBtn3Click(Sender: TObject);
var
fd:textfile;
drfile,dr:string;
i:integer;
begin
try
drfile:=ExtractFilePath(Application.ExeName)+'drout.txt';
AssignFile(fd,drfile);
Rewrite(fd);
write(fd,chr(27)+chr(64));
dr:=stringOfChar(' ',(32-Length('牧羊人服饰'+ini_load_shopname('打印参数','和祥店')+'调入清单')) div 2)+'牧羊人服饰'+ini_load_shopname('打印参数','和祥店')+'调入清单';
write(fd,dr+chr(10));
write(fd,(formatdatetime('yyyy"年"mm"月"dd"日" hh"点"mm"分" ampm',now)+chr(10)):18);
write(fd,('源分店:'+trim(combobox1.Text)):14);
write(fd,('单据号:'+trim(label6.caption)):16);
write(fd,('经手人:'+trim(edit4.Text)):16);
writeln(fd,'--------------------------------');
// 12345678901234567890123456789012
write(fd,'商品条形码 零售价 数量 金额'+chr(10));
write(fd,'--------------------------------');
for i:=1 to drno do
begin
if advstringgrid1.Cells[1,i]='' then break;
write(fd,trim(advstringgrid1.cells[1,i]):15);
write(fd,trim(advstringgrid1.cells[2,i]):5);
write(fd,trim(advstringgrid1.cells[3,i]):5);
write(fd,trim(advstringgrid1.cells[4,i]):5);
write(fd,chr(10));
end;
Writeln(fd,' ');
write(fd,'-------------------------------');
Writeln(fd,('调入总数:'+trim(label12.Caption)):16);
Writeln(fd,('调入总金额:'+trim(label11.Caption)):16);
Writeln(fd,' ');
Writeln(fd,' ');
Writeln(fd,' ');
Writeln(fd,' ');
Writeln(fd,' ');
CloseFile(fd);
PrintFile(drfile);
except
abort;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -