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

📄 drmainunt.pas

📁 牧羊人服饰系统 (ADO+SQL) 第三方控件:advstringgrid
💻 PAS
字号:
unit drmainunt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DB, Grids, ExtCtrls, BaseGrid, AdvGrid;

type
  Tdrmainfrm = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn3: TBitBtn;
    Label4: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    Label2: TLabel;
    Bevel1: TBevel;
    AdvStringGrid1: TAdvStringGrid;
    Label1: TLabel;
    Edit1: TEdit;
    Label7: TLabel;
    ComboBox1: TComboBox;
    Label8: TLabel;
    Edit2: TEdit;
    Label9: TLabel;
    Edit3: TEdit;
    BitBtn2: TBitBtn;
    Label10: TLabel;
    Label11: TLabel;
    Label13: TLabel;
    Label12: TLabel;
    Label14: TLabel;
    Edit4: TEdit;
    Timer1: TTimer;
    procedure FormActivate(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Edit1Enter(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure ComboBox1Enter(Sender: TObject);
    procedure ComboBox1Exit(Sender: TObject);
    procedure Edit3Enter(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit2Enter(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure AdvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  drmainfrm: Tdrmainfrm;

implementation
    uses data,maind, mainunt,datam;
{$R *.dfm}

var
  drno:integer;

procedure Tdrmainfrm.FormActivate(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:=main.Edit8.Text;
advstringgrid1.Cells[0,0]:='';
edit1.SetFocus;
label4.Caption:=formatdatetime('yyyy-mm-dd',date);
Label6.caption:=create_movein_no('moveinm');
advstringgrid1.Cells[1,0]:='货物条形码';
advstringgrid1.Cells[2,0]:='标准零售价';
advstringgrid1.Cells[3,0]:='调入数量';
advstringgrid1.Cells[4,0]:='金额';
drno:=1;
end;

procedure Tdrmainfrm.BitBtn4Click(Sender: TObject);
begin
close;
end;

procedure Tdrmainfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
drmainfrm:=nil;
drmainfrm.Free;
end;

procedure Tdrmainfrm.FormKeyPress(Sender: TObject; var Key: Char);
begin
    if key=#13 then
    begin
      Perform(CM_DialogKey,Vk_TAB,0);
      key:=#0;
    end;
end;

procedure Tdrmainfrm.Edit1Enter(Sender: TObject);
begin
Edit1.Color:=clSkyBlue;
end;

procedure Tdrmainfrm.Edit1Exit(Sender: TObject);
begin
Edit1.color:=clWindow;
if (length(edit1.Text)<>15) and (edit1.Text<>'') then
begin
messagedlg('对不起!条形码不等于15位',mtError,[mbOk],0);
edit1.SetFocus;
end;
    with dataman.mrQuery do
     begin
       close;
       sql.Clear;
       sql.Add('select distinct 单价 from kc where 货物条形码='''+trim(edit1.Text)+'''');
       open;
       if not IsEmpty then  edit3.Text:=floattostr(Fields[0].Value)
       else  edit3.Text:='';
     end;

end;

procedure Tdrmainfrm.ComboBox1Enter(Sender: TObject);
begin
 ComboBox1.Color:=clSkyBlue;
end;

procedure Tdrmainfrm.ComboBox1Exit(Sender: TObject);
begin
ComboBox1.color:=clWindow;
end;

procedure Tdrmainfrm.Edit3Enter(Sender: TObject);
begin
  Edit3.Color:=clSkyBlue;
end;

procedure Tdrmainfrm.Edit3Exit(Sender: TObject);
begin
  Edit3.color:=clWindow;
end;

procedure Tdrmainfrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
 key:=#0;
end;

end;

procedure Tdrmainfrm.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
 key:=#0;
end;
end;

procedure Tdrmainfrm.Edit2Exit(Sender: TObject);
begin
Edit2.Color:=clWindow;
end;

procedure Tdrmainfrm.Edit2Enter(Sender: TObject);
begin
Edit2.Color:=clSkyBlue;
end;

procedure Tdrmainfrm.BitBtn2Click(Sender: TObject);
var
 i:integer;
begin
   if (edit1.Text='') or (edit2.Text='') or (edit3.Text='') then
    begin
     showmessage('请输入完整的信息!');
     edit1.SetFocus;
    end
   else
    begin
      for i:=1  to advstringgrid1.RowCount do
       begin
         if trim(edit1.Text)=trim(advstringgrid1.Cells[1,i]) then
           begin
            advstringgrid1.Cells[3,i]:=inttostr(strtoint(trim(advstringgrid1.Cells[3,i]))+strtoint(trim(edit2.Text)));
            edit1.Text:='';
            edit1.SetFocus;
            edit3.Text:='';
            break;
            exit;
           end;
         end;
       for i:=advstringgrid1.RowCount  downto 1 do
        begin
          if trim(edit1.Text)<>trim(advstringgrid1.cells[1,i]) then
           begin
            advstringgrid1.Cells[0,drno]:=inttostr(drno);
            advstringgrid1.Cells[1,drno]:=trim(edit1.Text);
            advstringgrid1.Cells[2,drno]:=trim(edit3.Text);
            advstringgrid1.Cells[3,drno]:=trim(edit2.Text);
            drno:=drno+1;
            advstringgrid1.RowCount:=drno;
            edit1.Text:='';
            edit1.SetFocus;
            edit3.Text:='';
            break;
            exit;
          end;
          break;
        end;
       end;
end;

procedure Tdrmainfrm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#8] )then
begin
 key:=#0;
end;
end;

procedure Tdrmainfrm.AdvStringGrid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
 s:string;
 r:TRect;
  begin
 with advStringGrid1 do
   begin
     Canvas.FillRect(Rect);
     if ACol = 4 then
       begin
        Canvas.Font.Color := clred;
        canvas.Font.Style:=[fsBold];
       end;
     s:=Cells[ACol,ARow];
     r:=Rect;
     DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
  end;
end;

procedure Tdrmainfrm.Timer1Timer(Sender: TObject);
var
 j,quality:integer;
 totalth:real;
begin
 totalth:=0;
 quality:=0;
  for j:=1 to advstringgrid1.RowCount do
     begin
      if advstringgrid1.Cells[1,j]='' then break;
      advstringgrid1.Cells[4,j]:=floattostr(strtofloatdef(trim(advstringgrid1.Cells[2,j]),0)*strtointdef(trim(advstringgrid1.Cells[3,j]),0));
      totalth:=strtofloatdef(trim(advstringgrid1.cells[4,j]),0)+totalth;
      label11.Caption:=floattostr(totalth);
      quality:=strtoint(trim(advstringgrid1.cells[3,j]))+quality;
      label12.Caption:=inttostr(quality);
     end;
end;

procedure Tdrmainfrm.BitBtn1Click(Sender: TObject);
var
  i:integer;
begin
timer1.Enabled:=false;
try
 dataman.ADOCon.BeginTrans;
 //更新进货单据表
 with dataman.dcQuery do
   begin
   close;
   sql.Clear;
   sql.Add('insert into moveinm');
   sql.Add('values(:dj,:yf,:js,:je,:jsj,:jsr)');
   parameters.ParamByName('dj').Value:=trim(label6.Caption);
   parameters.ParamByName('yf').Value:=trim(combobox1.text);
   parameters.ParamByName('js').Value:=strtoint(trim(label12.Caption));
   parameters.ParamByName('je').Value:=strtofloat(trim(label11.Caption));
   parameters.ParamByName('jsj').Value:=date();
   parameters.ParamByName('jsr').Value:=trim(edit4.Text);
   prepared;
   execsql;
 //end;
 //更新进货明细表
   close;
   for i:=1 to drno do
    begin
      if trim(advstringgrid1.Cells[1,i])='' then break;
      sql.Clear;
      sql.Add('insert into movein');
      sql.Add('values(:dj,:ht,:djq,:shl,:je)');
      parameters.ParamByName('dj').Value:=trim(label6.Caption);
      parameters.ParamByName('ht').Value:=trim(advstringgrid1.Cells[1,i]);
      parameters.ParamByName('djq').Value:=strtofloat(trim(advstringgrid1.Cells[2,i]));
      parameters.ParamByName('shl').Value:=strtoint(trim(advstringgrid1.Cells[3,i]));
      parameters.ParamByName('je').Value:=strtofloat(trim(advstringgrid1.Cells[4,i]));
      prepared;
      execsql;
    //更新库存
      sql.Clear;
      sql.Add('select * from kc where 货物条形码 ='''+trim(advstringgrid1.Cells[1,i])+'''');
      open;
      if IsEmpty then
      begin
        sql.Clear;
        sql.Add('insert into kc (货物条形码,库存数量,单价) values('''+trim(advstringgrid1.Cells[1,i])+''',:tno,:djd)');
        parameters.ParamByName('djd').Value:=strtoint(advstringgrid1.Cells[2,i]);
        parameters.ParamByName('tno').Value:=strtoint(advstringgrid1.Cells[3,i]);
        execsql;
      end
      else
      begin
        sql.Clear;
        sql.Add('update kc set 库存数量=库存数量+:tno where 货物条形码='''+trim(advstringgrid1.Cells[1,i])+'''');
        parameters.ParamByName('tno').Value:=strtoint(advstringgrid1.Cells[3,i]);
        execsql;
      end;
    end; //结束循环
  end;
  dataman.ADOCon.CommitTrans;
  showmessage('调入单据为'+trim(label6.Caption)+'存盘成功!');
 except
 dataman.ADOCon.RollbackTrans;
 showmessage('调入单据为'+trim(label6.Caption)+'存盘失败!');
 end;
end;

procedure Tdrmainfrm.BitBtn3Click(Sender: TObject);
var
fd:textfile;
drfile,dr:string;
i:integer;
begin
    try
       drfile:=ExtractFilePath(Application.ExeName)+'drout.txt';
       AssignFile(fd,drfile);
       Rewrite(fd);
       write(fd,chr(27)+chr(64));
       dr:=stringOfChar(' ',(32-Length('牧羊人服饰'+ini_load_shopname('打印参数','和祥店')+'调入清单')) div 2)+'牧羊人服饰'+ini_load_shopname('打印参数','和祥店')+'调入清单';
       write(fd,dr+chr(10));
       write(fd,(formatdatetime('yyyy"年"mm"月"dd"日" hh"点"mm"分" ampm',now)+chr(10)):18);
       write(fd,('源分店:'+trim(combobox1.Text)):14);
       write(fd,('单据号:'+trim(label6.caption)):16);
       write(fd,('经手人:'+trim(edit4.Text)):16);
       writeln(fd,'--------------------------------');
               //  12345678901234567890123456789012
         write(fd,'商品条形码     零售价 数量  金额'+chr(10));
         write(fd,'--------------------------------');
         for i:=1 to drno do
           begin
           if advstringgrid1.Cells[1,i]='' then break;
            write(fd,trim(advstringgrid1.cells[1,i]):15);
            write(fd,trim(advstringgrid1.cells[2,i]):5);
            write(fd,trim(advstringgrid1.cells[3,i]):5);
            write(fd,trim(advstringgrid1.cells[4,i]):5);
            write(fd,chr(10));
           end;
            Writeln(fd,'              ');
            write(fd,'-------------------------------');
            Writeln(fd,('调入总数:'+trim(label12.Caption)):16);
            Writeln(fd,('调入总金额:'+trim(label11.Caption)):16);
            Writeln(fd,'              ');
            Writeln(fd,'              ');
            Writeln(fd,'              ');
            Writeln(fd,'              ');
            Writeln(fd,'              ');
            CloseFile(fd);
            PrintFile(drfile);
    except
     abort;
    end;
end;

end.

⌨️ 快捷键说明

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