📄 unitprodvoucher.~pas
字号:
unit UnitProdVoucher;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Buttons, ExtCtrls, StdCtrls, Grids, DBGrids, DBCtrls, Db,
DBTables, Mask;
type
TfrmProdVoucher = class(TForm)
PCInOut: TPageControl;
TabSheet1: TTabSheet;
DBGrid1: TDBGrid;
TabSheet2: TTabSheet;
DBGrid2: TDBGrid;
Label1: TLabel;
lDate: TLabel;
Label3: TLabel;
lInOut: TLabel;
Bevel1: TBevel;
Label2: TLabel;
sbYesterday: TSpeedButton;
sbTomrrow: TSpeedButton;
dtpDate: TDateTimePicker;
bbCard: TBitBtn;
bbCardView: TBitBtn;
bbDelete: TBitBtn;
bbCancel: TBitBtn;
bbViewStock: TBitBtn;
TabSheet3: TTabSheet;
DBGrid3: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
Table1CardID: TStringField;
Table1OutDate: TDateField;
Table1ProdID: TStringField;
Table1ProcBatID: TStringField;
Table1Number: TIntegerField;
Table1Box: TFloatField;
Table1OuterID: TStringField;
Table1ManufacturerID: TStringField;
Table1Note: TStringField;
Table1ProdName: TStringField;
Table1FigID: TStringField;
Table1Manufacturer: TStringField;
Table1Outer: TStringField;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
Button2: TButton;
DBEdit6: TDBEdit;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Label10: TLabel;
Label11: TLabel;
Button3: TButton;
BitBtn1: TBitBtn;
DBEdit7: TDBEdit;
Label5: TLabel;
Label12: TLabel;
Button1: TButton;
procedure PCInOutChange(Sender: TObject);
procedure bbCardClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure sbTomrrowClick(Sender: TObject);
procedure sbYesterdayClick(Sender: TObject);
procedure bbDeleteClick(Sender: TObject);
procedure bbCardViewClick(Sender: TObject);
procedure bbViewStockClick(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure DBGrid2DblClick(Sender: TObject);
procedure dtpDateChange(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
// procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
procedure BitBtn1Click(Sender: TObject);
procedure DBEdit1Enter(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure DBEdit3Enter(Sender: TObject);
procedure DBEdit3Exit(Sender: TObject);
procedure DBEdit2Enter(Sender: TObject);
procedure bbCancelClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
bInOut:boolean;
procedure zdyShowfilterCard(dfilterDate:TDate); // 过滤当前日期
end;
var
frmProdVoucher: TfrmProdVoucher;
i:integer;
implementation
uses UnitDM, UnitProdInCard, UnitProdOutCard, UnitProdStock, UnitQueryID,
UnitProdMain;
{$R *.DFM}
//=========================================================
// 实现过程 过滤当前日期记录
//=========================================================
procedure TfrmProdVoucher.zdyShowfilterCard(dfilterDate:TDate);
var
sCardID:string;
begin
dtpDate.date:=dfilterDate;
sCardID:=formatdatetime('yymmdd',dtpDate.date);
lDate.Caption:=formatdatetime('yyyy"年"mm"月"dd"日"',dtpDate.date);
//========================================================
// 判断当前状态是入还是出库 改变界面上的某些颜色,字体设置
//=========================================================
if bInOut then //是入库
begin
pcInOut.ActivePageIndex:=0;
bbCard.caption:='填写入库单'+#13+'(Enter)';
lInOut.Font.Color:=clblue;
lInOut.caption:='入库单';
end
else //是出库
begin
pcInOut.ActivePageIndex:=1;
bbCard.caption:='填写出库单'+#13+'(Enter)';
lInOut.Font.Color:=clred;
lInOut.caption:='出库单';
end; //if
//===================
//table开始过滤
//===================
with dm.tabProdInCard do
begin
Open;
filter:=format('CardID = ''%S''',[sCardID+'*']); //默认过滤条件是今天
if not filtered then //开始过滤
filtered:= true;
end;//with
with dm.tabProdOutCard do
begin
Open;
filter:=format('CardID = ''%S''',[sCardID+'*']); //默认过滤条件是今天
if not filtered then //开始过滤
filtered:= true;
end;//with
end;
procedure TfrmProdVoucher.PCInOutChange(Sender: TObject);
begin
case pcInOut.ActivePageIndex of
0: bInOut:=true ;
1: bInOut:=false;
2: if pcInOut.ActivePageIndex=2 then
begin
DateTimePicker1.date:=date-30;
DateTimePicker2.date:=date;
bbCard.visible:=false;
bbCardView.visible:=false;
bbDelete.visible:=false;
bbViewStock.visible:=false;
bbCancel.visible:=false;
dtpDate.visible:=false;
sbYesterday.visible:=false;
sbTomrrow.visible:=false;
Label2.visible:=false;
Bevel1.visible:=false;
Label1.visible:=false;
Label3.visible:=false;
lInOut.visible:=false;
Button2.enabled:=false;
exit;
end;
end; //case
bbCard.visible:=true;
bbCardView.visible:=true;
bbDelete.visible:=true;
bbViewStock.visible:=true;
bbCancel.visible:=true;
dtpDate.visible:=true;
sbYesterday.visible:=true;
sbTomrrow.visible:=true;
Label2.visible:=true;
Bevel1.visible:=true;
Label1.visible:=true;
Label3.visible:=true;
lInOut.visible:=true;
zdyShowfilterCard(dtpDate.date);
end;
procedure TfrmProdVoucher.bbCardClick(Sender: TObject);
var
sCardID:string;
begin
if( dtpdate.date-1) <= dm.zdyGetProdCheckDate then
begin
showmessage('记帐日期不能在结帐之前'+#13+#13+'结帐日期是:'+datetostr(dm.zdyGetProdCheckDate));
exit;
end; //if
//==========================================
// 设置入,出库单上的eDate, dbeCardID的值
//==========================================
sCardID:=dm.zdyProdCardID(dtpDate.date);
if bInOut then //入库
begin
with frmProdInCard do
begin
with dm.tabProdIncard do
begin
if not active then open;
append;
end;//with
dbeDate.text:=datetostr(dtpDate.date);
dbeCardID.text:=sCardID;
sInDate:=dbeDate.text;
sInID:=dbeCardID.text;
activecontrol:=dbeProdName;
top:=50;
showmodal;
end;//with
end
else //领料
begin
with frmProdOutCard do
begin
with dm.tabProdOutcard do
begin
if not active then open;
append;
end;//with
dbeDate.text:=datetostr(dtpDate.date);
dbeCardID.text:=sCardID;
sOutDate:=dbeDate.text;
sOutID:=dbeCardID.text;
activecontrol:=dbeProdName;
top:=50;
showmodal;
end;//with
end; //if
end;
procedure TfrmProdVoucher.FormCreate(Sender: TObject);
begin
bInOut:=true;
i:=0;
end;
procedure TfrmProdVoucher.sbTomrrowClick(Sender: TObject);
begin
dtpdate.date:=dtpdate.date+1;
if (dtpdate.date-1)<= dm.zdyGetProdCheckDate then
begin
showmessage('记帐日期不能在结帐之前'+#13+#13+'结帐日期是:'+datetostr(dm.zdyGetProdCheckDate));
exit;
end; //if
zdyShowfilterCard(dtpdate.date);
end;
procedure TfrmProdVoucher.sbYesterdayClick(Sender: TObject);
begin
dtpdate.date:=dtpdate.date - 1;
if (dtpdate.date-1) <= dm.zdyGetProdCheckDate then
begin
showmessage('记帐日期不能在结帐之前'+#13+#13+'结帐日期是:'+datetostr(dm.zdyGetProdCheckDate));
exit;
end; //if
zdyShowfilterCard(dtpdate.date);
end;
procedure TfrmProdVoucher.bbDeleteClick(Sender: TObject);
begin
//==============================
// 检查表格是否为空
//==============================
if dm.zdyProdIFBlank(bInOut) then
begin
showmessage('没有记录');
exit;
end; //if
if MessageDlg('真的要删除该记录吗?',mtwarning,[mbyes,mbno],0) = mryes then
begin
if bInOut then
dm.tabProdIncard.delete
else
dm.tabProdOutCard.delete;
end; //if
//===========================
// 更新仓库记录
//===========================
frmProdStock.zdyCurStock(dm.zdyGetProdCheckDate);
end;
procedure TfrmProdVoucher.bbCardViewClick(Sender: TObject);
begin
//==============================
// 检查表格是否为空
//==============================
if dm.zdyProdIFBlank(bInOut) then
begin
showmessage('没有记录');
exit;
end; //if
//===================================
// 设置table 控件 为编辑状态 dsEdit
//===================================
if bInOut and (dm.tabProdIncard.active) then
begin
with frmProdInCard do
begin
showmodal;
end; //with
end
else if (not bInOut) and (dm.tabProdOutCard.active) then
begin
with frmProdOutCard do
begin
showmodal;
end; //with
end
else
showmessage('没有记录!');
end;
procedure TfrmProdVoucher.bbViewStockClick(Sender: TObject);
var
sProdID:string;
dDate:TDate;
begin
//==============================
// 检查表格是否为空
//==============================
// if dm.zdyProdIFBlank(bInOut) then
// begin
// showmessage('没有记录');
// exit;
//end; //if
//==============================
// 查看该物品的库存
//==============================
if bInOut then
sProdID:=dm.tabProdIncard.fieldbyname('ProdID').asstring
else
sProdID:=dm.tabProdOutcard.fieldbyname('ProdID').asstring;
with dm.tabProdStock do
begin
open;
setkey;
if not findkey([sProdID]) then
begin
showmessage('请先查出该产品或任一产品,'+#13'然后再按“查看库存”键!');
exit;
end; //if
end; //with
frmProdStock.showmodal;
end;
procedure TfrmProdVoucher.DBGrid1DblClick(Sender: TObject);
begin
bbCardViewClick(sender);
end;
procedure TfrmProdVoucher.DBGrid2DblClick(Sender: TObject);
begin
bbCardViewClick(sender);
end;
procedure TfrmProdVoucher.dtpDateChange(Sender: TObject);
begin
zdyShowfilterCard(dtpdate.date);
end;
procedure TfrmProdVoucher.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
try
if ((Key>57) and (Key<48)) or ((Key<96) and (Key>110)) then
// exit;
// if Key=190 then
exit;
except
end;
end;
procedure TfrmProdVoucher.Button2Click(Sender: TObject);
begin
if (dm.zdyGetProdCheckDate >= strtodatetime(DBEdit7.Text)) then
begin
showmessage('您选择的结帐日期早于上次结帐日期!'+#13+#13+'上次结帐日期是:'+datetostr(dm.zdyGetprodCheckDate));
// showmodal;
//frmProdMain.Visible:=true;
exit;
end; // if
if i<>1 then
begin
showmessage('要修改记录,请先按“修改”按钮!');
exit;
end;
Table1.open;
Table1.edit;
Table1.post;
DBEdit6.text:='';
DBEdit1.text:='';
DBEdit2.text:='';
DBEdit3.text:='';
DBEdit4.text:='';
DBEdit5.text:='';
DBEdit7.text:='';
i:=0;
end;
procedure TfrmProdVoucher.Button3Click(Sender: TObject);
begin
dm.tabManufacturer.filtered:=false;
Table1.open;
Table1.Filtered:=true;
end;
procedure TfrmProdVoucher.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
var
sfrom,sto :Tdate;
begin
sfrom:=DateTimePicker1.date;
sto:=DateTimePicker2.date;
if (Table1.fieldbyname('OutDate').asdatetime>=sfrom) and (Table1.fieldbyname('OutDate').asdatetime<=sto) then
Accept:=true
else
Accept:=false;
end;
procedure TfrmProdVoucher.BitBtn1Click(Sender: TObject);
begin
table1.Close;
close;
end;
procedure TfrmProdVoucher.DBEdit1Enter(Sender: TObject);
begin
if i<>1 then
begin
showmessage('要修改记录,请先按“修改”按钮!');
exit;
end;
frmCommQueryID.PageControl1.ActivePageIndex:=1;
frmCommQueryID.ActiveControl:=frmCommQueryID.dbgProdDictionary;
if frmCommQueryID.showmodal = mrok then
begin
DBEdit1.SetFocus;
DBEdit1.text:=frmCommQueryID.query1.fieldbyname('ProdID').asstring;
end;
end;
procedure TfrmProdVoucher.Button1Click(Sender: TObject);
begin
if (DBEdit1.text='') or (DBEdit2.text='') or (DBEdit3.text='') or (DBEdit6.text='') then
begin
showmessage('请先找出要修改的记录!');
exit;
end;
i:=1;
Button2.enabled:=true;
//Table1.open;
Table1.edit;
end;
procedure TfrmProdVoucher.DBEdit3Enter(Sender: TObject);
begin
if i<>1 then
begin
showmessage('要修改记录,请先按“修改”按钮!');
exit;
end;
frmCommQueryID.top:=DBEdit3.Height+DBEdit3.top;
frmCommQueryID.left:=DBEdit3.left;
//Table2.Close;
DBEdit3.color:=claqua;
frmCommQueryID.PageControl1.ActivePageIndex:=2;
frmCommQueryID.ActiveControl:=frmCommQueryID.dbgManufacturer;
if frmCommQueryID.showmodal = mrok then
begin
DBEdit3.text:=frmCommQueryID.Query4.fieldbyname('ManufacturerID').asstring;
//with dm.tabManufacturer do
//begin
// filter:=format('ManufacturerID = ''%S''',[Edit1.text]);
//filtered:=true;
//close;
//open;
//end; //with
end; //if
end;
procedure TfrmProdVoucher.DBEdit3Exit(Sender: TObject);
begin
DBEdit3.color:=clwindow;
end;
procedure TfrmProdVoucher.DBEdit2Enter(Sender: TObject);
begin
if i<>1 then
begin
showmessage('要修改记录,请先按“修改”按钮!');
exit;
end;
end;
procedure TfrmProdVoucher.bbCancelClick(Sender: TObject);
begin
dm.tabProdOutcard.Close;
dm.tabProdincard.close;
frmProdMain.show;
close;
end;
procedure TfrmProdVoucher.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dm.tabProdOutcard.Close;
dm.tabProdincard.close;
frmProdMain.show;
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -