uprinfo.~pas
来自「DELPHI编程入门篇.从基础入手,浅显易懂,一定物有所值.」· ~PAS 代码 · 共 492 行
~PAS
492 行
unit Uprinfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Buttons, ExtCtrls, DB, ADODB, ComCtrls;
type
Tfrmprinfo = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
ComboBox1: TComboBox;
Label4: TLabel;
Edit3: TEdit;
BitBtn1: TBitBtn;
StringGrid1: TStringGrid;
Panel2: TPanel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
ComboBox2: TComboBox;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
ADOQuery1: TADOQuery;
Edit10: TEdit;
DTPicker1: TDateTimePicker;
CheckBox1: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox2Select(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure StringGrid1Click(Sender: TObject);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure Edit7KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure BitBtn2Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmprinfo: Tfrmprinfo;
canupdate:boolean;
implementation
uses Udatamodule, Uprkind;
{$R *.dfm}
procedure Tfrmprinfo.FormCreate(Sender: TObject);
var
arow:integer;
begin
dtpicker1.Date:=date;
stringgrid1.Cells[0,0]:='商品编号';
stringgrid1.Cells[1,0]:='商品名称';
stringgrid1.Cells[2,0]:='商品种类';
stringgrid1.Cells[3,0]:='PLU码';
stringgrid1.Cells[4,0]:='商品单价';
stringgrid1.Cells[5,0]:='批次';
stringgrid1.Cells[6,0]:='保质期';
canupdate:=false;
adoquery1.SQL.Text:='select * from pluinfo order by prid';
adoquery1.Open;
if adoquery1.RecordCount > 0 then
begin
arow:=1;
stringgrid1.RowCount:=adoquery1.RecordCount+1;
while not adoquery1.Eof do
begin
stringgrid1.Cells[0,arow]:=adoquery1.FieldValues['prid'];
stringgrid1.Cells[1,arow]:=adoquery1.FieldValues['prname'];
stringgrid1.Cells[2,arow]:=adoquery1.FieldValues['classid'];
stringgrid1.Cells[3,arow]:=adoquery1.FieldValues['plu'];
stringgrid1.Cells[4,arow]:=adoquery1.FieldValues['prrate'];
stringgrid1.Cells[5,arow]:=adoquery1.fieldbyname('bachtime').AsString;
stringgrid1.Cells[6,arow]:=adoquery1.fieldbyname('traittime').AsString;
inc(arow);
adoquery1.Next;
end;
adoquery1.Close;
end;
combobox1.Text:='全部';
adoquery1.SQL.Text:='select classid,classname from classinfo';
adoquery1.Open;
while not adoquery1.Eof do
begin
combobox1.Items.Add(adoquery1.FieldValues['classname']);
combobox2.Items.Add(adoquery1.FieldValues['classname']);
adoquery1.Next;
end;
adoquery1.Close;
combobox2.SelLength:=5;
end;
procedure Tfrmprinfo.BitBtn1Click(Sender: TObject);
var
procode:string;
i:integer;
begin
if ((edit1.Text <> '') and (edit2.Text <> '') and (strtoint(edit1.Text)>strtoint(edit2.Text))) then
begin
showmessage('编号从小到大排列!');
abort;
end;
for i:=1 to stringgrid1.RowCount-1 do
stringgrid1.Rows[i].Clear;
stringgrid1.RowCount:=2;
if combobox1.Text <> '全部' then
begin
adoquery1.SQL.Text:='select classid from classinfo where classname = '''+combobox1.Text+'''';
adoquery1.Open;
procode:=adoquery1.fieldbyname('classid').AsString;
adoquery1.Close;
adoquery1.SQL.Text:='select * from pluinfo where classid = '''+procode+'''';
end
else
adoquery1.SQL.Text:='select * from pluinfo where 1=1';
if edit1.Text <> '' then
begin
while length(edit1.Text) < 7 do
edit1.Text:='0'+edit1.Text;
adoquery1.SQL.Add('and prid >= '''+edit1.Text+'''');
end;
if edit2.Text <> '' then
begin
while length(edit2.Text) < 7 do
edit2.Text:='0'+edit2.Text;
adoquery1.SQL.Add('and prid <='''+edit2.Text+'''');
end;
if edit3.Text <> '' then
adoquery1.SQL.Add('and prname = '''+edit3.Text+'''');
adoquery1.Open;
if adoquery1.RecordCount > 0 then
begin
stringgrid1.RowCount:=adoquery1.RecordCount+1;
i:=1;
while not adoquery1.Eof do
begin
stringgrid1.Cells[0,i]:=adoquery1.FieldValues['prid'];
stringgrid1.Cells[1,i]:=adoquery1.FieldValues['prname'];
stringgrid1.Cells[2,i]:=adoquery1.FieldValues['classid'];
stringgrid1.Cells[3,i]:=adoquery1.fieldbyname('plu').asstring;
stringgrid1.Cells[4,i]:=adoquery1.fieldbyname('prrate').asstring;
stringgrid1.Cells[5,i]:=adoquery1.fieldbyname('bachtime').asstring;
stringgrid1.Cells[6,i]:=adoquery1.fieldbyname('traittime').asstring;
adoquery1.Next;
inc(i);
end;
end;
adoquery1.Close;
end;
procedure Tfrmprinfo.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
key:=chr(0);
showmessage('从下拉列表中选择!');
end;
procedure Tfrmprinfo.ComboBox2Select(Sender: TObject);
begin
adoquery1.SQL.Text:='select classid from classinfo where classname = '''+combobox2.Text+'''';
adoquery1.Open;
edit10.Text:=adoquery1.fieldbyname('classid').AsString;
adoquery1.Close;
end;
procedure Tfrmprinfo.BitBtn3Click(Sender: TObject);
var
vmaxnum:string;
begin
adoquery1.SQL.Text:='select max(prid) as maxnum from pluinfo';
adoquery1.Open;
vmaxnum:=adoquery1.fieldbyname('maxnum').AsString;
adoquery1.Close;
if vmaxnum = '' then
edit4.Text:='0000001'
else
begin
edit4.Text:=inttostr(strtoint(vmaxnum)+1);
while length(edit4.Text)<7 do
edit4.Text:='0'+edit4.Text;
end;
edit10.Text:='';
edit5.Enabled:=true; edit5.Text:='';
edit6.Enabled:=true; edit6.Text:='';
edit7.Enabled:=true; edit7.Text:='';
edit8.Enabled:=true; edit8.Text:='';
DTPicker1.Enabled:=true;
checkbox1.checked:=true;
combobox2.Enabled:=true; combobox2.Text:='';
bitbtn1.Enabled:=false;bitbtn2.Enabled:=false;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=false;
bitbtn5.Enabled:=false;
bitbtn8.Enabled:=false;
bitbtn6.Enabled:=true;
bitbtn7.Enabled:=true;
edit5.SetFocus;
end;
procedure Tfrmprinfo.BitBtn4Click(Sender: TObject);
begin
canupdate:=true;
edit10.Text:='';
edit5.Enabled:=true;
edit6.Enabled:=true;
edit7.Enabled:=true;
edit8.Enabled:=true;
combobox2.Enabled:=true;
edit4.Text:=stringgrid1.Cells[0,stringgrid1.Row];
edit5.Text:=stringgrid1.Cells[1,stringgrid1.Row];
edit10.Text:=stringgrid1.Cells[2,stringgrid1.Row];
edit6.Text:=stringgrid1.Cells[3,stringgrid1.Row];
edit7.Text:=stringgrid1.Cells[4,stringgrid1.Row];
edit8.Text:=stringgrid1.Cells[5,stringgrid1.Row];
if stringgrid1.Cells[6,stringgrid1.Row] <>'' then
begin
dtpicker1.Enabled:=true;
checkbox1.Checked:=true;
DTPicker1.Date:=strtodate(stringgrid1.Cells[6,stringgrid1.Row]);
end
else begin
dtpicker1.Enabled:=false;
checkbox1.Checked:=false;
end;
adoquery1.SQL.Text:='select classname from classinfo where classid = '''+edit10.Text+'''';
adoquery1.Open;
combobox2.Text:=adoquery1.fieldbyname('classname').AsString;
adoquery1.Close;
bitbtn1.Enabled:=false;bitbtn2.Enabled:=false;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=false;
bitbtn5.Enabled:=false;
bitbtn8.Enabled:=false;
bitbtn6.Enabled:=true;
bitbtn7.Enabled:=true;
edit5.SetFocus;
end;
procedure Tfrmprinfo.BitBtn6Click(Sender: TObject);
var
i:integer;
begin
if edit5.Text = '' then
begin
showmessage('请输入商品名称');
exit;
end;
if edit10.Text = '' then
begin
showmessage('请输入商品种类');
exit;
end;
adoquery1.SQL.Text:='select * from pluinfo where prid = '''+edit4.Text+'''';
adoquery1.Open;
adoquery1.Edit;
adoquery1.FieldValues['prid']:=edit4.Text;
adoquery1.FieldValues['prname']:=edit5.Text;
adoquery1.FieldValues['classid']:=edit10.Text;
adoquery1.FieldValues['plu']:=edit6.Text;
adoquery1.FieldValues['prrate']:=edit7.Text;
adoquery1.FieldValues['bachtime']:=edit8.Text;
if checkbox1.checked then
begin
adoquery1.FieldByName('traittime').AsDateTime:=dtpicker1.Date;
end
else
adoquery1.FieldByName('traittime').AsString:='';
adoquery1.Post;
adoquery1.Close;
if not canupdate then
begin
if stringgrid1.Cells[0,stringgrid1.RowCount-1] <> '' then
stringgrid1.RowCount:=stringgrid1.RowCount+1;
stringgrid1.Cells[0,stringgrid1.RowCount-1]:=edit4.Text;
stringgrid1.Cells[1,stringgrid1.RowCount-1]:=edit5.Text;
stringgrid1.Cells[2,stringgrid1.RowCount-1]:=edit10.Text;
stringgrid1.Cells[3,stringgrid1.RowCount-1]:=edit6.Text;
stringgrid1.Cells[4,stringgrid1.RowCount-1]:=edit7.Text;
stringgrid1.Cells[5,stringgrid1.RowCount-1]:=edit8.Text;
if checkbox1.checked then
stringgrid1.Cells[6,stringgrid1.RowCount-1]:=datetostr(dtpicker1.date);
end
else begin
for i:=1 to stringgrid1.RowCount-1 do
if stringgrid1.Cells[0,i] = edit4.Text then
begin
stringgrid1.Cells[0,i]:=edit4.Text;
stringgrid1.Cells[1,i]:=edit5.Text;
stringgrid1.Cells[2,i]:=edit10.Text;
stringgrid1.Cells[3,i]:=edit6.Text;
stringgrid1.Cells[4,i]:=edit7.Text;
stringgrid1.Cells[5,i]:=edit8.Text;
if checkbox1.Checked then
stringgrid1.Cells[6,i]:=datetostr(dtpicker1.Date)
else
stringgrid1.cells[6,i]:='';
end;
end;
edit4.Clear; edit10.Clear;
edit5.Enabled:=false; edit5.Clear;
edit6.Enabled:=false; edit6.Clear;
edit7.Enabled:=false; edit7.Clear;
edit8.Enabled:=false; edit8.Clear;
dtpicker1.Enabled:=false; edit8.Clear;
combobox2.Enabled:=false; combobox2.Text:='';
bitbtn1.Enabled:=true;
bitbtn2.Enabled:=true;
bitbtn3.Enabled:=true;
bitbtn4.Enabled:=true;
bitbtn5.Enabled:=true;
bitbtn8.Enabled:=true;
bitbtn6.Enabled:=false;
bitbtn7.Enabled:=false;
canupdate:=false;
end;
procedure Tfrmprinfo.BitBtn8Click(Sender: TObject);
begin
self.Close;
end;
procedure Tfrmprinfo.BitBtn7Click(Sender: TObject);
begin
edit4.Clear; edit10.Clear;
edit5.Enabled:=false; edit5.Clear;
edit6.Enabled:=false; edit6.Clear;
edit7.Enabled:=false; edit7.Clear;
edit8.Enabled:=false; edit8.Clear;
dtpicker1.Enabled:=false; edit8.Clear;
checkbox1.checked:=false;
combobox2.Enabled:=false; combobox2.Text:='';
bitbtn1.Enabled:=true;
bitbtn2.Enabled:=true;
bitbtn3.Enabled:=true;
bitbtn4.Enabled:=true;
bitbtn5.Enabled:=true;
bitbtn8.Enabled:=true;
bitbtn6.Enabled:=false;
bitbtn7.Enabled:=false;
canupdate:=false;
end;
procedure Tfrmprinfo.BitBtn5Click(Sender: TObject);
var
i:integer;
begin
if stringgrid1.Row > 0 then
begin
if messagedlg('真的要删除吗?',mtConfirmation,[mbYes, mbNo],0) = mrYes then
begin
adoquery1.SQL.Text:='delete from pluinfo where prid = '''+stringgrid1.Cells[0,stringgrid1.row]+'''';
adoquery1.ExecSQL;
adoquery1.close;
if stringgrid1.RowCount = 2 then
stringgrid1.Rows[1].Clear
else begin
for i:=stringgrid1.Row to stringgrid1.RowCount -2 do
stringgrid1.Rows[i]:=stringgrid1.Rows[i+1];
stringgrid1.Rows[stringgrid1.RowCount-1].Clear;
stringgrid1.RowCount:=stringgrid1.RowCount-1;
end;
end;
end
else
showmessage('请选择删除的项');
end;
procedure Tfrmprinfo.StringGrid1Click(Sender: TObject);
begin
if canupdate then
begin
edit4.Text:=stringgrid1.Cells[0,stringgrid1.Row];
edit5.Text:=stringgrid1.Cells[1,stringgrid1.Row];
edit10.Text:=stringgrid1.Cells[2,stringgrid1.Row];
edit6.Text:=stringgrid1.Cells[3,stringgrid1.Row];
edit7.Text:=stringgrid1.Cells[4,stringgrid1.Row];
edit8.Text:=stringgrid1.Cells[5,stringgrid1.Row];
if stringgrid1.Cells[6,stringgrid1.Row] <> '' then
begin
checkbox1.checked:=true;
dtpicker1.Enabled:=true;
DTPicker1.Date:=strtodate(stringgrid1.Cells[6,stringgrid1.Row]);
end
else begin
dtpicker1.Enabled:=false;
checkbox1.Checked:=false;
end;
adoquery1.SQL.Text:='select classname from classinfo where classid = '''+edit10.Text+'''';
adoquery1.Open;
combobox2.Text:=adoquery1.FieldValues['classname'];
adoquery1.Close;
end;
end;
procedure Tfrmprinfo.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if (( not(key in ['0'..'9'])) and (key <> #8) and (key <> #22)) then
begin
showmessage('输入数字');
key:=chr(0);
exit;
end;
end;
procedure Tfrmprinfo.Edit7KeyPress(Sender: TObject; var Key: Char);
var
s:string;
i,cpoint:integer;
begin
if (( not(key in ['0'..'9'])) and (key <> '.') and (key <> #8) and (key <> #22)) then
begin
showmessage('输入数字或小数点');
key:=chr(0);
exit;
end
else begin
s:=edit7.Text;
cpoint:=0;
for i:=1 to length(s) do
if s[i] = '.' then
inc(cpoint);
if ((cpoint > 0) and (key = '.')) then
key:=chr(0);
end;
end;
procedure Tfrmprinfo.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if (( not(key in ['0'..'9'])) and (key <> #8) and (key <> #22)) then
begin
showmessage('输入数字');
key:=chr(0);
end
end;
procedure Tfrmprinfo.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if not bitbtn8.Enabled then
begin
canclose:=false;
showmessage('请先保存数据然后退出');
end;
end;
procedure Tfrmprinfo.BitBtn2Click(Sender: TObject);
begin
application.CreateForm(tfrmprkind,frmprkind);
frmprkind.ShowModal;
frmprkind.Release;
end;
procedure Tfrmprinfo.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked then
dtpicker1.Enabled:=true
else
dtpicker1.Enabled:=false;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?