📄 unit_rubb_takecard.pas
字号:
unit Unit_Rubb_TakeCard;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, StdCtrls, ExtCtrls, Buttons, Db, DBTables;
type
TForm_Rubb_TakeCard = class(TForm)
DBGrid1: TDBGrid;
Edit_MixCardNum: TEdit;
Edit_Rubb: TEdit;
Edit_Per: TEdit;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
Panel1: TPanel;
Panel2: TPanel;
Panel_Hint: TPanel;
Qry_TakeCard: TQuery;
DS_TakeCard: TDataSource;
Qry_exe: TQuery;
BitBtn2: TBitBtn;
Panel5: TPanel;
Panel6: TPanel;
BitBtn3: TBitBtn;
Panel3: TPanel;
ComboBox2: TComboBox;
Edit1: TEdit;
Panel4: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Edit2: TEdit;
Edit3: TEdit;
procedure Edit_MixCardNumChange(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn3Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
b_state:integer;
public
{ Public declarations }
end;
var
Form_Rubb_TakeCard: TForm_Rubb_TakeCard;
implementation
uses Unit_Rubb_PrtTakeCard;
{$R *.DFM}
procedure TForm_Rubb_TakeCard.Edit_MixCardNumChange(Sender: TObject);
begin
with Qry_exe do
begin
close;
sql.clear;
sql.add('select * from 炼胶配方表 where 配方编号 = :v_MixCardNum ');
parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
open;
Edit_rubb.text:= fieldbyname('制成品名称').asstring;
if fieldbyname('百分比').asfloat = 0 then
begin
Panel_Hint.Font.Color:=clblue;
Panel_Hint.Caption:='请输入每车重量:';
b_state:=0;
end
else
begin
Panel_Hint.Font.Color:=clred;
Panel_Hint.Caption:='请输入每车重量:';
b_state:=1;
end;
end;//with
end;
procedure TForm_Rubb_TakeCard.BitBtn1Click(Sender: TObject);
var
fTotalWeight:real;
begin
// 必须填写某些栏目
if (Edit3.text = '') or (Edit_Rubb.text = '') then
begin
showmessage('请填写每车重量和车数 ');
exit;
end;//if
fTotalWeight:=0;
Edit_Per.text:=floattostr(strtofloat(Edit3.text)*strtofloat(Edit1.text));
case b_state of //是百分比
1:
begin
try
strtofloat(Edit_Per.text);
except
showmessage('请填写数字!');
exit;
end;// try
with Qry_TakeCard do
begin
close;
sql.clear;
sql.add(format('select 配方编号,制成品名称,材料名称,百分比/100*'+'"%s"'+' as 重量 from 炼胶配方表 where 配方编号 = :v_MixCardNum ',[Edit_Per.text]));
parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
open;
first;
while not eof do
begin
fTotalWeight:=fTotalWeight+ fieldbyname('重量').asfloat;
next;
end; //while
Edit2.text:=floattostr(fTotalWeight);//求总重
end; //with
end;
0:
begin
with Qry_exe do
begin //求总份数
close;
sql.Clear;
sql.Add('select sum(份数) as zofen from 炼胶配方表 where 配方编号 = :v_MixCardNum ');
parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
open;
Edit_Per.text:=floattostr(strtofloat(Edit_Per.text)/fieldbyname('zofen').asfloat);
Edit_Per.text:=formatfloat('0.000', strtofloat(Edit_Per.text));
end; //with
with Qry_TakeCard do
begin
close;
sql.clear;
sql.add(format('select 配方编号,制成品名称,材料名称,份数*'+'"%s"'+' as 重量 from 炼胶配方表 where 配方编号 = :v_MixCardNum ',[Edit_Per.text]) );
parambyname('v_MixCardNum').asinteger:=strtoint(Edit_MixCardNum.text);
open;
first;
while not eof do
begin
fTotalWeight:=fTotalWeight+ fieldbyname('重量').asfloat;
next;
end; //while
Edit2.text:=floattostr(fTotalWeight);//求总重
end; //with
end;
end; //case
end;
procedure TForm_Rubb_TakeCard.FormShow(Sender: TObject);
var
sID,sCode:string;
i:integer;
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
with Qry_exe do
begin
close;
sql.Clear;
sql.Add('select distinct 配方编号, 制成品名称 from 炼胶配方表 ');
open;
first;
ComboBox1.Items.Clear;
ComboBox2.Items.Clear;
while not eof do
begin
ComboBox1.Items.append(fieldbyname('配方编号').asstring+' '+fieldbyname('制成品名称').asstring);
ComboBox2.Items.append(fieldbyname('配方编号').asstring);
next;
end; //while
end; //with
// Edit_MixCardNum.Clear;
Edit_Rubb.Clear;
ComboBox2.ItemIndex:=0;
i:=1;
sID:=combobox2.text;
if sID='' then
begin
showmessage('请先生成领料单!');
exit;
end;
while sID[i] <> '' do
begin
sCode:=sCode+sID[i];
i:=i+1;
end; //while
with qry_exe do
begin
close;
sql.clear;
sql.Add('select * from 炼胶配方表 where 配方编号 = :code ');
parambyname('code').asinteger:=strtoint(sCode);
open;
Edit_MixCardNum.text:=inttostr(strtoint(sCode));
end; //with
end;
procedure TForm_Rubb_TakeCard.ComboBox1Change(Sender: TObject);
var
sID,sCode:string;
i:integer;
begin
i:=1;
sID:=combobox1.text;
while sID[i] <> ' ' do
begin
sCode:=sCode+sID[i];
i:=i+1;
end; //while
with qry_exe do
begin
close;
sql.clear;
sql.Add('select * from 炼胶配方表 where 配方编号 = :code ');
parambyname('code').asinteger:=strtoint(sCode);
open;
Edit_MixCardNum.text:=inttostr(strtoint(sCode));
end; //with
// Edit_MixCardNum.text:=ComboBox1.text;
Form_Rubb_TakeCard.Edit_MixCardNumChange(Sender);
end;
procedure TForm_Rubb_TakeCard.BitBtn2Click(Sender: TObject);
begin
if not Qry_TakeCard.Active then
begin
showmessage('请先生成领料单!');
exit;
end;
Form_Rubb_PrtTakeCard.QuickRep1.Preview;
end;
procedure TForm_Rubb_TakeCard.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Qry_TakeCard.Active:=false;
end;
procedure TForm_Rubb_TakeCard.BitBtn3Click(Sender: TObject);
begin
close;
end;
procedure TForm_Rubb_TakeCard.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
try
if ((Key>57) and (Key<48)) or ((Key<96) and (Key>110)) then
exit;
if Key=190 then
exit;
except
end;
end;
procedure TForm_Rubb_TakeCard.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);
end; //if
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -