📄 unitmatebasic.pas
字号:
unit UnitMateBasic;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, DBCtrls, StdCtrls, Buttons, Mask, ToolEdit,
CurrEdit, ExtCtrls;
type
TfrmMateBasic = class(TForm)
Panel2: TPanel;
Panel3: TPanel;
btnAdd: TBitBtn;
btnErase: TBitBtn;
btnMod: TBitBtn;
btnSave: TBitBtn;
btnCancel: TBitBtn;
btnExit: TBitBtn;
BtnQuery: TBitBtn;
DBNavigator1: TDBNavigator;
dbGridMateBasic: TDBGrid;
dsMateBasic: TDataSource;
lblMateCode: TLabel;
lblMateName: TLabel;
lblType: TLabel;
lblUnit: TLabel;
lblDept: TLabel;
lblNum: TLabel;
lblPrice: TLabel;
lblMateMemo: TLabel;
Label1: TLabel;
Label2: TLabel;
lblMateClass: TLabel;
lblzdr: TLabel;
edtMateCode: TEdit;
edtMateName: TEdit;
edtType: TEdit;
cbbDept: TComboBox;
edtBz: TEdit;
cbbQuality: TComboBox;
edtNum: TRxCalcEdit;
edtzdr: TEdit;
cbbUnit: TComboBox;
edtPrice: TCurrencyEdit;
edtABC: TEdit;
cbbLb: TComboBox;
procedure btnExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Clear(form:TForm);
procedure btnAddClick(Sender: TObject);
procedure btnEraseClick(Sender: TObject);
procedure btnModClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure edtMateCodeExit(Sender: TObject);
procedure dsMateBasicDataChange(Sender: TObject; Field: TField);
procedure edtMateCodeKeyPress(Sender: TObject; var Key: Char);
procedure edtBzKeyPress(Sender: TObject; var Key: Char);
procedure cbbKwEnter(Sender: TObject);
procedure cbbKfExit(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
listDept,listDeptName:array of string; //部门代码、部门名称
listKf,listKfmc:array of string; //库房代码、库房名称
listKw,listKwmc:array of string; //库位代码、库位名称
listQuality,listQualityName:array of string; //品质代码、品质名称
listUnit,listUnitName:array of string; //计量单位代码、单位名称
listLb,listLbmc:array of string;
public
{ Public declarations }
end;
var
frmMateBasic: TfrmMateBasic;
isAdd,isMod:boolean;
RecNo:TBookMark;
implementation
uses UnitMain, UnitDm;
{$R *.dfm}
procedure TfrmMateBasic.btnExitClick(Sender: TObject);
begin
close;
end;
procedure TfrmMateBasic.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TfrmMateBasic.Clear(form:TForm);
var
i:integer;
begin
for i:=0 to TForm(form).ComponentCount-1 do
begin
if form.Components[i] is TEdit then
TEdit(form.Components[i]).Text:=''
else if form.Components[i] is TComboBox then
begin
TComboBox(form.Components[i]).ItemIndex:=-1;
TComboBox(form.Components[i]).text:='';
end
else if form.Components[i] is TMemo then
TMemo(form.Components[i]).Lines.Text:='';
end;
end;
procedure TfrmMateBasic.btnAddClick(Sender: TObject);
begin
isAdd:=true;
isMod:=false;
dbGridMateBasic.SelectedRows.clear;
//Dm.qry_MateBasic.last;
if btnAdd.caption='增加(&A)' then
begin
btnAdd.enabled:=false;
btnErase.enabled:=false;
btnMod.enabled:=false;
btnSave.enabled:=true;
btnCancel.enabled:=true;
panel2.enabled:=true;
Clear(frmMateBasic);
edtNum.text:='';
edtPrice.value:=0;
edtzdr.text:=frmMain.StrOperat;
edtzdr.enabled:=false;
edtMateCode.setfocus;
end;
//DM.qry_MateBasic.Last;
//Clear(frmMateBasic);
{ if dm.qry_MateBasic.RecordCount<>0 then
begin
DM.qry_MateBasic.Last;
Clear(frmMateBasic);
end; }
end;
procedure TfrmMateBasic.btnEraseClick(Sender: TObject);
begin
if dm.qry_MateBasic.RecordCount=0 then exit;
if application.MessageBox('确信删除当前记录?','警告',mb_okcancel+mb_iconwarning)=IDOK then
begin
//这里删除基础物料存储过程 MateBasic_Erase
with dm.sp_MateBasic do
begin
ProcedureName:='MateBasic_Erase;1';
Parameters.Refresh;
Parameters.ParamByName('@wlbm').value:=edtMateCode.text;
ExecProc;
end;
dm.qry_MateBasic.Close;
dm.qry_MateBasic.Open;
end;
end;
procedure TfrmMateBasic.btnModClick(Sender: TObject);
begin
//为什么我这里没有控制标签,窗体上的控件不能移动呢
if dm.qry_MateBasic.RecordCount=0 then exit;
//获得当前的记录位置
Recno:=dm.qry_MateBasic.GetBookmark;
//关闭与表的联系-------------
dm.qry_MateBasic.DisableControls;
//标志位--------
isMod:=true;
isAdd:=false;
btnAdd.Enabled:=false;
btnErase.Enabled:=false;
btnMod.Enabled:=false;
btnSave.Enabled:=true;
btnCancel.Enabled:=true;
edtMateCode.enabled:=false;
panel2.enabled:=true;
edtMateName.setfocus;
end;
procedure TfrmMateBasic.btnSaveClick(Sender: TObject);
var
position:integer;
begin
if edtMateCode.text='' then
begin
application.MessageBox('注意:'+#13+' 物料代码不能为空!','警告',mb_ok+mb_iconwarning);
edtMateCode.setfocus;
exit;
end;
if isAdd then
dm.sp_MateBasic.ProcedureName:='MateBasic_Add;1';
if isMod then
dm.sp_MateBasic.ProcedureName:='MateBasic_Mod;1';
with dm.sp_MateBasic do
begin
Parameters.Refresh;
Parameters.ParamByName('@wlbm').value:=trim(edtMateCode.Text);
Parameters.ParamByName('@wlmc').value:=trim(edtMateName.text);
Parameters.ParamByName('@xh').value:=trim(edtType.text);
Parameters.ParamByName('@abc').value:=edtABC.text;
Parameters.ParamByName('@num').value:=trim(edtNum.text);
Parameters.ParamByName('@dj').value:=abs(edtPrice.value); //trim(edtPrice.text);
Parameters.ParamByName('@zdr').value:=trim(edtZdr.text);
Parameters.ParamByName('@bz').value:=trim(edtBz.text);
//---防止部门代码为空-----------------------
Parameters.ParamByName('@bm').value:=22; //22为三级文件中默认的仓储部门代码
{ if cbbDept.text='' then
begin
application.MessageBox('注意:'+#13#10+' 请输入入库部门!','警告',mb_ok+mb_iconwarning);
cbbDept.setfocus;
exit;
end else
begin
//查找中间的空格
if pos(' ',trim(cbbDept.text))>0 then
begin
position:=cbbDept.items.indexof(cbbDept.text);
if position <> -1 then
Parameters.ParamByName('@bm').value:=listDept[position]
else
Parameters.ParamByName('@bm').value:=trim(cbbDept.text);
end else
Parameters.ParamByName('@bm').value:=trim(cbbDept.text);
end; }
//物料类别代码 //类别也应该可以修改
if cbbLb.text='' then
begin
application.MessageBox('注意:'+#13#10+' 请选择类别代码!','警告',mb_ok+mb_iconwarning);
cbbLb.setfocus;
exit;
end else
begin
//查找中间的空格
if pos(' ',trim(cbbLb.text))>0 then
begin
position:=cbbLb.items.indexof(cbbLb.text);
if position <> -1 then
Parameters.ParamByName('@lb').value:=listLb[position]
else
Parameters.ParamByName('@lb').value:=trim(cbbLb.text);
end else
Parameters.ParamByName('@lb').value:=trim(cbbLb.text);
end;
//--------防止计量单位代码为空----------------
if cbbUnit.text='' then
begin
application.MessageBox('注意:'+#13#10+' 请输入计量单位!','警告',mb_ok+mb_iconwarning);
cbbUnit.setfocus;
exit;
end else
begin
//查找中间的空格
if pos(' ',trim(cbbUnit.text))>0 then
begin
position:=cbbUnit.items.indexof(cbbUnit.text);
if position <> -1 then
Parameters.ParamByName('@dw').value:=listUnit[position]
else
Parameters.ParamByName('@dw').value:=trim(cbbUnit.text);
end else
Parameters.ParamByName('@dw').value:=trim(cbbUnit.text);
end;
//品质代码
if cbbQuality.text='' then
begin
application.MessageBox('注意:'+#13#10+' 请输入品质代码!','警告',mb_ok+mb_iconwarning);
cbbQuality.setfocus;
exit;
end else
begin
//查找中间的空格
if pos(' ',trim(cbbQuality.text))>0 then
begin
position:=cbbQuality.items.indexof(cbbQuality.text);
if position <> -1 then
Parameters.ParamByName('@PZ').value:=listQuality[position]
else
Parameters.ParamByName('@PZ').value:=trim(cbbQuality.text);
end else
Parameters.ParamByName('@PZ').value:=trim(cbbQuality.text);
end;
ExecProc;
end;
//---------------------------------------
if isadd then //增加则显示最后一条记录
begin
isadd:=false;
DM.qry_MateBasic.disableControls;
DM.qry_MateBasic.close;
Dm.qry_MateBasic.open;
DM.qry_MateBasic.Last;
DM.qry_MateBasic.EnableControls;
end
else //修改则显示当前修改的记录
begin
isMod:=false;
dbGridMateBasic.Options:=dbGridMateBasic.Options + [dgmultiselect];
DM.qry_MateBasic.disableControls;
DM.qry_MateBasic.close;
Dm.qry_MateBasic.open;
DM.qry_MateBasic.GotoBookmark(Recno);
DM.qry_MateBasic.FreeBookmark(Recno);
DM.qry_MateBasic.EnableControls;
end;
//---------------------------------------
if isAdd then isAdd:=false;
if isMod then isMod:=false;
Panel2.Enabled:=false;
btnadd.enabled:=true;
btnadd.SetFocus;
btnErase.enabled:=true;
btnMod.enabled:=true;
btnSave.enabled:=false;
btnCancel.enabled:=false;
edtMateCode.Enabled:=true;
{ Dm.qry_MateBasic.EnableControls;
Dm.qry_MateBasic.close;
Dm.qry_MateBasic.open; }
end;
procedure TfrmMateBasic.btnCancelClick(Sender: TObject);
begin
if isAdd then isadd:=false;
if isMod then isMod:=false;
if btnCancel.caption='取消(&C)' then
begin
//panel1.enabled:=false;
btnAdd.enabled:=true;
btnErase.enabled:=true;
btnMod.enabled:=true;
btnSave.enabled:=false;
btnCancel.enabled:=false;
panel2.Enabled:=false;
end;
DM.qry_MateBasic.EnableControls;
DM.qry_MateBasic.close;
DM.qry_MateBasic.open;
end;
procedure TfrmMateBasic.FormCreate(Sender: TObject);
var
i:integer;
str:string;
begin
edtzdr.text:=frmMain.StrOperat;
//物料类别
with dm.qry_MateClass do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -