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

📄 cwxh.pas

📁 根据箱号
💻 PAS
字号:
unit Cwxh;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Cmodel, Menus, StdCtrls, ExtCtrls, Spin, ComCtrls, ToolWin,
  ImgList, Grids, DBGrids, DB, ADODB, Buttons;

type
  Twxh = class(Tmodel)
    Panel2: TPanel;
    Label1: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    SpinEdit1: TSpinEdit;
    chws: TSpinEdit;
    chsl: TSpinEdit;
    ToolBar1: TToolBar;
    qrlr: TToolButton;
    jxlr: TToolButton;
    ImageList1: TImageList;
    xzjx: TToolButton;
    qxlr: TToolButton;
    tc: TToolButton;
    ToolButton3: TToolButton;
    ToolButton6: TToolButton;
    zzlr: TToolButton;
    ToolButton9: TToolButton;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    ADOCommand1: TADOCommand;
    DBGrid2: TDBGrid;
    qkxh: TToolButton;
    ADOQuery3: TADOQuery;
    chfz: TToolButton;
    RichEdit1: TRichEdit;
    procedure tcClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure xzjxClick(Sender: TObject);
    procedure Edit2Enter(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure qkxhClick(Sender: TObject);
    procedure qxlrClick(Sender: TObject);
    procedure jxlrClick(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure zzlrClick(Sender: TObject);
    procedure qrlrClick(Sender: TObject);
    procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure chfzClick(Sender: TObject);
  private
    { Private declarations }
    procedure settool(isenabled:bool);
  public
    { Public declarations }
  end;

var
  wxh: Twxh;
  optype,optype1:string;
  xhsl:integer;
  xh:string;
  ws,i,j:integer;
  sum:integer;

implementation
 uses cdata, Cmain;
{$R *.dfm}
procedure Twxh.settool(isenabled:bool);
begin
  if isenabled=true then
     begin
       qrlr.Enabled:=true;
       qxlr.Enabled:=false;
       xzjx.Enabled:=false;
       jxlr.Enabled:=false;
       chfz.Enabled:=false;
     end
  else
     begin
       qrlr.Enabled:=false;
       jxlr.Enabled:=true;
       qxlr.Enabled:=false;
       zzlr.Enabled:=false;
       xzjx.Enabled:=true;
       chfz.Enabled :=true;
       qkxh.Enabled:=false;
       tc.Enabled:=true;
       closeicon.Visible:=true;
       edit2.Enabled:=false;
     end
end;
procedure Twxh.tcClick(Sender: TObject);
begin
  inherited;
  close;
end;

procedure Twxh.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  action:=cafree;
end;

procedure Twxh.xzjxClick(Sender: TObject);
begin
  inherited;
  settool(true);
  edit1.Enabled:=true;
  spinedit1.Enabled:=true;
  spinedit1.Value:=1;
//  xhws.Enabled:=true;
  chws.Enabled:=true;
  chsl.Enabled:=true;
  edit2.Enabled:=true;
  optype:='';
  edit1.SetFocus;
  edit1.Clear;
  label5.Visible:=false;
  adoquery2.Close;
  adoquery2.SQL.clear;
  adoquery2.sql.add('select *  from 串号管理 where 机型='''+edit1.Text+''' and 录入者=''cch'' and 录入日期=date() order by 内部编号 desc ');
  adoquery2.open;
  i:=0;
  j:=0;
  sum:=0;
end;

procedure Twxh.Edit2Enter(Sender: TObject);

begin
  inherited;
  if trim(edit1.Text)='' then
     begin
       messagedlg('机型代码或名称不能为空',mterror,[mbyes],0);
       edit1.SetFocus;
     end
  else
  if chsl.Value=1 then
     begin
       messagedlg('请设定每箱串号的数量是多少!',mtinformation,[mbyes],0);
       chsl.SetFocus;
     end;
end;

procedure Twxh.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if (trim(edit2.Text)<>'') and (key=#13) then
     begin
       ws:=length(trim(edit2.Text));
       qrlr.Click;
     end;
end;

procedure Twxh.FormShow(Sender: TObject);
begin
  inherited;
 // adocommand1.CommandText:='delete * from 串号管理';
 // adocommand1.Execute;
end;

procedure Twxh.qkxhClick(Sender: TObject);
begin
  inherited;
  optype:='';
  optype1:='1';
  edit2.SetFocus;
end;

procedure Twxh.qxlrClick(Sender: TObject);
begin
  inherited;
  if messagedlg(pchar('箱号为:【'+xh+'】共录入【'+inttostr(i-1)+'】个串号!,是否取消?'),mtWarning,[mbyes,mbno],0)=mryes then
     begin
       adocommand1.CommandText:='delete * from 串号管理 where 箱号='''+xh+'''';
       adocommand1.Execute;
       label5.Caption:='当前已录【'+inttostr(0)+'】个串号,共录【'+inttostr(sum-i+1)+'】个串号';
       adoquery2.Close;
       adoquery2.SQL.clear;
       adoquery2.sql.add('select *  from 串号管理 where 机型='''+edit1.Text+''' order by 内部编号 desc ');
       adoquery2.open;
       settool(false);
       spinedit1.Enabled:=false;
       jxlr.Enabled:=false;
     end;
end;

procedure Twxh.jxlrClick(Sender: TObject);
begin
  inherited;
  settool(true);
  spinedit1.Enabled:=true;
  edit1.Enabled:=false;
 // xhws.Enabled:=false;
  chws.Enabled:=false;
  chsl.Enabled:=false;
  spinedit1.Value:=spinedit1.Value+1;
  spinedit1.SetFocus;
  edit2.Enabled:=true;
  optype:='';
end;

procedure Twxh.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  inherited;
  if adoquery2.RecordCount=0 then
     label5.Visible:=true;
end;

procedure Twxh.zzlrClick(Sender: TObject);
begin
  inherited;
  if messagedlg(pchar('你设箱数为:【'+inttostr(spinedit1.Value)+'】,实际录入箱数为:【'+inttostr(j)+'】'+#13#13+'     是否终止录入?'),mtWarning,[mbyes,mbno],0)=mryes then
     begin
       settool(false);
       jxlr.Enabled:=false;
    end;
end;

procedure Twxh.qrlrClick(Sender: TObject);
var
  maxnum:string;
  z,w:integer;
begin
  inherited;
  if (i=0) or(i>chsl.Value) then
      i:=1;
 // if i=1 then
     begin
       adoquery3.Close;
       adoquery3.SQL.Clear;
       adoquery3.SQL.add('select max(箱号) as 最大箱号 from 串号管理 where 箱号有无=''无'' and 录入者='''+main.usermc+''' and 录入期间='''+main.lrqj+'''');
       adoquery3.Open;
       if adoquery3.fieldbyname('最大箱号').asstring='' then
          begin
            xh:=''+main.userdm+''+'-'+''+main.lrqjxh+''+'0001' ;
          end
       else
          begin
            xh:=adoquery3.fieldbyname('最大箱号').asstring;
            adoquery1.Close;
            adoquery1.SQL.Clear;
            adoquery1.SQL.add('select 箱号 from 串号管理 where 箱号='''+adoquery3.fieldbyname('最大箱号').asstring+'''');
            adoquery1.Open;
            if adoquery1.RecordCount=chsl.Value then
               begin
                 maxnum:=adoquery3.fieldbyname('最大箱号').asstring;
                 maxnum:=copy(maxnum,11,14);
                 maxnum:=inttostr(strtoint(maxnum)+1);
                 if length(maxnum)=1 then
                    xh:=''+main.userdm+''+'-'+''+main.lrqjxh+''+'000'+maxnum;
                 if length(maxnum)=2 then
                    xh:=''+main.userdm+''+'-'+''+main.lrqjxh+''+'00'+maxnum;
                 if length(maxnum)=3 then
                    xh:=''+main.userdm+''+'-'+''+main.lrqjxh+''+'0'+maxnum;
                end;         
        end;
    end;
  if i<=chsl.Value  then
     begin
       if length(trim(edit2.Text))=chws.Value then
          begin
            adoquery1.Close;
            adoquery1.SQL.clear;
            adoquery1.sql.add('select * from 串号管理 where 电子串号='''+edit2.text+'''');
            adoquery1.open;
            adoquery3.Close;
            adoquery3.SQL.clear;
            adoquery3.sql.add('select * from 串号管理 where 箱号='''+adoquery1.fieldbyname('箱号').AsString+'''');
            adoquery3.open;
            if adoquery3.RecordCount=20 then
               begin
                 application.MessageBox('该串号的箱号已经在系统中存在!','提示',64);
                 edit2.Clear;
               end
            else
              if adoquery1.RecordCount=1 then
                 begin
                   edit2.Clear;
                 end
              else
             begin
                 adocommand1.CommandText:='insert into 串号管理([机型],[序号],[箱号],[电子串号],[录入者],[录入期间],[录入日期],[箱号有无]) values('''+edit1.Text+''','''+inttostr(i)+''','''+xh+''','''+edit2.Text+''','''+main.usermc+''','''+main.lrqj+''',date(),''无'')' ;
                 adocommand1.Execute;
                 adoquery2.Close;
                 adoquery2.SQL.clear;
                 adoquery2.sql.add('select *  from 串号管理 where 机型='''+edit1.Text+''' and 录入者='''+main.usermc+''' and 录入日期=date() order by 内部编号 desc ');
                 adoquery2.open;
                 if i=1 then
                     begin
                       edit1.Enabled:=false;
                       chws.Enabled:=false;
                       chsl.Enabled:=false;
                       qxlr.Enabled:=true;
                       zzlr.Enabled:=false;
                       tc.Enabled:=false;
                       closeicon.Visible:=false;
                     end;
                  sum:=sum+1;
                  label5.Caption:='当前已录【'+inttostr(i)+'】个串号,共录【'+inttostr(sum)+'】个串号';
                  edit2.Clear;
                  edit2.SetFocus;
                  i:=i+1;
                  if i=chsl.Value+1 then
                     begin
                    // showmessage('当前箱号的串号已录完!');
                       edit2.Clear;
                       edit2.SetFocus;
                       jxlr.Enabled:=false;
                       zzlr.Enabled:=false;
                       j:=j+1;
                       optype:='';
                       i:=0;
                       if j=spinedit1.Value then
                          begin
                            messagedlg(pchar('【'+spinedit1.Text+'】箱【'+inttostr(spinedit1.value*chsl.Value)+'】个串号已录完!'),mtinformation,[mbyes],0);
                            settool(false);
                            spinedit1.Enabled:=false;
                            i:=0;
                          end
                       else
                          begin
                            jxlr.Enabled:=false;
                            qxlr.Enabled:=false;
                            zzlr.Enabled:=true;
                            xzjx.Enabled:=false;
                            qkxh.Enabled:=false;                            
                          end;                  
                       end;
                    end;
                 end
                 else
                   begin   
                     messagedlg('串号位数有误,应为【'+inttostr(chws.Value)+'】位!',mterror,[mbyes],0);
                     edit2.Clear;
                     edit2.SetFocus;
                   end;
               end;

            end;  
procedure Twxh.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  inherited;
   if DBGrid2.DataSource.DataSet.RecNo mod 2 = 1 then
     begin
       DBGrid2.Canvas.Brush.Color :=$00FFFFC2;
       dbgrid2.Canvas.Font.Color:=clwindowtext;
       DBGrid2.DefaultDrawColumnCell(Rect,DataCol,Column,State);
     end
  else
    begin
      DBGrid2.Canvas.Brush.Color :=$00F2F2F2;
      dbgrid2.Canvas.Font.Color:=clwindowtext;
      DBGrid2.DefaultDrawColumnCell(Rect,DataCol,Column,State);
    end;
end;

procedure Twxh.chfzClick(Sender: TObject);
var
  fhjl:string;
begin
  inherited;
  richedit1.Clear;
  adoquery2.First;
  while not adoquery2.Eof do
  begin
     richedit1.Lines.Add(''+adoquery2.fieldbyname('电子串号').asstring+'');
     if trim(adoquery2.fieldbyname('发货机率').AsString)='' then
        fhjl:='1'
     else
        fhjl:=inttostr(strtoint(trim(adoquery2.fieldbyname('发货机率').AsString))+1);
     adocommand1.CommandText:='update 串号管理 set 发货机率='''+fhjl+''' where 电子串号='''+adoquery2.fieldbyname('电子串号').asstring+'''';
     adocommand1.Execute;
     adoquery2.Next;
  end;
  richedit1.SelectAll;
  richedit1.CopyToClipboard;
  application.MessageBox('复制成功,可以进行粘贴!','好消息',64);

end;

end.

⌨️ 快捷键说明

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