📄 u_goodsinstock.pas
字号:
unit u_GoodsInStock;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, DB, ADODB, Menus;
type
TfrmGoodsInStock = class(TForm)
Panel1: TPanel;
Label1: TLabel;
edtDate: TLabeledEdit;
EdtGoodsInBH: TLabeledEdit;
lvMain: TListView;
Panel2: TPanel;
edtGoodsBH: TLabeledEdit;
edtGoodsName: TLabeledEdit;
edtGoodsSpec: TLabeledEdit;
edtGoodsModel: TLabeledEdit;
edtGoodsPrice: TLabeledEdit;
edtGoodsAmount: TLabeledEdit;
btnAdd: TBitBtn;
btnDelete: TBitBtn;
Panel3: TPanel;
Label2: TLabel;
edtTotal: TEdit;
Label3: TLabel;
edtPayMent: TEdit;
btnOK: TBitBtn;
btnClose: TBitBtn;
btnEdit: TBitBtn;
btnCancel: TBitBtn;
btnSave: TBitBtn;
popGetSysTime: TADOStoredProc;
popGetGoodsInBH: TADOStoredProc;
pipGoodsInMaster: TADOStoredProc;
pipSupAccount: TADOStoredProc;
pipGoodsInDetail: TADOStoredProc;
btnAbandon: TBitBtn;
PopupMenu1: TPopupMenu;
PmDel: TMenuItem;
chkCheck: TCheckBox;
cmbSupply: TEdit;
sp_GetSupNo: TADOStoredProc;
chkPrint: TCheckBox;
InRepQry: TADOQuery;
procedure InitEdt();
procedure InitShowADD();
procedure InitShowSave();
function CheckEdt() :Boolean;
procedure btnCloseClick(Sender: TObject);
procedure edtGoodsBHDblClick(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure edtGoodsBHKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lvMainDblClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure lvMainSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure edtGoodsAmountKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure cmbSupplyKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure btnOKClick(Sender: TObject);
procedure edtPayMentKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edtGoodsPriceKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure btnAbandonClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure PmDelClick(Sender: TObject);
procedure edtGoodsBHExit(Sender: TObject);
procedure cmbSupplyExit(Sender: TObject);
procedure AddSup();
procedure cmbSupplyDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Flag : Integer;
Total : Real;
itemid : Integer;
end;
var
frmGoodsInStock: TfrmGoodsInStock;
function CheckInt(Data : String) : Boolean;
implementation
uses u_DataCtrl, u_ChooseGoodsInfo, Math, u_ShareFun, u_GoodsOutStock,
u_SupSearch, u_GoodsOutRep, u_GoodsInRep;
{$R *.dfm}
function CheckInt(Data : String) : Boolean;
var
code : Integer;
r :Integer;
begin
Val(Data,r,code);
if code = 0 then
Result := True
else
Result := False;
end;
procedure TfrmGoodsInStock.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmGoodsInStock.edtGoodsBHDblClick(Sender: TObject);
begin
frmChooseGoodsInfo.ShowModal;
end;
procedure TfrmGoodsInStock.InitEdt;
begin
edtGoodsBH.Clear;
edtGoodsName.Clear;
edtGoodsSpec.Clear;
edtGoodsModel.Clear;
edtGoodsPrice.Clear;
edtGoodsAmount.Clear;
end;
procedure TfrmGoodsInStock.InitShowADD();
begin
BtnAdd.Show;
BtnEdit.Show;
BtnSave.Hide;
BtnCancel.Hide;
edtGoodsBh.SetFocus;
end;
procedure TfrmGoodsInStock.InitShowSave();
begin
BtnAdd.Hide;
BtnEdit.Hide;
BtnSave.Show;
BtnCancel.Show;
edtGoodsBh.SetFocus;
end;
function TfrmGoodsInStock.CheckEdt: Boolean;
begin
if trim(edtGoodsBH.Text) = '' then
begin
Application.MessageBox('请输入商品编码','警告',MB_OK);
edtGoodsBH.SetFocus;
Result := False;
Exit;
end;
if trim(edtGoodsName.Text) = '' then
begin
Application.MessageBox('名称不能为空,请重新输入!','警告',MB_OK);
Result := False;
Exit;
end ;
if Not IsNumeric(edtGoodsPrice.Text) then
begin
Application.MessageBox('单价输入有误,请重新输入!','警告',MB_OK);
edtGoodsPrice.SetFocus;
Result :=False;
Exit;
end;
if Not CheckInt(edtGoodsAmount.Text) then
begin
Application.MessageBox('数量输入有误,请重新输入','警告',MB_OK);
edtGoodsAmount.SetFocus;
Result :=False;
Exit;
end
else
Result := True;
end;
procedure TfrmGoodsInStock.btnAddClick(Sender: TObject);
begin
Flag := 1;
InitEdt;
InitShowSave;
end;
procedure TfrmGoodsInStock.edtGoodsBHKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
var
TempSql : String;
TempQuery : TADOQuery;
begin
if (key = VK_RETURN) and (trim(edtGoodsBH.Text)='') then
begin
Application.MessageBox('请输入编码','警告',MB_OK);
Exit;
end ;
if (key = VK_RETURN) and (trim(edtGoodsBH.Text)<>'') then
begin
TempSql := 'select * from vw_GoodsInfo where GoodsBH='+QuotedStr(edtGoodsBH.Text);
TempQuery := frmDataCtrl.ReturnQuery(TempSql);
if TempQuery.RecordCount > 0 then
begin
edtGoodsName.Text := TempQuery.FieldValues['GoodsName'];
edtGoodsSpec.Text := TempQuery.FieldValues['GoodsSpec'];
edtGoodsModel.Text := TempQuery.FieldValues['GoodsModel'];
edtGoodsPrice.Text := TempQuery.fieldbyname('GoodsInPrice').AsString ;
TempQuery.Free;
edtGoodsPrice.SetFocus;
end
else
begin
showmessage('没有此商品,请重新输入!');
edtGoodsBH.SetFocus;
exit;
end;
end;
end;
procedure TfrmGoodsInStock.lvMainDblClick(Sender: TObject);
var
i : Integer;
begin
if lvMain.SelCount<1 then
begin
Application.MessageBox('请选择记录','警告',MB_OK);
InitEdt;
Exit;
end;
with LvMain.Items do
begin
Flag := 2;
i := LvMain.Selected.Index;
itemid := i;
edtGoodsBH.Text:=item[i].Caption;
edtGoodsName.Text:=item[i].SubItems.Strings[0];
edtGoodsSpec.Text:=Item[i].SubItems.Strings[1];
edtGoodsModel.Text:=Item[i].SubItems.Strings[2];
edtGoodsPrice.Text:=Item[i].SubItems.Strings[3];
edtGoodsAmount.Text:=Item[i].SubItems.Strings[4];
InitShowSave;
end;
end;
procedure TfrmGoodsInStock.btnSaveClick(Sender: TObject);
var
i : Integer;
begin
if CheckEdt() = False then
Exit;
if Flag = 1 then
begin
with lvMain.Items.Insert(0) do
begin
caption := edtGoodsBH.Text;
SubItems.Add(edtGoodsName.Text);
SubItems.Add(edtGoodsSpec.Text);
SubItems.Add(edtGoodsModel.Text);
SubItems.Add(edtGoodsPrice.Text);
SubItems.Add(edtGoodsAmount.Text);
SubItems.Add(FloatToStr(StrToFloat(edtGoodsPrice.Text) * StrToInt(edtGoodsAmount.Text)));
end;
BtnAdd.Click;
end;
if Flag = 2 then
begin
with lvMain.Items do
begin
Item[itemid].Caption := EdtGoodsBH.Text;
Item[itemid].SubItems.Strings[0] := edtGoodsName.Text;
Item[itemid].SubItems.Strings[1] := edtGoodsSpec.Text;
Item[itemid].SubItems.Strings[2] := edtGoodsModel.Text;
Item[itemid].SubItems.Strings[3] := edtGoodsPrice.Text;
Item[itemid].SubItems.Strings[4] := edtGoodsAmount.Text;
Item[itemid].SubItems.Strings[5] := FloatToStr(StrToFloat(edtGoodsPrice.Text)*StrToInt(edtGoodsAmount.Text));
end;
BtnAdd.Click;
end;
Total:=0;
with lvMain.Items do
begin
if count>0 then
begin
for i:=0 to count-1 do
Total:=Total+strtofloat(Item[i].SubItems.Strings[5]);
edtTotal.Text := FloatToStr(Total);
end;
end;
end;
procedure TfrmGoodsInStock.btnEditClick(Sender: TObject);
begin
if lvMain.SelCount < 1 then
begin
Application.MessageBox('请选择记录','提示',MB_OK);
Exit;
end;
itemid := lvMain.Selected.Index;
lvMain.OnDblClick(self);
Flag := 2;
end;
procedure TfrmGoodsInStock.btnCancelClick(Sender: TObject);
begin
BtnAdd.Click;
end;
procedure TfrmGoodsInStock.btnDeleteClick(Sender: TObject);
var
i : Integer;
begin
if lvMain.SelCount<1 then
begin
Application.MessageBox('请选择记录','警告',MB_OK);
InitEdt;
Exit;
end;
itemid := lvMain.Selected.Index;
if itemid>=0 then
begin
lvMain.Items.Item[itemid].Delete;
InitEdt;
end;
Total:=0;
with lvMain.Items do
if count>0 then
begin
for i:=0 to count-1 do
Total:=Total+strtofloat(Item[i].SubItems.Strings[5]);
edtTotal.Text := FloatToStr(Total);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -