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

📄 craftinput.pas

📁 delphi框架可以学习, 写的很好的
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit CraftInput;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BasicFind, Menus, ActnList, ImgList, StdCtrls, RzLstBox,
  RzBckgnd, RzButton, RzEdit, RzLabel, Mask, RzRadChk, RzPanel, ExtCtrls,
  Grids, DBGridEh, RzTabs, RzDBEdit, TeEngine, Series, TeeProcs, Chart,
  DBChart, DB, DBCtrls, RzDBCmbo, RzCmboBx, ppDB, ppBands, ppCache,
  ppClass, ppProd, ppReport, ppRelatv, ppDBPipe, ppComm, ppEndUsr, RzGrids;

type
  TfrmCraftInput = class(TfrmBasicFind)
    actExcelFind: TAction;
    dbgridList: TDBGridEh;
    RzPanel8: TRzPanel;
    Splitter1: TSplitter;
    ppCraftXB: TppDBPipeline;
    ppCraft: TppDBPipeline;
    Panel1: TPanel;
    RzPageControl1: TRzPageControl;
    TabSheet1: TRzTabSheet;
    Label3: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label24: TLabel;
    Label8: TLabel;
    RzSeparator6: TRzSeparator;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label35: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label33: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label12: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    RzSeparator2: TRzSeparator;
    Label4: TLabel;
    Label6: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label25: TLabel;
    Label31: TLabel;
    RzDBEdit1: TRzDBEdit;
    RzDBEdit3: TRzDBEdit;
    RzDBEdit10: TRzDBEdit;
    RzDBEdit11: TRzDBEdit;
    RzDBEdit13: TRzDBEdit;
    RzDBEdit14: TRzDBEdit;
    RzDBEdit15: TRzDBEdit;
    RzDBLookupComboBox1: TRzDBLookupComboBox;
    RzDBLookupComboBox3: TRzDBLookupComboBox;
    RzDBEdit2: TRzDBEdit;
    RzDBEdit8: TRzDBEdit;
    RzDBEdit12: TRzDBEdit;
    RzDBMemo2: TRzDBMemo;
    RzDBEdit17: TRzDBEdit;
    RzDBEdit18: TRzDBEdit;
    RzDBEdit19: TRzDBEdit;
    RzDBEdit20: TRzDBEdit;
    RzDBEdit21: TRzDBEdit;
    RzDBEdit22: TRzDBEdit;
    RzDBEdit23: TRzDBEdit;
    RzDBEdit4: TRzDBEdit;
    RzDBEdit5: TRzDBEdit;
    RzDBEdit6: TRzDBEdit;
    RzDBEdit24: TRzDBEdit;
    RzDBEdit25: TRzDBEdit;
    RzDBEdit26: TRzDBEdit;
    RzDBEdit9: TRzDBEdit;
    RzDBEdit16: TRzDBEdit;
    RzDBEdit7: TRzDBEdit;
    RzDBEdit27: TRzDBEdit;
    RzDBLookupComboBox2: TRzDBLookupComboBox;
    RzDBLookupComboBox5: TRzDBLookupComboBox;
    RzDBLookupComboBox6: TRzDBLookupComboBox;
    RzDBLookupComboBox7: TRzDBLookupComboBox;
    RzDBEdit28: TRzDBEdit;
    Label36: TLabel;
    RzDBEdit32: TRzDBEdit;
    TabSheet2: TRzTabSheet;
    actShowPrice: TAction;
    RzPanel9: TRzPanel;
    plInput: TRzPanel;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    Label46: TLabel;
    Label47: TLabel;
    Label48: TLabel;
    edtZS: TRzEdit;
    cboxJwlx: TRzComboBox;
    edtPH: TRzEdit;
    edtBZ: TRzEdit;
    edtYldm: TRzEdit;
    edtTF: TRzEdit;
    edtSH: TRzEdit;
    btnAdd: TRzBitBtn;
    btnDel: TRzBitBtn;
    edtFG: TRzEdit;
    btnModif: TRzBitBtn;
    DBGridEh3: TDBGridEh;
    plYldm: TRzPanel;
    RzSeparator4: TRzSeparator;
    RzLabel8: TRzLabel;
    DBGridEh1: TDBGridEh;
    Bevel2: TBevel;
    Panel2: TPanel;
    plPrice: TPanel;
    Label39: TLabel;
    Label40: TLabel;
    RzDBEdit35: TRzDBEdit;
    RzDBEdit36: TRzDBEdit;
    Panel3: TPanel;
    Label37: TLabel;
    Label38: TLabel;
    RzSeparator1: TRzSeparator;
    Label32: TLabel;
    Label34: TLabel;
    Label49: TLabel;
    RzDBEdit33: TRzDBEdit;
    btnOK: TRzBitBtn;
    RzDBEdit29: TRzDBEdit;
    RzDBEdit30: TRzDBEdit;
    RzDBEdit31: TRzDBEdit;
    RzDBEdit34: TRzDBEdit;
    RzDBEdit37: TRzDBEdit;
    DBGridEh2: TDBGridEh;
    Bevel1: TBevel;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure actExcelFindExecute(Sender: TObject);
    procedure dbgridListTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
    procedure RzPageControl1Change(Sender: TObject);
    procedure edtYldmChange(Sender: TObject);
    procedure edtYldmKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure btnAddClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure RzDBEdit9Enter(Sender: TObject);
    procedure dbgridListDrawColumnCell(Sender: TObject; const Rect: TRect;
              DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure DBGridEh3DrawColumnCell(Sender: TObject; const Rect: TRect;
              DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure cboxJwlxChange(Sender: TObject);
    procedure btnModifClick(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
  private
    { Private declarations }
    procedure doMyOpen(Sender: TObject;   var _EventNote, _State: String); override;
    procedure doNewData(Sender: TObject;  var _EventNote, _State: String); override;
    procedure doSave(Sender: TObject;     var _EventNote, _State: String); override;
    procedure doCancel(Sender: TObject;   var _EventNote, _State: String); override;
    procedure doDelete(Sender: TObject;   var _EventNote, _State: String); override;
    procedure doCheck(Sender: TObject;    var _EventNote, _State: String); override;
    procedure doUnCheck(Sender: TObject;  var _EventNote, _State: String); override;
    procedure doForLog1(Sender: TObject;  var _EventNote, _State: String); override;

    procedure doAfterScroll(DataSet: TDataSet);
    procedure doAfterPost(DataSet: TDataSet);

    procedure doBeforePrint(Sender: TObject); override;

    function  GetJWSHZ(_Style: String): String;

    procedure ButtonState(_IsActive, _IsEmpty, _IsModify, _IsCheck :Boolean); override;
  public
    { Public declarations }
  end;

var
  frmCraftInput: TfrmCraftInput;

implementation

uses dm32, MyPublic, dmc32;

{$R *.dfm}

procedure TfrmCraftInput.actExcelFindExecute(Sender: TObject);
begin
  RzEdit1.SetFocus;
end;

procedure TfrmCraftInput.FormCreate(Sender: TObject);
begin
  inherited;

  FindFields[1] := 'CPMC LIKE ''%'+REPLACEKEY+'%''';
  FindFields[2] := 'CPYS='''+REPLACEKEY+'''';
  FindFields[3] := 'CPZZ='''+REPLACEKEY+'''';
  FindFields[4] := 'BZ LIKE ''%'+REPLACEKEY+'%''';
  FindFields[5] := 'SZBS='''+REPLACEKEY+'''';
  FindFields[6] := 'SZYM='''+REPLACEKEY+'''';
  FindFields[7] := 'KH='+REPLACEKEY;
  FindFields[8] := 'CPGG LIKE ''%'+REPLACEKEY+'%''';
  FindFields[13]:='SRRQ';

  FindSQL[2] := 'SELECT CODE +'' = ''+ NAME AS LISTFIELD FROM CODER WHERE ISOK ='+ IntToStr(SHBZ_OK) +' AND FZLX=''BASE_YSMC''';
  FindSQL[3] := 'SELECT CODE +'' = ''+ NAME AS LISTFIELD FROM CODER WHERE ISOK ='+ IntToStr(SHBZ_OK) +' AND FZLX=''BASE_CPZZ''';

  UseDataset := dm.qryCraft;

  with dm.qryCraft do
  begin
    AfterScroll := doAfterScroll;
    AfterPost   := doAfterPost;
    BeforeEdit  := doBeforeEdit;
  end;

  with dm.qryCraftXB do
  begin
    BeforeEdit  := doBeforeEdit;
  end;

  GetGroupVal(cboxJwlx.Items, 'SELECT CODE + '' = '' + NAME AS LISTFIELD FROM CODER WHERE '+
                              'ISOK ='+ IntToStr(SHBZ_OK) +' AND FZLX=''BASE_YLSYFW''');
  RzPageControl1.ActivePageIndex := 0;

  //设置备用按钮
  Btn1.Visible := False;
  actOther1.Enabled := False;

  //打开数据集
  dmc.OpenCpys(True);
  dmc.OpenCpzz(True);
  dmc.OpenHcllx(True);

  dm.qryCraft.Close;
  dm.qryCraftXB.Close;

end;

procedure TfrmCraftInput.dbgridListTitleBtnClick(Sender: TObject; ACol: Integer;
  Column: TColumnEh);
begin
  DBGridTitleBtnClick(Sender, ACol, Column);
end;

procedure TfrmCraftInput.ButtonState(_IsActive, _IsEmpty, _IsModify, _IsCheck: Boolean);
begin
  if _IsActive and not _IsEmpty then
    _IsCheck := UseDataSet.FieldByName('SHBZ').AsInteger = SHBZ_OK;

  inherited;

  dbgridList.Enabled := not actSave.Enabled;
  actOther1.Enabled  := _IsActive and not _IsEmpty and not _IsModify;
  TabSheet1.Enabled  := not _IsCheck;

  //价格信息
  plPrice.Visible := actShowPrice.Visible;

  //TabSheet2.Enabled  := not _IsCheck;
  plInput.Visible    := not _IsCheck;
  DBGridEh3.ReadOnly := _IsCheck;;
end;

procedure TfrmCraftInput.doCancel(Sender: TObject; var _EventNote, _State: String);
begin
  if not ShowMess('询问','确定要取消刚才对数据的修改吗?此操作不可恢复!', MB_OKCANCEL) then Exit;

  _EventNote := '取消工艺资料输入';
  _State := EV_OK;

  try
    if dm.qryCraft.State   in [dsEdit, dsInsert] then dm.qryCraft.Cancel;
    if dm.qryCraftXB.State in [dsEdit, dsInsert] then dm.qryCraftXB.Cancel;
  except
    _State := EV_FAIL;
  end;
end;

procedure TfrmCraftInput.doCheck(Sender: TObject; var _EventNote, _State: String);
var ls_Cpmc: String;
begin
  //先保存之前的输入
  if dm.qryCraft.State in [dsEdit, dsInsert]   then dm.qryCraft.Post;
  if dm.qryCraftXB.State in [dsEdit, dsInsert] then dm.qryCraftXB.Post;

  //数据检查

  try
    with dm.qryCraft do
    begin
      if not IsEmpty then
      if State in [dsEdit, dsInsert] then Post;
      ls_Cpmc  := FieldByName('CPMC').AsString;

      _EventNote := '审核成品'+ls_Cpmc+'工艺资料';
      _State := EV_OK;

      Edit;
      FieldByName('SHBZ').AsInteger := ShBZ_OK;
      FieldByName('SHR').AsString   := CurrentUser.EmpName;
      FieldByName('SHRQ').AsDateTime:= Now;
      Post;
    end;
  except
    On E: Exception do
    begin
      ShowMess('系统错误','审核成品'+ls_Cpmc+'工艺资料失败,具体为:'+E.Message, MB_ICONERROR);
      _State := EV_FAIL;
    end;
  end;
end;

procedure TfrmCraftInput.doDelete(Sender: TObject; var _EventNote, _State: String);
var ls_Err, ls_cpser, ls_cpmc: String;
    SQLs: TStrings;
begin
  ls_cpmc := dm.qryCraft.FieldByName('CPMC').AsString;
  ls_cpser:= dm.qryCraft.FieldByName('GYSER').AsString;

  if not ShowMess('询问','确定要删除成品['+ ls_Cpmc +']的工艺资料吗?此操作不可恢复!', MB_OKCANCEL) then Exit;

  _EventNote := '删除成品['+ ls_Cpmc +']的工艺资料';
  _State := EV_OK;

  SQLs := TStringList.Create;
  try
    dm.qryCraft.Delete;

    SQLs.Add('DELETE FROM CRAFT WHERE GYSER='+ls_cpser);
    SQLs.Add('DELETE FROM CRAFTXB WHERE GYSER='+ls_cpser);
    ls_Err := doBatchSQL(SQLs);
    if ls_err <> '' then
    begin
      ShowMess('系统错误','删除成品['+ ls_Cpmc +']的工艺资料失败,具体为:'+ls_Err, MB_ICONERROR);
      _State := EV_FAIL;
      Exit;
    end;
  finally
    SQLs.Free;
  end;
end;

procedure TfrmCraftInput.doMyOpen(Sender: TObject; var _EventNote, _State: String);
var ls_SQL, ls_Err, ls_where: String;
begin
  ls_where := WhereSQL;
  if ls_where = '' then Exit;

  _EventNote := '打开工艺资料:'+ls_where;
  _State := EV_OK;

  ls_SQL := 'SELECT * FROM CRAFT WHERE '+ ls_where;
  ls_Err := OpenDataSet(dm.qryCraft, ls_SQL);
  if ls_err <> '' then
  begin
    ShowMess('系统错误','打开工艺资料失败,具体为:'+ls_Err, MB_ICONERROR);
    _State := EV_FAIL;
  end;

  if dm.qryCraft.IsEmpty then
    ShowMess('提示','按您指定的条件未发现有效记录!', MB_OK);
end;

procedure TfrmCraftInput.doNewData(Sender: TObject; var _EventNote, _State: String);
var ls_SQL, ls_Err: String;
begin
  _EventNote := '新增工艺资料';
  _State := EV_OK;
  RzPageControl1.ActivePageIndex := 0;
  TabSheet1.Enabled := True;
  RzDBEdit1.SetFocus;
  dm.qryCraftXB.Close;
  
  with dm.qryCraft do
  try
    //打开一个空数据集
    if not Active then
    begin
      ls_SQL := 'SELECT * FROM CRAFT WHERE 0=1';
      ls_Err := OpenDataSet(dm.qryCraft, ls_SQL);
      if ls_Err <> '' then
      begin
        ShowMess('系统错误','生成空数据集失败,具体为:'+ls_Err, MB_ICONERROR);
        _State := EV_FAIL;
        Exit;
      end;
    end;
    //先保存之前的输入
    if not IsEmpty then
    if State in [dsEdit, dsInsert] then Post;

    Append;

  except
    _State := EV_FAIL;
  end;
end;

procedure TfrmCraftInput.doSave(Sender: TObject; var _EventNote, _State: String);
var ls_cpSer, ls_Cpmc, ls_SQL, ls_Err: String;
    ls_tmp, ls_jshz, ls_wshz: String;
    lf_zsl, lf_Zjl, lf_Zwm, lf_kc: Double;
    lf_bmhs,lf_Jf, lf_Tsbj, lf_Ptbj, lf_wc, lf_wxys: Double;
begin
  //滚动
  ls_cpmc := dm.qryCraft.FieldByName('CPMC').AsString;
  _EventNote := '保存['+ls_cpmc+']工艺资料';
  _State := EV_OK;
  lf_Zjl := 0; //总经量
  lf_Jf  := 0; //经幅
  lf_Tsbj:= 0; //特殊报价
  lf_Ptbj:= 0; //普通报价
  lf_wc  := 0; //纬长
  lf_bmhs:= 0; //百码耗纱
  lf_zsl := 0; //织缩率
  lf_zwm := 0; //总纬密

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -