⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitmatebasic.pas

📁 仓储系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -