📄 cxlt.~pas
字号:
unit Cxlt;
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
Txlt = 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;
Label7: TLabel;
Edit3: TEdit;
chfz: TToolButton;
RichEdit1: TRichEdit;
ToolButton1: TToolButton;
jygl: TCheckBox;
Edit4: TEdit;
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;
type
tdzch=array[1..50] of string;
tdzchcf=array[1..50] of string;
var
xlt: Txlt;
optype,optype1:string;
xhsl:integer;
xh:string;
ws,i,j:integer;
sum:integer;
mydzch:tdzch;
erdzchcf:tdzchcf;
implementation
uses cdata, Cmain;
{$R *.dfm}
procedure Txlt.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;
qkxh.Enabled:=false;
chfz.Enabled:=true;
tc.Enabled:=true;
closeicon.Visible:=true;
edit2.Enabled:=false;
edit3.Enabled:=false;
end
end;
procedure Txlt.tcClick(Sender: TObject);
begin
inherited;
close;
end;
procedure Txlt.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
action:=cafree;
end;
procedure Txlt.xzjxClick(Sender: TObject);
begin
inherited;
settool(true);
edit2.Clear;
edit4.Clear;
edit1.Enabled:=true;
spinedit1.Enabled:=true;
spinedit1.Value:=1;
// xhws.Enabled:=true;
chws.Enabled:=true;
chsl.Enabled:=true;
edit2.Enabled:=true;
edit3.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;
j:=0;
sum:=0;
end;
procedure Txlt.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 Txlt.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 Txlt.FormShow(Sender: TObject);
begin
inherited;
// adocommand1.CommandText:='delete * from 串号管理';
// adocommand1.Execute;
end;
procedure Txlt.qkxhClick(Sender: TObject);
begin
inherited;
optype:='';
optype1:='1';
edit2.SetFocus;
end;
procedure Txlt.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+''' and 录入日期=date() order by 内部编号 desc ');
adoquery2.open;
settool(false);
spinedit1.Enabled:=false;
jxlr.Enabled:=false;
end;
end;
procedure Txlt.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;
edit3.Enabled:=true;
optype:='';
end;
procedure Txlt.DataSource1DataChange(Sender: TObject; Field: TField);
begin
inherited;
if adoquery2.RecordCount=0 then
label5.Visible:=true;
end;
procedure Txlt.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;
spinedit1.Enabled:=false;
end;
end;
procedure Txlt.qrlrClick(Sender: TObject);
var
maxnum,ss:string;
ch1:string;
ch2:integer;
z,w:integer;
op1:string;
begin
inherited;
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;
if length(trim(edit2.Text))=chws.Value then
begin
ch1:=''+edit2.Text+'';
for i:=1 to chsl.Value do
begin
if i=1 then
begin
mydzch[1]:=''+ch1+'';
end
else
begin
ch2:=strtoint(ch1);
ch2:=ch2+1;
ch1:=inttostr(ch2);
if chws.Value-length(ch1)=1 then
ch1:='0'+ch1;
if chws.Value-length(ch1)=2 then
ch1:='00'+ch1;
if chws.Value-length(ch1)=3 then
ch1:='000'+ch1;
mydzch[i]:=ch1;
end;
end;
// try
for i:=1 to chsl.Value do
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.sql.add('select * from 串号管理 where 电子串号='''+mydzch[i]+'''');
adoquery1.open;
if adoquery1.RecordCount=1 then
begin
erdzchcf[i]:='不能录入';
op1:='error1';
// messagedlg(pchar('第【'+inttostr(i)+'】个串号【'+mydzch[i]+'】已存!'),mtinformation,[mbyes],0);
// exit
end
else
begin
erdzchcf[i]:='可以录入';
end;
ss:=ss+'第'+inttostr(i)+'个串号【'+mydzch[i]+'】'+'状态:【'+erdzchcf[i]+'】'+#13;
end;
if op1='error1' then
begin
messagedlg(pchar(ss),mtinformation,[mbyes],0);
edit2.Clear;
edit2.SetFocus;
exit;
end
else
begin
for i:=1 to chsl.Value do
begin
adocommand1.CommandText:='insert into 串号管理([机型],[序号],[箱号],[电子串号],[录入者],[录入期间],[录入日期],[箱号有无]) values('''+edit1.Text+''','''+inttostr(i)+''','''+xh+''','''+mydzch[i]+''','''+main.usermc+''','''+main.lrqj+''',date(),''无'')' ;
adocommand1.Execute;
end;
adoquery2.Close;
adoquery2.SQL.clear;
adoquery2.sql.add('select * from 串号管理 where 机型='''+edit1.Text+''' and 录入者='''+main.usermc+''' and 录入日期=date() order by 内部编号 desc ');
adoquery2.open;
sum:=sum+i-1;
label5.Caption:='共录【'+inttostr(sum)+'】个串号';
begin
// showmessage('当前箱号的串号已录完!');
edit2.Clear;
edit2.SetFocus;
jxlr.Enabled:=false;
zzlr.Enabled:=false;
j:=j+1;
optype:='';
i:=0;
if jygl.Checked=true then
begin
edit4.Text:=copy(mydzch[1],0,6);
edit2.text:=edit4.text;
edit2.SelectAll;
end;
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;
// except
// end;
end
else
begin
messagedlg('串号位数有误,应为【'+inttostr(chws.Value)+'】位!',mterror,[mbyes],0);
if jygl.Checked=true then
begin
edit4.Text:=copy(mydzch[1],0,6);
edit2.text:=edit4.text;
edit2.SelectAll;
end
else
edit2.Clear;
edit2.SetFocus;
end;
// end;
end;
procedure Txlt.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 Txlt.chfzClick(Sender: TObject);
var
fhjl:string;
begin
inherited;
begin
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;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -