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

📄 cgjh.pas

📁 这是用Delphi编写的中小企业管理系统
💻 PAS
📖 第 1 页 / 共 4 页
字号:
procedure Tf_cgjh.bgKeyPress(Sender: TObject; var Key: Char);
var
  i: Boolean;
begin
  if Col1 = num then  //防止在数量单元格输入非法字符
  begin
    i := (Key<#8)or(Key>#8)and(Key<#48)or(Key>#57);
    if i then
      Key := #0;
  end
  else if Col1 = zk then
  begin
    i := (Key<#8)or(Key>#8)and(Key<#46)or(Key>#46)and(Key<#48)or(Key>#57);
    if i then
      Key := #0;
  end;
end;

procedure Tf_cgjh.TimerKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
  begin
    if timer.DateTime<=Now then
    begin
      Application.MessageBox('保质期不能小于等于当前时间.','提示',64);
      Exit;
    end;
    bg.Cells[bzq,Row1]:= FormatDateTime('yyyy-mm-dd',timer.Date);
    Timer.Visible := False;
    //bg.SetFocus;
    bg.Col := bzq;
  end;
end;

procedure Tf_cgjh.TimerClick(Sender: TObject);
var
  Key: Word;
begin
  Key := vk_Return;
  Timer.OnKeyDown(Nil,key,[ssctrl]);
end;

procedure Tf_cgjh.TimerExit(Sender: TObject);
begin
  Timer.Visible := False;
  bg.SetFocus;
  bg.Col := je;
  bg.Col := bzq;
end;

procedure Tf_cgjh.csChange(Sender: TObject);
begin
  fktj.Clear;
end;

function Tf_cgjh.EndIsNull: Boolean;
var
  Cc: Integer;
begin
  Result := False;
  For Cc := 0 to bg.ColCount-1 do
    if Trim(bg.Cells[Cc,bg.RowCount-1])='' then
    begin
      Result := True;
      Break;
    end;
end;

procedure Tf_cgjh.ClearCurrentRow;
var
  i: Integer;
begin
  For i:=0 to bg.ColCount-1 do
    bg.Cells[i,Row1]:= '';
end;

procedure Tf_cgjh.ClearEndRow;
var
  i: Integer;
begin
  For i:=0 to bg.ColCount-1 do
    bg.Cells[i,bg.RowCount-1]:= '';
end;

procedure Tf_cgjh.cgyExit(Sender: TObject);
var
  key: Word;
begin
  if Trim(cgy.Text)<>'' then
  begin
    Key := vk_ReTurn;
    cgy.OnKeyDown(Sender,Key,[ssctrl]);
  end;
end;

procedure Tf_cgjh.SelectTable(TableName, FieldName: String;FieldValue: Variant);
begin
  With Data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from '+ TableName + ' where '+ FieldName + ' =:a');
    Params[0].Value :=  FieldValue;
    Open;
  end;
  lb.Clear;
  if Data.Query1.RecordCount>0 then
    while Not Data.Query1.Eof do
    begin
      lb.Items.Add(Data.Query1.Fields[1].AsString);
      Data.Query1.Next;
    end;
end;

function Tf_cgjh.GridIsNull: Boolean;
var
  c,r: Integer;
begin
  Result := False;
  For r := 1 to bg.RowCount-1 do
    For c := 0 to bg.ColCount-1 do
    if Trim(bg.Cells[c,r])='' then
    begin
      Result := True;
      Break;
    end;
end;

function Tf_cgjh.IsNull: Boolean;
var
  c,r: Integer;
begin
  Result := False;
  For r := 0 to bg.RowCount-1 do
    For c := 0 to bg.ColCount-2 do
    if Trim(bg.Cells[c,r])='' then
    begin
      Result := True;
      Break;
    end;
end;

function Tf_cgjh.GroupPrice: real;
var
  r: Integer;
  Sum: Real;
begin
  Sum := 0.0;
  For r:=1 to bg.RowCount-1 do
    if Trim(bg.Cells[wzrje,r])<>'' then
      Sum := Sum + StrToFloat(bg.Cells[wzrje,r]);
  Result := Sum;
end;

function Tf_cgjh.GroupTax: real;
var
  r: Integer;
  Sum: Real;
begin
  Sum := 0.0;
  For r:=1 to bg.RowCount-1 do
    if Trim(bg.Cells[se,r])<>'' then
      Sum := Sum + StrToFloat(bg.Cells[se,r]);
  Result := Sum;
end;

procedure Tf_cgjh.jhzrKeyPress(Sender: TObject; var Key: Char);
var
  i: Boolean;
begin
  i := (Key<#8)or(Key>#8)and(Key<#46)or(Key>#46)and(Key<#48)or(Key>#57);
  if i then
    Key := #0;
end;

procedure Tf_cgjh.jhzrChange(Sender: TObject);
var
  r: Integer;
begin
  if Trim(jhzr.Text)<>'' then
  begin
    if (StrToFloat(jhzr.Text)<>0)and(StrToFloat(jhzr.Text)>=StrToFloat(jhxj.Text)) then
    begin
      Application.MessageBox('进货折让不能大于等于进货小计.','提示',64);
      jhzr.Text := '0.0';
      Exit;
    end;
    if StrToFLoat(jhxj.Text)<>0 then
      zrb := StrToFloat(jhzr.Text)/StrToFloat(jhxj.Text);
    if Trim(ksb.Text)='应税内含' then
      zj.Text := Format('%8.4f',[StrToFloat(jhxj.Text)-StrToFloat(jhzr.Text)])
    else
      zj.Text := Format('%8.4f',[StrToFloat(jhxj.Text)-StrToFloat(jhzr.Text)+StrToFloat(jhse.Text)]);
    if FirstRowIsNull= False then
    For r :=1 to bg.RowCount-1 do
      begin
        row1 := r;
        bg.OnSetEditText(sender,0,0,'')
      end;
  end
  else
    jhzr.Text := '0.0';
end;

function Tf_cgjh.EditIsNull: Boolean;
var
  i: Integer;
begin
  Result := False;
  For i := 0 to ControlCount-1 do
  begin
    if Controls[i] is TEdit then
    begin
      if Trim(TEdit(Controls[i]).Text)='' then
      begin
        Result := True;
        Exit;
      end;
    end
    else if Controls[i] is TComboBox then
    begin
      if Trim(TComboBox(Controls[i]).Text)='' then
      begin
        Result := True;
        Exit;
      end;
    end;
  end;
  For i :=0 to Panel2.ControlCount-1 do
  begin
    if Controls[i] is TEdit then
      if Trim(TEdit(Controls[i]).Text)='' then
      begin
        Result := True;
        Break;
      end;
  end;
end;

procedure Tf_cgjh.jhseChange(Sender: TObject);
begin
  if Trim(jhzr.Text)<>'' then
  begin
    if Trim(ksb.Text)='应税内含'then
      zj.Text := Format('%8.4f',[StrToFloat(jhxj.Text)-StrToFloat(jhzr.Text)])
    else
      zj.Text := Format('%8.4f',[StrToFloat(jhxj.Text)-StrToFloat(jhzr.Text)+StrToFloat(jhse.Text)]);
  end
  else
    zj.Text := jhxj.Text;
end;

function Tf_cgjh.FirstRowIsNull: Boolean;
var
  c: Integer;
begin
  Result := False;
  For c:= 0 to bg.ColCount-2 do
    if Trim(bg.Cells[c,1])='' then
    begin
      Result := True;
      Break;
    end;
end;

procedure Tf_cgjh.Grid1Exit(Sender: TObject);
begin
  Grid1.Visible := False;
end;

procedure Tf_cgjh.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  SetWindowLong(tc.Handle,gwl_style,getwindowlong(tc.Handle,gwl_style)or bs_multiline);
  tc.Caption := '退'+ #13 +'出';
  Sumzdkd := 0;
  For i := 0 to zds-1 do
  begin
    Azdkd[i]:= 1;
    sumzdkd := Sumzdkd+ Azdkd[i];
  end;
  Rowzdkd := Cols*(Sumzdkd/zds);
  Row1 := 1;
  Col1 := 0;
end;

procedure Tf_cgjh.qxClick(Sender: TObject);
var
  c,r: Integer;
begin
  For r:=1 to bg.RowCount-1 do
    For c:=0 to bg.ColCount-1 do
      bg.Cells[c,r]:='';
  bg.RowCount:=2;
  Grid1.Visible := False;
  cs.Enabled := True;
  ksb.Enabled := True;
  lb.Visible := False;
  ksb.ItemIndex := 0;
  Row1 := 1;
  Col1 := 0;
  cgph.Clear;
  jhzr.Text := '0.0';
  jhxj.Text:='0.0';
  jhse.Text := '0.0';
  zj.Text:= '0.0';
  cgy.Clear;
  cs.Clear;
  sj.Enabled := True;
  cs.SetFocus;
end;

procedure Tf_cgjh.lbExit(Sender: TObject);
begin
  lb.Visible := False;
end;

procedure Tf_cgjh.cgphEnter(Sender: TObject);
begin
  Grid1.Visible := False;
end;

function Tf_cgjh.GroupSum(spbh: String): Real;
var
  r: Integer;
begin
  Result := 0.0;
  For r := 1 to bg.RowCount-1 do
    if Trim(bg.Cells[spdm,r])= Trim(spbh) then
      Result := Result + StrToInt(bg.Cells[Num,r]);
end;

procedure Tf_cgjh.tcClick(Sender: TObject);

begin
  Close;
end;

procedure Tf_cgjh.RprinterPrint(Sender: TObject);
var
 i,m,n,l,r: integer;
begin
  with Sender as TBaseRePort do
  begin
    zbj := (PageWidth-Rowzdkd)/2;
    SetFont('宋体',18);
    FontColor :=clred;
    ypos := 0.8;
    PrintCenter('采购进货单',PageWidth/2);
    setFont('宋体',10);
    FontColor := clblue;
    ypos := ypos+0.5 ;
    printLeft('采购票号:  '+Trim(cgph.Text),zbj);
    printRight('时    间:'+FormatDateTime('yyyy-mm-dd',sj.DateTime),zbj+Rowzdkd);
    printCenter('厂    商:  '+Trim(cs.Text),PageWidth/2);
    ypos := ypos+0.4;
    m:= zds mod Cols;
    n:= zds div Cols;
    if m<>0 then
      n:=n+1;//n记录需要折几行
    For i:=0 to n-1 do
    begin
      Cleartabs;
      setFont('宋体',12);
      FontColor := clBlue;
      setpen(clblack,pssolid,1,pmcopy);
      settab(zbj,pjcenter,Azdkd[Cols*i],0,boxlineall,0);//在折行时,第一个字段的宽度等于每行的列数*行号(第一行行号为0)
      if i <>n-1 then //不是最后一行
        if Cols = 1 then
          tab(-2,-2,-2,-2,10)
        else
          tab(-2,Na,-2,-2,10)
      else
      begin
        if m<>0 then
        begin
          if (Cols = 1) then  //每行只有一列
            tab(-2,-2,-2,-2,10)
          else if m=1 then
            tab(-2,-2,-2,-2,10)
          else
            tab(-2,na,-2,-2,10);
        end
        else
        begin
          if Cols = 1 then
            tab(-2,-2,-2,-2,10)
          else
            tab(-2,Na,-2,-2,10)
        end;
      end;
      Print(Azdmc[Cols*i]);
      if Cols<>1 then
        if m=0 then //折行时最后一行字段数等于指定的字段数
        begin
          For l:=1 to Cols-1 do
          begin
            settab(na,pjcenter,Azdkd[Cols*i+l],0,boxlineall,0);
              if l=Cols-1 then
                tab(na,-2,-2,-2,10)
              else
                tab(na,Na,-2,-2,10);
            Print(Azdmc[Cols*i+l]);
          end;
        end
        else //折行时最后一行字段数不等于指定的字段数
        begin
          if i= n-1 then //最后一行
            For l :=1 to m-1 do
            begin
              if m>0 then

⌨️ 快捷键说明

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