📄 unitprodoutcard.pas
字号:
unit UnitProdOutCard;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Mask, DBCtrls, ExtCtrls, Db, DBTables, Grids, DBGrids;
type
TfrmProdOutCard = class(TForm)
Label2: TLabel;
Label3: TLabel;
Panel1: TPanel;
Panel7: TPanel;
Panel9: TPanel;
Panel10: TPanel;
Panel17: TPanel;
dbeNote: TDBEdit;
dbeNum: TDBEdit;
dbeProdID: TDBEdit;
dbeProdName: TDBEdit;
bbPrior: TBitBtn;
bbNext: TBitBtn;
bbPost: TBitBtn;
bbClose: TBitBtn;
dbeCardID: TDBEdit;
Panel3: TPanel;
dbeFigID: TDBEdit;
Panel4: TPanel;
dbeProcID: TDBEdit;
Panel5: TPanel;
bbLocal: TBitBtn;
dbeDate: TDBEdit;
Panel6: TPanel;
dbeBox: TDBEdit;
Panel2: TPanel;
DBEdit1: TDBEdit;
dbeManufacturer: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
dbeOuter: TDBEdit;
procedure dbeProdNameEnter(Sender: TObject);
procedure dbeProdNameExit(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure bbPostClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbLocalClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure bbPriorClick(Sender: TObject);
procedure bbNextClick(Sender: TObject);
procedure dbeDateEnter(Sender: TObject);
procedure dbeCardIDEnter(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
sOutDate,sOutID:string;
end;
var
frmProdOutCard: TfrmProdOutCard;
implementation
uses UnitDM, UnitQueryID, UnitProdVoucher, UnitProdStock, UnitProdInCard,
UnitProdOutInCard;
{$R *.DFM}
procedure TfrmProdOutCard.dbeProdNameEnter(Sender: TObject);
begin
frmCommQueryID.top:=frmProdOutCard.Height+frmProdOutCard.top;
frmCommQueryID.left:=frmProdOutCard.left;
TDBEdit(sender).color:=claqua;
if dm.tabProdOutCard.state = dsinsert then
begin
case (sender as TDBEdit).tag of
1: // if the TDBEdit is dbeProdName
begin
frmCommQueryID.PageControl1.ActivePageIndex:=1;
//frmCommQueryID.table2.open;
frmCommQueryID.ActiveControl:=frmCommQueryID.dbgProdDictionary;
if frmCommQueryID.showmodal = mrok then
begin
dbeProdID.SetFocus;
dbeProdID.text:=frmCommQueryID.Query1.fieldbyname('ProdID').asstring;
// dbeFigID.text:=dm.tabProdDictionary.fieldbyname('FigID').asstring;
end; //if
dbeNum.setfocus;
end; // case 1
2: // if the TDBEdit is dbeChecker
begin
frmCommQueryID.eStaffID.text:='';
frmCommQueryID.PageControl1.ActivePageIndex:=0;
//frmCommQueryID.table1.open;
frmCommQueryID.ActiveControl:=frmCommQueryID.eStaffID;
if frmCommQueryID.showmodal = mrok then
begin
DBEdit3.Text:=frmCommQueryID.Query3.fieldbyname('Staffid').asstring;
dbeOuter.text:=frmCommQueryID.Query3.fieldbyname('Staffname').asstring;
end; //if
dbeManufacturer.setfocus;
end; //case 2
3:
begin
frmCommQueryID.PageControl1.ActivePageIndex:=2;
frmCommQueryID.ActiveControl:=frmCommQueryID.dbgManufacturer;
if frmCommQueryID.showmodal = mrok then
begin
dbeManufacturer.text:=frmCommQueryID.Query4.fieldbyname('Manufacturer').asstring;
DBEdit1.text:=frmCommQueryID.Query4.fieldbyname('Manufacturerid').asstring;
end; //if
dbeNote.setfocus;
end; //case 3
4: // if the TDBEdit is dbeNumber
begin
if dbeProdName.text <> '' then
begin
with dm.tabProdStock do
begin
filter:=format('ProdID = ''%S''',[dbeProdID.text]);
filtered:=true;
close;
open;
if fieldbyname('number').asinteger=0 then
begin
showmessage('该产品无库存!');
exit;
end;
end; //with
dbeNum.setfocus;
//with frmProdOutInCard do
// begin
frmProdOutInCard.show;
// end; //with
//frmProdOutCard.SetFocus;
end; //if
if dbeProdName.text = '' then
begin
showmessage('请输入产品名称!');
exit;
end;
end; //case 4
end; // then Case statement is over
//恢复过滤Table属性
//tabProdDictionary tabStaff tabManufacturer tabWorkShop
dm.tabProdDictionary.filtered:=false;
dm.tabProdDictionary.filter:='';
dm.tabStaff.filtered:=false;
dm.tabStaff.filter:='';
dm.tabManufacturer.filtered:=false;
dm.tabManufacturer.filter:='';
end; //if
end;
procedure TfrmProdOutCard.dbeProdNameExit(Sender: TObject);
var
fBox:real;
sProdID:string;
iNum:integer;
begin
TDBEdit(sender).color:=clwindow;
if dm.tabProdOutCard.State = dsinsert then
begin
case (sender as TDBEdit).tag of
4: // if the TDBEdit is dbeManufacturer
begin
if (dbeProdName.text = '') or (dbenum.text = '') then
exit;
sProdID:=dbeProdID.text;
with dm.tabProdStock do
begin
open;
setkey;
if not findkey([sProdID]) then
begin
showmessage('该产品无库存!');
exit;
end
else
iNum := fieldbyname('Number').asinteger;
end; //with
if iNum < strtoint(dbeNum.text) then
begin
frmProdOutInCard.close;
showmessage(dbeProdName.text+' 的库存量不够!');
dbenum.SetFocus;
dbenum.text :='0';
exit;
end;
with dm.tabProdDictionary do
begin
open;
setkey;
if not findkey([dbeProdID.text]) then
begin
showmessage('该产品无库存!');
exit;
end
else
begin
if fieldbyname('Contain').asinteger = 0 then exit; //跳出此事件处理过程
fBox:=strtoint64(dbeNum.text) / fieldbyname('Contain').asinteger;
fBox:=strtofloat(formatfloat('0.00',fBox));
end; //if
end; //with
dbeBox.text := floattostr(fBox);
frmProdOutInCard.close;
end; //case 4
end; //case of statement
end; //if
end;
procedure TfrmProdOutCard.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);
end; //if
end;
procedure TfrmProdOutCard.bbPostClick(Sender: TObject);
var
sProdID:string;
iNum:integer;
begin
bbPost.Cursor:=crAppStart;
if (dm.zdyGetProdCheckDate >= strtodatetime(dbeDate.text)) then
begin
showmessage('您选择的结帐日期早于上次结帐日期!'+#13+#13+'上次结帐日期是:'+datetostr(dm.zdyGetprodCheckDate));
// showmodal;
//frmProdMain.Visible:=true;
exit;
end; // if
//=================
// 检查栏目填写情况
//=================
if (dbeProdName.text = '') or (dbeNum.text = '') or (DBEdit1.text='')then
begin
showmessage('请填写产品名称、数量栏目、客户单位!');
exit;
end; //if
{
//=========================
// 判断库存是否够用
//=========================
sProdID:=dbeProdID.text;
with dm.tabProdStock do
begin
open;
setkey;
if not findkey([sProdID]) then
begin
showmessage('not find key!');
exit;
end
else
iNum := fieldbyname('Number').asinteger;
end; //with
if iNum < strtofloat(dbeNum.text) then
begin
showmessage(dbeProdName.text+' 的库存量不够!');
exit;
end;
}
//=======
// 提交
//=======
if dm.tabProdOutCard.State = dsinsert then //是添加记录 提交
begin
dm.tabProdOutCard.Post;
//为下一次添加做准备
// sCardID:=dm.zdyProdCardID(frmProdVoucher.dtpDate.date);
//dm.tabProdOutCard.append;
// dbeDate.text:=datetostr(frmProdVoucher.dtpDate.date);
//dbeCardID.text:=sCardID;
// sOutDate:=dbeDate.text;
//sOutID:=dbeCardID.text;
// dbeProdName.SetFocus;
end
else if dm.tabProdOutCard.State = dsEdit then //是修改记录 提交
begin
dm.tabProdOutCard.Post;
frmProdOutCard.close;
end
else
exit;
//===========================
// 更新仓库记录
//===========================
frmProdStock.zdyCurStock(dm.zdyGetProdCheckDate);
// 先隐藏,再关闭
frmProdOutCard.hide;
bbPost.Cursor:=crDefault;
showmessage('已提交,如还要出库,请按“填写出库单”按钮!');
frmProdOutCard.close;
end;
procedure TfrmProdOutCard.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
dm.tabProdOutCard.cancel;
frmProdOutInCard.close;
end;
procedure TfrmProdOutCard.bbLocalClick(Sender: TObject);
begin
dbeProdName.setfocus;
end;
procedure TfrmProdOutCard.FormCreate(Sender: TObject);
begin
bbLocal.Height:=0;
bbLocal.Width:=0;
end;
procedure TfrmProdOutCard.bbPriorClick(Sender: TObject);
begin
if dm.tabProdOutCard.bof then
begin
messagedlg('已经到第一条记录!',mtinformation,[mbok],0);
exit;
end; //if
dm.tabProdOutCard.Prior;
end;
procedure TfrmProdOutCard.bbNextClick(Sender: TObject);
begin
if dm.tabProdOutCard.eof then
begin
messagedlg('已经到最后一条记录!',mtinformation,[mbok],0);
exit;
end; //if
dm.tabProdOutCard.Next;
end;
procedure TfrmProdOutCard.dbeDateEnter(Sender: TObject);
begin
dbeDate.text:=sOutDate;
end;
procedure TfrmProdOutCard.dbeCardIDEnter(Sender: TObject);
begin
dbeCardID.text:=sOutID;
end;
procedure TfrmProdOutCard.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;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -