ubook.pas
来自「DELPHI编程入门篇.从基础入手,浅显易懂,一定物有所值.」· PAS 代码 · 共 590 行 · 第 1/2 页
PAS
590 行
unit Ubook;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dxExEdtr, dxEdLib, StdCtrls, dxEditor, Grids, dxCntner, ExtCtrls,
Buttons, ComCtrls, DB, ADODB, Menus, RpDefine, RpRave, RpCon, RpConDS;
type
Tfrmbook = class(TForm)
Panel1: TPanel;
Panel3: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
DTPicker1: TDateTimePicker;
DTPicker2: TDateTimePicker;
ComboBox1: TComboBox;
Label5: TLabel;
Edit2: TEdit;
Label6: TLabel;
ComboBox2: TComboBox;
Label7: TLabel;
DTPicker3: TDateTimePicker;
Label8: TLabel;
DTPicker4: TDateTimePicker;
Label9: TLabel;
Edit3: TEdit;
SpeedButton1: TSpeedButton;
Panel2: TPanel;
SpeedButton2: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
StringGrid2: TStringGrid;
ADOQuery1: TADOQuery;
StringGrid1: TStringGrid;
dxButtonEdit1: TdxButtonEdit;
ADOQuery2: TADOQuery;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
RvProject1: TRvProject;
RvbookConnection1: TRvDataSetConnection;
RvbookConnection2: TRvDataSetConnection;
procedure SpeedButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure SpeedButton5Click(Sender: TObject);
procedure dxButtonEdit1Exit(Sender: TObject);
procedure dxButtonEdit1ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure StringGrid2Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure SpeedButton7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmbook: Tfrmbook;
implementation
uses Udatamodule, Ufilprod;
{$R *.dfm}
procedure Tfrmbook.SpeedButton1Click(Sender: TObject);
var
i,arow:integer;
begin
for i:=1 to stringgrid2.RowCount-1 do
stringgrid2.Rows[i].Clear;
stringgrid2.RowCount:=2;
for i:=1 to stringgrid1.RowCount-1 do
stringgrid1.Rows[i].Clear;
stringgrid1.RowCount:=2;
adoquery1.SQL.Text:='select bookid,provid,bookdate,reachdate,handleman from stockbook where bookdate between #'+datetostr(dtpicker1.date)+'# and #'+datetostr(dtpicker2.date)+'#';
if edit1.Text <> '' then
adoquery1.SQL.Add('and bookid = '''+edit1.Text+'''');
if combobox1.Text <> '' then
adoquery1.SQL.add('and provid = '''+copy(combobox1.Text,1,5)+'''');
adoquery1.Open;
if adoquery1.RecordCount > 0 then
begin
stringgrid1.Enabled:=true;
stringgrid2.RowCount:=adoquery1.RecordCount+1;
edit2.Text:=''; edit3.Text:=''; combobox2.ItemIndex:=-1;
//edit2.Text:=adoquery1.FieldValues['bookid'];
//edit3.Text:=adoquery1.FieldValues['bookdate'];
// dtpicker3.Date:=adoquery1.FieldValues['reachdate'];
// dtpicker4.Date:=adoquery1.FieldValues['handleman'];
for i:=0 to combobox2.Items.Count-1 do
begin
if copy(combobox2.Items.Strings[i],1,5) = adoquery1.FieldByName('provid').AsString then
combobox2.ItemIndex:=i;
break;
end;
arow:=1;
while not adoquery1.Eof do
begin
stringgrid2.Cells[1,arow]:=adoquery1.FieldValues['bookid'];
stringgrid2.Cells[2,arow]:=adoquery1.FieldValues['provid'];
stringgrid2.Cells[3,arow]:=adoquery1.FieldValues['bookdate'];
adoquery1.Next;
inc(arow);
end;
speedbutton4.Enabled:=true;
speedbutton7.Enabled:=true;
end;
adoquery1.Close;
end;
procedure Tfrmbook.FormCreate(Sender: TObject);
var
i,j,arows,recordcounts:integer;
begin
stringgrid1.Cells[1,0]:='商品编号';
stringgrid1.Cells[2,0]:='商品名称';
stringgrid1.Cells[3,0]:='数量';
stringgrid2.Cells[1,0]:='订单编号';
stringgrid2.Cells[2,0]:='供应商';
stringgrid2.Cells[3,0]:='订购日期';
dtpicker1.Date:=date-7;
dtpicker2.Date:=date;
adoquery1.SQL.Text:='select provid,provname from provinfo';
adoquery1.Open;
while not adoquery1.Eof do
begin
combobox1.Items.Add(adoquery1.FieldValues['provid']+' '+adoquery1.FieldValues['provname']);
combobox2.Items.Add(adoquery1.FieldValues['provid']+' '+adoquery1.FieldValues['provname']);
adoquery1.Next;
end;
adoquery1.Close;
adoquery1.SQL.Text:='select bookid,provid,bookdate,reachdate,handleman from'
+' stockbook where ifdeal = false';
adoquery1.Open;
recordcounts:=adoquery1.RecordCount;
if recordcounts > 0 then
begin
stringgrid2.RowCount:=adoquery1.RecordCount+1;
edit2.Text:=adoquery1.FieldValues['bookid'];
edit3.Text:=adoquery1.FieldValues['handleman'];;
dtpicker3.Date:=adoquery1.FieldValues['bookdate'];;
dtpicker4.Date:=adoquery1.FieldValues['reachdate'];;
for i:= 0 to combobox2.Items.Count-1 do
begin
if copy(combobox2.Items.Strings[i],1,5) = adoquery1.FieldValues['provid'] then
combobox2.ItemIndex:=i;
break;
end;
stringgrid2.Cells[0,1]:='*';
arows:=1;
while not adoquery1.Eof do
begin
stringgrid2.Cells[1,arows]:=adoquery1.FieldValues['bookid'];
stringgrid2.Cells[2,arows]:=adoquery1.FieldValues['provid'];
stringgrid2.Cells[3,arows]:=adoquery1.FieldValues['bookdate'];
adoquery1.Next;
inc(arows);
end;
adoquery1.close;
adoquery1.SQL.text:='select stockbook1.prid,pluinfo.prname,stockbook1.booknum from'
+' stockbook1 INNER JOIN pluinfo on stockbook1.prid = pluinfo.prid where stockbook1.bookid = '''+stringgrid2.Cells[1,1]+'''';
adoquery1.Open;
if adoquery1.RecordCount > 0 then
begin
stringgrid1.RowCount:=adoquery1.RecordCount+1;
j:=1;
while not adoquery1.Eof do
begin
stringgrid1.Cells[1,j]:=adoquery1.FieldValues['prid'];
stringgrid1.Cells[2,j]:=adoquery1.FieldValues['prname'];
stringgrid1.Cells[3,j]:=adoquery1.FieldValues['booknum'];
adoquery1.Next;
inc(j);
end;
adoquery1.Close;
end;
end
else begin
stringgrid1.Enabled:=false;
speedbutton4.Enabled:=false;
speedbutton7.Enabled:=false;
end;
end;
procedure Tfrmbook.SpeedButton2Click(Sender: TObject);
var
bcount,smonth,sdate:string;
ayear,amonth,adate:word;
i:integer;
begin
for i:=1 to stringgrid1.RowCount-1 do
stringgrid1.Rows[i].Clear;
stringgrid1.RowCount:=2;
stringgrid1.Enabled:=true;
edit1.Text:='';edit1.Enabled:=false;
dtpicker1.Enabled:=false;
dtpicker2.Enabled:=false;
combobox1.Text:='';combobox1.Enabled:=false;
edit2.Text:='';
edit3.Text:='';edit3.Enabled:=true;
dtpicker3.Enabled:=true;dtpicker3.Date:=date;
dtpicker4.Enabled:=true;dtpicker4.Date:=date;
combobox2.Enabled:=true;combobox2.ItemIndex:=-1;
decodedate(date,ayear,amonth,adate);
smonth:=inttostr(amonth);sdate:=inttostr(adate);
if length(smonth) < 2 then smonth:= '0'+smonth;
if length(sdate) < 2 then sdate:='0'+sdate;
bcount:=inttostr(ayear)+smonth+sdate;
adoquery1.SQL.Text:='select max(bookid) as bcount from stockbook where bookid like '''+bcount+'%''';
adoquery1.Open;
if adoquery1.Fields[0].AsString <> '' then
edit2.Text:=inttostr(strtoint64(adoquery1.Fields[0].AsString)+1)
else
edit2.Text:=bcount+'0001';
adoquery1.Close;
speedbutton1.Enabled:=false;
speedbutton2.Enabled:=false;
speedbutton4.Enabled:=false;
speedbutton5.Enabled:=true;
speedbutton6.Enabled:=true;
speedbutton7.Enabled:=false;
speedbutton8.Enabled:=false;
end;
procedure Tfrmbook.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
arect:trect;
begin
if speedbutton5.Enabled then
begin
if acol = 3 then
stringgrid1.Options:=stringgrid1.options+[goediting]
else
stringgrid1.Options:=stringgrid1.options-[goediting];
if ((acol = 1) or (acol = 2)) then
begin
arect:=stringgrid1.CellRect(acol,arow);
arect.Left:=arect.Left+stringgrid1.Left;
arect.Right:=arect.Right+stringgrid1.Left;
arect.top:=arect.Top+stringgrid1.Top;
dxbuttonedit1.Left:=arect.Left+1;
dxbuttonedit1.Top:=arect.Top+1;
dxbuttonedit1.Height:=stringgrid1.RowHeights[arow];
dxbuttonedit1.Width:=stringgrid1.ColWidths[acol];
dxbuttonedit1.Visible:=true;
dxbuttonedit1.Text:=stringgrid1.Cells[acol,arow];
dxbuttonedit1.SetFocus;
end;
if arow <> stringgrid1.RowCount-1 then
begin
if stringgrid1.Cells[1,stringgrid1.RowCount-1] = '' then
begin
stringgrid1.Rows[stringgrid1.RowCount-1].Clear;
if stringgrid1.RowCount > 2 then
stringgrid1.RowCount:=stringgrid1.RowCount-1;
end;
end;
end;
end;
procedure Tfrmbook.SpeedButton5Click(Sender: TObject);
var
i,j,recount:integer;
begin
if edit2.Text = '' then
begin
showmessage('订单编号不能为空');
exit;
end;
if combobox2.Text = '' then
begin
showmessage('供应商不能为空!');
exit;
end;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?