📄 groupxf.pas
字号:
unit groupxf;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Mask, Db, DBTables;
type
TGroupXfform = class(TForm)
Label1: TLabel;
groupname: TComboBox;
Label2: TLabel;
djtime: TMaskEdit;
xftype: TComboBox;
money: TEdit;
Label3: TLabel;
Label4: TLabel;
djno: TEdit;
isxj: TCheckBox;
ismf: TCheckBox;
leij: TEdit;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Bevel1: TBevel;
Bevel2: TBevel;
xflist: TListBox;
Bevel3: TBevel;
q1: TQuery;
procedure FormCreate(Sender: TObject);
procedure xftypeExit(Sender: TObject);
procedure moneyKeyPress(Sender: TObject; var Key: Char);
procedure moneyExit(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
GroupXfform: TGroupXfform;
implementation
uses dataproc;
{$R *.DFM}
procedure formini;
begin
with groupxfform do
begin
djtime.Text :=datetimetostr(now);
money.text:='';
djno.Text :='';
isxj.Checked :=false;
ismf.Checked :=false;
leij.Text :='0';
end;
end;
procedure seexm;
var
aa:array [0..1] of string;
begin
with groupxfform do
begin
aa[0]:='';
aa[1]:='';
getvalue(aa,'select custype,cusname from custype where custype='''+copy(trim(xftype.text),1,4)+'''');
if length(trim(aa[0]))=0 then
begin
showmessage('消费项目编号错误');
xftype.SetFocus ;
exit;
end
else
xftype.Text :=trim(aa[0])+' '+aa[1];
end
end;
procedure addlist;
var
curxf:double;
i:integer;
sp,sp5:string;
begin
with groupxfform do
begin
i:=0;
sp:=' ';
sp5:=' ';
while i<xflist.items.Count do
begin
if trim(copy(xflist.items[i],1,4))=trim(copy(trim(xftype.Text),1,4)) then
xflist.items.Delete (i);
i:=i+1;
end;
xflist.items.add(copy(trim(xftype.Text),1,4)+' '+copy(copy(trim(xftype.Text),5,25)+sp,1,20)+sp5+copy(floattostr(strtofloat(trim(money.text)))+sp,1,10));
curxf:=0.00;
i:=0;
while i<xflist.Items.count do
begin
curxf:=curxf+strtofloat(trim(copy(xflist.items[i],34,10)));
i:=i+1;
end;
leij.text:=floattostr(curxf);
end;
end;
procedure TGroupXfform.FormCreate(Sender: TObject);
begin
shortdateformat:='yyyy-mm-dd';
comadd(groupname,1,'select groupname from groupnowin');
comadd(xftype,2,'select custype,cusname from custype');
formini;
end;
procedure TGroupXfform.xftypeExit(Sender: TObject);
begin
if length(trim(xftype.Text))>0 then
seexm
else
xftype.SetFocus ;
end;
procedure TGroupXfform.moneyKeyPress(Sender: TObject; var Key: Char);
begin
if ((key<'0') or (key>'9')) then
if (key<>char(8)) and (key<>'-') and (key<>'.') then
key:=char(0);
end;
procedure TGroupXfform.moneyExit(Sender: TObject);
var
d:double;
begin
try
if length(trim(money.text))>0 then
begin
d:=strtofloat(trim(money.text));
if d<>0 then
addlist;
end;
except
showmessage('数量错误');
money.SetFocus ;
end;
end;
procedure TGroupXfform.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
perform(cm_dialogkey,vk_tab,0);
if key=27 then
close;
end;
procedure TGroupXfform.Button1Click(Sender: TObject);
var
x:integer;
aa:array [0..1] of string;
groupno:string;
begin
if length(trim(groupname.items[groupname.itemindex]))=0 then
begin
showmessage('团体名称不能为空');
groupname.setfocus;
exit;
end;
if xflist.Items.Count =0 then
begin
showmessage('此消费单无效');
xftype.SetFocus ;
exit;
end;
if length(trim(djno.Text))=0 then
begin
showmessage('单号不能为空');
djno.SetFocus ;
exit;
end;
getvalue(aa,'select groupid from groupnowin where groupname='''+trim(groupname.items[groupname.itemindex])+'''');
groupno:=trim(aa[0]);
x:=0;
while x<xflist.items.count do
begin
if strtofloat(trim(copy(xflist.items[x],34,10)))<0 then
begin
q1.active:=false;
q1.sql.clear;
q1.sql.add('select sum(money) as money from groupcustom where ((groupid=:pid) and (custype=:pbh))');
q1.ParamByName ('pid').asstring:=groupno;
q1.ParamByName ('pbh').asstring:=copy(xflist.items[x],1,4);
q1.Prepare;
q1.open;
if (q1.IsEmpty) or (q1.FieldByName ('money').asfloat<abs(strtofloat(trim(copy(xflist.items[x],34,10))))) then
begin
showmessage(trim(copy(xflist.items[x],5,25))+' 金额不对');
exit;
end;
q1.Active:=false;
end;
x:=x+1;
end;
x:=0;
while x<xflist.items.count do
begin
q1.Active :=false;
q1.sql.clear;
q1.sql.add('insert into groupcustom values(:pgroupid,:pcustype,:pcusname,:pmoney,:pisxj,:pismd,:pregtime,:pendtime,:pjzfs,:pproid,:pregid,:ppdid,:pdjcode)');
q1.ParamByName ('pgroupid').asstring:=groupno;
q1.ParamByName ('pcustype').asstring:=copy(xflist.items[x],1,4);
q1.ParamByName ('pcusname').asstring:=trim(copy(xflist.items[x],5,25));
q1.ParamByName ('pmoney').asfloat:=strtofloat(copy(xflist.items[x],34,10));
q1.ParamByName ('pisxj').asboolean:=isxj.Checked ;
q1.ParamByName ('pismd').asboolean:=ismf.Checked ;
q1.ParamByName ('pregtime').asdatetime:=now;
q1.ParamByName ('pendtime').asstring:='';
q1.ParamByName ('pjzfs').asstring:='';
q1.ParamByName ('pproid').asstring:='';
q1.ParamByName ('pregid').asstring:=curper.code ;
q1.ParamByName ('ppdid').asstring:='';
q1.ParamByName ('pdjcode').asstring:=trim(djno.Text) ;
q1.Prepare;
q1.ExecSQL ;
q1.Active :=false;
x:=x+1;
end;
q1.Active :=false;
showmessage('此消费单录入成功');
xflist.Clear ;
formini;
groupname.SetFocus ;
end;
procedure TGroupXfform.Button3Click(Sender: TObject);
begin
close;
end;
procedure TGroupXfform.Button2Click(Sender: TObject);
begin
xflist.clear;
formini;
groupname.SetFocus ;
end;
procedure TGroupXfform.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
q1.free;
action:=cafree;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -