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

📄 unbgdsq.pas

📁 DELPHI编写的商场收银POS机源代码
💻 PAS
字号:
unit UNBGDSQ;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, Spin, Buttons, ComCtrls, ToolWin, JLOOKUPD, StdCtrls, JEdit,
  ExtCtrls, Grids, DBGrids, Mask, DBCtrls, ExtDlgs, DBTables, Db, SELOOKUPD;

type
  TFMBGDSQ = class(TForm)
    DBGrid1: TDBGrid;
    AREA_TOOL: TPanel;
    BTNQUT: TBitBtn;
    BTNINS: TBitBtn;
    BTNUPD: TBitBtn;
    BTNDEL: TBitBtn;
    BTNYES: TBitBtn;
    BTNCAL: TBitBtn;
    Panel2: TPanel;
    LBBGENO: TLabel;
    LBBGNAM: TLabel;
    LBBGKIN: TLabel;
    LBBGPST: TLabel;
    LBBGPVP: TLabel;
    LBBGPMM: TLabel;
    LBBGQTS: TLabel;
    LBBGCOS: TLabel;
    LBBSENO: TLabel;
    BGENO: TJDBEdit;
    BGNAM: TJDBEdit;
    BGPST: TJDBEdit;
    BGPVP: TJDBEdit;
    BGPMM: TJDBEdit;
    BGQTS: TJDBEdit;
    BGCOS: TJDBEdit;
    BSENO: JDBLOOKUPBOX;
    LBBGPR1: TLabel;
    LBBGPR2: TLabel;
    LBBGPR3: TLabel;
    BGPR1: TJDBEdit;
    BGPR2: TJDBEdit;
    BGPR3: TJDBEdit;
    Label3: TLabel;
    Label7: TLabel;
    QBGDS: TQuery;
    QBGDSBGENO: TStringField;
    DSBGDS: TDataSource;
    UBGDS: TUpdateSQL;
    GroupBox1: TGroupBox;
    LB1: TJEdit;
    LB2: TJEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    LB3: TJEdit;
    BitBtn1: TBitBtn;
    MENU_BGDS: TMainMenu;
    YES1: TMenuItem;
    YES21: TMenuItem;
    ESC1: TMenuItem;
    QUIT1: TMenuItem;
    BitBtn2: TBitBtn;
    LBRBCNT: TLabel;
    BGQTN: TJDBEdit;
    QBGDSBGNAM: TStringField;
    QBGDSBGKIN: TStringField;
    QBGDSBGPST: TFloatField;
    QBGDSBGPVP: TFloatField;
    QBGDSBGPMM: TFloatField;
    QBGDSBGCST: TFloatField;
    QBGDSBGOTH: TFloatField;
    QBGDSBGQTS: TFloatField;
    QBGDSBGQTN: TFloatField;
    QBGDSBGCOS: TFloatField;
    QBGDSBSENO: TStringField;
    QBGDSBGCNA: TStringField;
    QBGDSBGSUM: TStringField;
    QBGDSBGSIN: TStringField;
    QBGDSBGRUL: TStringField;
    QBGDSBGGAU: TStringField;
    QBGDSBGUNS: TStringField;
    QBGDSBGUNP: TStringField;
    QBGDSBGCLR: TStringField;
    QBGDSBGCLH: TStringField;
    QBGDSBGCLW: TFloatField;
    QBGDSBGUNW: TStringField;
    QBGDSBGUSE: TStringField;
    QBGDSBGCSS: TFloatField;
    QBGDSBGQTE: TFloatField;
    QBGDSBGDTC: TDateTimeField;
    QBGDSBGDAT: TDateTimeField;
    QBGDSBGMRK: TMemoField;
    QBGDSBGBSA: TStringField;
    QBGDSBGBSB: TStringField;
    QBGDSBGBSC: TStringField;
    QBGDSBGBIA: TFloatField;
    QBGDSBGBIB: TFloatField;
    QBGDSBGBIC: TFloatField;
    BGKIN: SEDBLOOKUPBOX;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure BTNINSClick(Sender: TObject);
    procedure BTNUPDClick(Sender: TObject);
    procedure BTNDELClick(Sender: TObject);
    procedure BTNYESClick(Sender: TObject);
    procedure BTNCALClick(Sender: TObject);
    procedure BTNQUTClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure YES21Click(Sender: TObject);
    procedure ESC1Click(Sender: TObject);
    procedure QUIT1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }

    procedure BTNMODE;
    procedure INSERTMODE;
    procedure UPDATEMODE;
    procedure NORMALMODE;
  public
    { Public declarations }
    FORMMODE : STRING;
  end;


var
  FMBGDSQ: TFMBGDSQ;

implementation

uses SYSINI, UN_UTL, FM_UTL, DB_UTL, MAIND, MAINU;

{$R *.DFM}

procedure TFMBGDSQ.BTNMODE;
begin
  //一般模式
  BTNINS.Enabled := FALSE;
  BTNUPD.Enabled := FALSE;
  BTNDEL.Enabled := FALSE;
  BTNYES.Enabled := FALSE;
  BTNCAL.Enabled := FALSE;
  BTNQUT.Enabled := FALSE;
  //新增修改模式
  IF (FORMMODE = 'INS' ) or (FORMMODE = 'UPD' ) THEN
     BEGIN
     BTNINS.Enabled := FALSE;
     BTNUPD.Enabled := FALSE;
     BTNDEL.Enabled := FALSE;
     BTNYES.Enabled := TRUE;
     BTNCAL.Enabled := TRUE;
     BTNQUT.Enabled := FALSE;
     END;
  //一般模式
  IF (FORMMODE = 'CAN' ) THEN
     BEGIN
     BTNINS.Enabled := TRUE;
     BTNUPD.Enabled := TRUE;
     BTNDEL.Enabled := TRUE;
     BTNYES.Enabled := FALSE;
     BTNCAL.Enabled := FALSE;
     BTNQUT.Enabled := TRUE;
     END;

  IF BGENO.Text = '' THEN BTNUPD.Enabled := FALSE;
  IF BGENO.Text = '' THEN BTNDEL.Enabled := FALSE;
end;

procedure TFMBGDSQ.INSERTMODE;
begin
  FORMMODE := 'INS';
  BTNMODE;

  _ORI_BGENO := QBGDS.FieldByName('BGENO').AsString;
  BGENO.Enabled := TRUE;
  BGNAM.Enabled := TRUE;
  BGKIN.Enabled := TRUE;
  BGPST.Enabled := TRUE;
  BGPVP.Enabled := TRUE;
  BGPMM.Enabled := TRUE;
  BGPR1.Enabled := TRUE;
  BGPR2.Enabled := TRUE;
  BGPR3.Enabled := TRUE;
  BGQTS.Enabled := TRUE;
  BGCOS.Enabled := TRUE;
  BSENO.Enabled := TRUE;

  DBGRID1.Enabled := FALSE;
  BGENO.SetFocus;
end;

procedure TFMBGDSQ.UPDATEMODE;
begin
  FORMMODE := 'UPD';
  BTNMODE;

  _ORI_BGENO := QBGDS.FieldByName('BGENO').AsString;
  IF _CHG_BGENO = TRUE THEN BGENO.Enabled := TRUE;
  BGNAM.Enabled := TRUE;
  BGKIN.Enabled := TRUE;
  BGPST.Enabled := TRUE;
  BGPVP.Enabled := TRUE;
  BGPMM.Enabled := TRUE;
  BGPR1.Enabled := TRUE;
  BGPR2.Enabled := TRUE;
  BGPR3.Enabled := TRUE;
  BGQTS.Enabled := TRUE;
  BGCOS.Enabled := TRUE;
  BSENO.Enabled := TRUE;

  DBGRID1.Enabled := FALSE;
  BGNAM.SetFocus;
end;

procedure TFMBGDSQ.NORMALMODE;
begin
  FORMMODE := 'CAN';
  BTNMODE;

  BGENO.Enabled := FALSE;
  BGNAM.Enabled := FALSE;
  BGKIN.Enabled := FALSE;
  BGPST.Enabled := FALSE;
  BGPVP.Enabled := FALSE;
  BGPMM.Enabled := FALSE;
  BGQTS.Enabled := FALSE;
  BGCOS.Enabled := FALSE;
  BSENO.Enabled := FALSE;


DBGrid1.Enabled := TRUE;
end;

procedure TFMBGDSQ.FormCreate(Sender: TObject);
begin
  //可否改编号
  _CHG_BGENO := FALSE;
  
  //按钮图形加载
  BTNINS.Glyph := INS_TB;
  BTNUPD.Glyph := UPD_TB;
  BTNDEL.Glyph := DEL_TB;
  BTNYES.Glyph := YES_TB;
  BTNCAL.Glyph := CAL_TB;
  BTNQUT.Glyph := QUT_TB;

  QBGDS.SQL.CLEAR;
  QBGDS.SQL.ADD('SELECT *  FROM BGDS ');
  QBGDS.SQL.ADD('ORDER BY BGENO');

  UBGDS.InsertSQL.CLEAR;
  UBGDS.InsertSQL.Add('INSERT INTO BGDS ');
  UBGDS.InsertSQL.Add(' ( BGENO, BGNAM, BGKIN, BGPST, BGPVP, BGPMM, BGQTS, BGCOS, BSENO ) ');
  UBGDS.InsertSQL.Add('VALUES ');
  UBGDS.InsertSQL.Add(' (:BGENO,:BGNAM,:BGKIN,:BGPST,:BGPVP,:BGPMM,:BGQTS,:BGCOS,:BSENO ) ');
  
  UBGDS.ModifySQL.CLEAR;
  UBGDS.ModifySQL.Add('UPDATE BGDS ');
  UBGDS.ModifySQL.Add('SET ');
  UBGDS.ModifySQL.Add('BGENO = :BGENO ,');
  UBGDS.ModifySQL.Add('BGNAM = :BGNAM ,');
  UBGDS.ModifySQL.Add('BGKIN = :BGKIN ,');
  UBGDS.ModifySQL.Add('BGPST = :BGPST ,');
  UBGDS.ModifySQL.Add('BGPVP = :BGPVP ,');
  UBGDS.ModifySQL.Add('BGPMM = :BGPMM ,');
  UBGDS.ModifySQL.Add('BGQTS = :BGQTS ,');
  UBGDS.ModifySQL.Add('BGCOS = :BGCOS ,');
  UBGDS.ModifySQL.Add('BSENO = :BSENO  ');
  UBGDS.ModifySQL.Add('WHERE BGENO = :OLD_BGENO');
  
  UBGDS.DeleteSQL.CLEAR;
  UBGDS.DeleteSQL.Add('DELETE FROM BGDS ');
  UBGDS.DeleteSQL.Add('WHERE BGENO = :OLD_BGENO');
  
  QBGDS.CLOSE;
  QBGDS.OPEN;

  NORMALMODE;
end;

procedure TFMBGDSQ.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  //Form 要结束前的询问(系统事件)
  CanClose := True;
  IF (FORMMODE = 'INS' ) or (FORMMODE = 'UPD' ) then
     BEGIN
     MessageDlg('请先结束输入模式后再退出!',mtConfirmation,[mbOk],0);
     CanClose := False;
     END;
end;

procedure TFMBGDSQ.BTNINSClick(Sender: TObject);
begin
  //试用版记录数限定
  IF CHECK_DEMO_VERSION_RECCNT('BGDS') = FALSE THEN EXIT;

  //检查权限============================================
  IF PERMISSION_CHECK(_USER_ID, 'UNBGDSI') = FALSE THEN  EXIT;

  INSERTMODE;

  QBGDS.APPEND;
  QBGDSBGENO.VALUE := ''  ;
  QBGDSBGNAM.VALUE := ''  ;
  QBGDSBGKIN.VALUE := ''  ;
  QBGDSBGPST.VALUE := 0   ;
  QBGDSBGPVP.VALUE := 0   ;
  QBGDSBGPMM.VALUE := 0   ;
  QBGDSBGQTS.VALUE := 0   ;
  QBGDSBGQTN.VALUE := 0   ;
  QBGDSBGCOS.VALUE := 0   ;
  QBGDSBSENO.VALUE := ''  ;
end;

procedure TFMBGDSQ.BTNUPDClick(Sender: TObject);
begin
  //检查权限============================================
  IF PERMISSION_CHECK(_USER_ID, 'UNBGDSU') = FALSE THEN EXIT;

  UPDATEMODE;
  QBGDS.Edit;
end;

procedure TFMBGDSQ.BTNDELClick(Sender: TObject);
begin
  //检查权限============================================
  IF PERMISSION_CHECK(_USER_ID, 'UNBGDSD') = FALSE THEN EXIT;

  NORMALMODE;

  IF MessageDlg('是否确定要删除此条记录吗?',mtWarning, [mbYes, mbNo], 0) = mrYes THEN
     IF MessageDlg('如果您按下取定按钮此条记录将会被删除',mtWarning, [mbYes, mbNo], 0) = mrYes THEN
        BEGIN
        QBGDS.Delete;
        FM_DB_QUERY_UPDATE(FMMAIND.DATABASE,QBGDS);
        NORMALMODE;
        END;
end;

procedure TFMBGDSQ.BTNYESClick(Sender: TObject);
VAR T_STR, T_1 : STRING;
begin
  
  //=====================================================
  IF (FORMMODE = 'INS' ) THEN
  IF (UNSETREAD('SYSSET','SET_EAN13') = '1') THEN
      BEGIN

      //自动产生条形码=============================================
      IF TRIM(BGENO.TEXT) = '' THEN
         BEGIN
         FMMAIND.QUERY.SQL.CLEAR;
         FMMAIND.QUERY.SQL.ADD('SELECT MAX(BGENO) FROM BGDS');
         FMMAIND.QUERY.SQL.ADD('WHERE BGENO LIKE ''999'+COPY_R(BSENO.TEXT,1,4)+'%''');
         FMMAIND.QUERY.CLOSE;
         FMMAIND.QUERY.OPEN;

         T_STR := FMMAIND.QUERY.Fields.Fields[0].AsString; //暂存
         T_1   := INTTOSTR(STRTOINTDEF(
                  COPY_R(FMMAIND.QUERY.Fields.Fields[0].AsString,2,5),0)+1);

         T_STR := '999'+COPY_R(BSENO.TEXT,1,4)+REPLICATE('0',5 - LENGTH(T_1) )+ T_1;
         T_STR := EAN13_ENCODE(T_STR);

         Case MessageDlg('您没有输入编号, 是否改成这样的条形码?'+#10#13+T_STR,mtConfirmation,[mbYes,mbNo],0) of
              mrYES : QBGDSBGENO.VALUE := T_STR;
              mrNO  : EXIT;
         end;
         END;

         IF (LENGTH(BGENO.TEXT) = 12) THEN
            BEGIN
            IF EAN13_ENCODE(BGENO.TEXT) = '' THEN
               BEGIN
               SHOWMESSAGE('您产品条形码输入错误!');
               BGENO.SetFocus;
               BGENO.SelectAll;
               EXIT;
               END ELSE QBGDSBGENO.VALUE := EAN13_ENCODE(BGENO.TEXT);
            END;

         IF (LENGTH(BGENO.TEXT) = 13) THEN
            BEGIN
            IF EAN13_ENCODE(COPY(BGENO.TEXT,1,12)) <> BGENO.TEXT THEN
               BEGIN
               Case MessageDlg('您产品条形码输入错误!, 是否自动更新?',mtConfirmation,[mbYes,mbNo],0) of
                    mrYES :QBGDSBGENO.VALUE := EAN13_ENCODE(COPY(BGENO.TEXT,1,12));
               end;
               BGENO.SetFocus;
               BGENO.SelectAll;
               EXIT;
               END;
            END;

         //IF ((LENGTH(BGENO.TEXT) < 12) OR
         IF (LENGTH(BGENO.TEXT) > 13) OR
            (EAN13_ENCODE(BGENO.TEXT) = '') THEN
            BEGIN
            SHOWMESSAGE('您产品条形码长度输入错误!');
            BGENO.SetFocus;   BGENO.SelectAll;
            EXIT;
            END;

      END;
      //=====================================================


  //检查空白字段
  IF FM_CHECK_FIELD_BLANK(BGENO .Text,LBBGENO .Caption ,LBBGENO .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BGENO.SetFocus ; EXIT; END;
  IF FM_CHECK_FIELD_BLANK(BGNAM .Text,LBBGNAM .Caption ,LBBGNAM .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BGNAM.SetFocus ; EXIT; END;
  IF FM_CHECK_FIELD_BLANK(BGKIN .Text,LBBGKIN .Caption ,LBBGKIN .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BGKIN.SetFocus ; EXIT; END;

  IF FM_CHECK_FIELD_BLANK(BSENO .Text,LBBSENO .Caption ,LBBSENO .Caption + ' 此栏不可输入空白!') = FALSE THEN BEGIN BSENO.SetFocus ; EXIT; END;
  IF FM_CHECK_FIELD_BLANK(BSENO .T_LABEL.TEXT ,LBBSENO .Caption ,LBBSENO .Caption + ' 此栏不可输入空白!') = FALSE THEN  BEGIN BSENO.SetFocus ; EXIT; END;
  IF FM_CHECK_FIELD_BLANK(BGKIN .Text,LBBGKIN .Caption ,LBBGKIN .Caption + ' 此栏不可输入空白!') = FALSE THEN  BEGIN BGKIN.SetFocus ; EXIT; END;
  IF FM_CHECK_FIELD_BLANK(BGKIN .T_LABEL.TEXT ,LBBGKIN .Caption ,LBBGKIN .Caption + ' 此栏不可输入空白!') = FALSE THEN  BEGIN BGKIN.SetFocus ; EXIT; END;

  //检查重复
  IF (FORMMODE = 'INS' ) THEN
  IF TABLECHECK_RE1('BGDS','BGENO',BGENO.Text) > 0 THEN
     BEGIN
     SHOWMESSAGE('此编号已经重复使用!');  EXIT;
     END;


  Case MessageDlg('是否确定存储此条记录?',mtConfirmation,[mbYes,mbNo,mbCancel],0) of
   mrYES :begin
          FM_DB_QUERY_POST(FMMAIND.DATABASE,QBGDS);
          NORMALMODE;
          end;
   mrNO  :begin
          QBGDS.Cancel;
          NORMALMODE;
          end;
  end;

end;

procedure TFMBGDSQ.BTNCALClick(Sender: TObject);
begin
 IF MessageDlg('确定不新增本条记录?',mtConfirmation,[mbYes,mbNo],0)=mrYes THEN
    BEGIN
    QBGDS.Cancel;
    NORMALMODE;
    END;
end;

procedure TFMBGDSQ.BTNQUTClick(Sender: TObject);
begin
  NORMALMODE;
  CLOSE;
end;

procedure TFMBGDSQ.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FormRelease(FMBGDSQ);
end;
              
procedure TFMBGDSQ.YES21Click(Sender: TObject);
begin
  BTNYES.Click;
end;

procedure TFMBGDSQ.ESC1Click(Sender: TObject);
begin
  BTNCAL.Click;
end;

procedure TFMBGDSQ.QUIT1Click(Sender: TObject);
begin
  CLOSE;
end;

procedure TFMBGDSQ.BitBtn1Click(Sender: TObject);
VAR F_NAME : array[1..10] of STRING;
begin
  WITH QBGDS DO
    BEGIN
    CLOSE;
    SQL.CLEAR;
    SQL.ADD('SELECT * ');
    SQL.ADD('FROM BGDS');
    SQL.ADD('WHERE BGENO IS NOT NULL');

    F_NAME[1] := 'BGENO';
    F_NAME[2] := 'BGNAM';
    F_NAME[3] := 'BGID1';

    //字符串查询
    SQL.ADD(FINDFORM_WHEREKEY_STRING(F_NAME[1],LB1.Text,''));
    SQL.ADD(FINDFORM_WHEREKEY_STRING(F_NAME[2],LB3.Text,''));
    SQL.ADD(FINDFORM_WHEREKEY_STRING(F_NAME[3],LB2.Text,''));
    OPEN;
    END;
end;

procedure TFMBGDSQ.BitBtn2Click(Sender: TObject);
begin
  LB1.Clear;
  LB2.Clear;
  LB3.Clear;
end;

end.

⌨️ 快捷键说明

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