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

📄 thmainunt.pas

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

interface

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

type
  Tthmainfrm = class(TForm)
    Label13: TLabel;
    Label14: TLabel;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    Bevel1: TBevel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    BitBtn1: TBitBtn;
    Label7: TLabel;
    Label8: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label9: TLabel;
    Edit3: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    AdvStringGrid1: TAdvStringGrid;
    Timer1: TTimer;
    Label12: TLabel;
    Label15: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormActivate(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit2Enter(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit1Enter(Sender: TObject);
    procedure AdvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  thmainfrm: Tthmainfrm;

implementation
uses data,datam,mainunt,maind;
var
 tno:integer;


{$R *.dfm}

procedure Tthmainfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dataman.thmQuery.Close;
dataman.thmxQuery.Close;
dataman.kcQuery.Close;
inherited;
thmainfrm:=nil;
thmainfrm.Free;
end;

procedure Tthmainfrm.FormActivate(Sender: TObject);
 var
  i:integer;
begin
    Label6.caption:=create_withdraw_no('withdrawm');
    tno:=1;
    label4.Caption:=formatdatetime('yyyy-mm-dd',date);
    advstringgrid1.Cells[1,0]:='商品条形码';
    advstringgrid1.Cells[2,0]:='单价';
    advstringgrid1.Cells[3,0]:='数量';
    advstringgrid1.Cells[4,0]:='金额';
    advstringgrid1.Cells[5,0]:='退货原因';
    for i:=1 to 8 do
      advstringgrid1.Cells[0,i]:=inttostr(i);
    edit1.Text:='';
    edit2.Text:='';
    edit3.Text:=main.Edit8.Text;
    label10.Caption:='0';
    label11.Caption:='0';
    label12.Caption:='';
    edit2.SetFocus;

end;

procedure Tthmainfrm.Edit1Exit(Sender: TObject);
begin
Edit1.color:=clWindow;
end;

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

procedure Tthmainfrm.Edit2Exit(Sender: TObject);
begin
  Edit2.color:=clWindow;
  if trim(edit2.Text)<>'' then
   begin
    with dataman.thmainQuery do
     begin
      close;
      sql.Clear;
      sql.Add('select 打折比例 from menber where VIP卡号='''+edit2.Text+'''');
      open;
      if not isempty then
      label12.Caption:=floattostr(fields[0].value)
      else
      begin
      showmessage('没有这位'+edit2.Text+'会员');
      edit2.SetFocus;
      end;
     end;
    end;

end;

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

procedure Tthmainfrm.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 Tthmainfrm.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  i:integer;
begin
    if trim(edit1.Text)='' then exit;
    if not (key in ['0'..'9',#8,#39,#13]) then key:=#0;
    if key=#13 then
    begin
    with dataman.thmainQuery do
      begin
        close;
        sql.Clear;
        sql.Add('select distinct 单价 from kc where 货物条形码='''+edit1.text+'''');
        open;
      end;
    if dataman.thmainQuery.IsEmpty then
      begin
      showmessage('库存里没有'+trim(edit1.text)+'商品');
      edit1.SelectAll;
      edit1.SetFocus;
      end
    else
     begin
     //第一条记录
       if advstringgrid1.Cells[1,1]='' then
        begin
        advstringgrid1.Cells[1,tno]:=trim(edit1.Text);
        advstringgrid1.Cells[2,tno]:=floattostr(dataman.thmainQuery.Fields[0].value);
        advstringgrid1.Cells[3,tno]:='1';
        //advstringgrid1.Cells[5,i]:='';
        tno:=tno+1;
        edit1.Text:='';
        end
        else
     //不是第一条记录
          begin
           for i:=1 to 8 do
            begin
             //if advstringgrid1.Cells[1,i]='' then break;
             if trim(edit1.Text)=trim(advstringgrid1.Cells[1,i]) then
               begin
                  advstringgrid1.Cells[3,i]:=inttostr(strtoint(trim(advstringgrid1.Cells[3,i]))+1);
                  edit1.Text:='';
                  break;
                  exit;
               end;
             end;
            for i:=8 downto 1 do
             begin
              if trim(edit1.Text)<>trim(advstringgrid1.Cells[1,i]) then
               begin
                 advstringgrid1.Cells[1,tno]:=trim(edit1.Text);
                 advstringgrid1.Cells[2,tno]:=floattostr(dataman.thmainQuery.Fields[0].value);
                 advstringgrid1.Cells[3,tno]:='1';
                 tno:=tno+1;
                 edit1.Text:='';
                 break;
                 exit;
               end;
               break;
            end;
      end;
   end;
   end;
end;

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

procedure Tthmainfrm.BitBtn6Click(Sender: TObject);
var
 m,n:integer;
begin
  try
  dataman.ADOCon.BeginTrans;
  // 插入退货单据表
  with dataman.thmQuery do
   begin
    open;
    append;
    fieldbyname('退货单据号').Value:=trim(label6.Caption);
    if trim(edit2.Text)='' then
    fieldbyname('VIP卡号').Value:=null
    else
    fieldbyname('VIP卡号').Value:=edit2.Text;
    fieldbyname('退货数量').AsString:=trim(label10.Caption);
    fieldbyname('退货金额').AsString:=trim(label11.Caption);
    fieldbyname('退货时间').AsDateTime:=date();
    fieldbyname('经手人').AsString:=trim(edit3.Text);
    post;
   end;
   //插入退货明细表
   with dataman.thmxQuery do
    begin
     open;
     for m:=1 to 8 do
      begin
       if trim(advstringgrid1.Cells[1,m])='' then break;
       append;
       fieldbyname('退货单据号').AsString:=trim(label6.Caption);
       fieldbyname('货物条形码').AsString:=trim(advstringgrid1.Cells[1,m]);
       fieldbyname('单价').AsString:=trim(advstringgrid1.Cells[2,m]);
       fieldbyname('数量').AsString:=trim(advstringgrid1.Cells[3,m]);
       fieldbyname('金额').AsString:=trim(advstringgrid1.Cells[4,m]);
       if trim(advstringgrid1.Cells[5,m])='' then
       fieldbyname('退货原因').Value:=null
       else
       fieldbyname('退货原因').AsString:=trim(advstringgrid1.Cells[5,m]);
       post;
      end;
     end;
    // 修改库存
    with dataman.kcQuery do
     begin
      close;
      sql.Clear;
      for n:=1 to 8 do
       begin
        if trim(advstringgrid1.Cells[1,n])='' then break;
        sql.Add('update kc set 库存数量=库存数量+:thnumb where 货物条形码=:gno');
        parameters.ParamByName('thnumb').Value:=trim(advstringgrid1.Cells[3,n]);
        parameters.ParamByName('gno').Value:=trim(advstringgrid1.Cells[1,n]);
        execsql;
       end;
     end;
     //修改会员消费额
     if trim(edit2.Text)<>'' then
      begin
       with dataman.xfztQuery do
        begin
         close;
         sql.Clear;
         sql.Add('update consume set 会员消费总金额=会员消费总金额- :thxf where VIP卡号=:kh');
         parameters.ParamByName('thxf').Value:=strtoint(trim(label11.Caption));
         parameters.ParamByName('kh').Value:=trim(edit2.Text);
         execsql;
        end;
      end;
     dataman.thmQuery.UpdateBatch();
     dataman.thmxQuery.UpdateBatch();
     Dataman.ADOCon.CommitTrans;
     showmessage('存盘成功!');
    except
     begin
       Dataman.ADOCon.RollbackTrans;
       showmessage('存盘失败!');
       exit;
       timer1.Enabled:=true;
     end;
   end;
end;

procedure Tthmainfrm.BitBtn7Click(Sender: TObject);
var
i,j:integer;
begin
  tno:=1;
  for  i:=1 to advstringgrid1.RowCount do
   for j:=1 to advstringgrid1.ColCount do
     advstringgrid1.Cells[j,i]:='';
   label10.Caption:='0';
   label11.Caption:='0';
  edit2.SetFocus;
end;

procedure Tthmainfrm.BitBtn8Click(Sender: TObject);
begin
Close;
end;

procedure Tthmainfrm.BitBtn1Click(Sender: TObject);
var
  l:integer;
  f:TextFile;
  OutFile,th:string;
begin
    try
     OutFile:=ExtractFilePath(Application.ExeName)+'withdraw.txt';
     AssignFile(F, OutFile);
     Rewrite(F);
     write(f,chr(27)+chr(64));
     th:=stringOfChar(' ',(32-Length('牧羊人服饰退货单据')) div 2)+'牧羊人服饰退货单据';
     write(f,th+chr(10));
     write(f,'退货单据号 :'+trim(label6.caption)+chr(10));
     write(f,('日期 :'+trim(label4.caption)):16);
     write(f,('经手人 :'+trim(edit3.text)):16);
     write(f,chr(10));
     write(f,'--------------------------------'+chr(10));
      //       12345678901234567890123456789012
      Write(F,'商品条形码     单价 数量 金额 退货原因'+chr(10));
      Write(F,'--------------------------------');
      for l:=1 to 8 do
             begin
              if  trim(advstringgrid1.Cells[1,l])='' then break;
                write(f,trim(advstringgrid1.cells[1,l]):15);
                write(f,trim(advstringgrid1.cells[2,l]):4);
                write(f,trim(advstringgrid1.cells[3,l]):4);
                write(f,trim(advstringgrid1.cells[4,l]):4);
                write(f,trim(advstringgrid1.cells[5,l]):5);
                write(f,chr(10));
             end;
           Writeln(F,'              ');
           Write(F,'--------------------------------');
           write(f,('退货总数量 :'+trim(label10.caption)):16);
           write(f,('退货总金额 :'+trim(label11.caption)):16);
           Writeln(F,'              ');
           Writeln(F,'              ');
           Writeln(F,'              ');
           Writeln(F,'              ');
           Writeln(F,'              ');
           CloseFile(f);
           PrintFile(Outfile);
    except
     abort;
    end;
end;

end.

⌨️ 快捷键说明

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