📄 cgjh.pas
字号:
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 + -