📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, Menus, Mask, DBCtrls,
Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Edit1: TEdit;
Label1: TLabel;
DBGrid1: TDBGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N6: TMenuItem;
N5: TMenuItem;
PC1: TMenuItem;
DBEsdjg: TDBEdit;
DBEshangji: TDBEdit;
DBExiaji: TDBEdit;
DBEsj: TDBEdit;
DBExj: TDBEdit;
Label2: TLabel;
Timer1: TTimer;
Splitter1: TSplitter;
Label3: TLabel;
Label4: TLabel;
Panel3: TPanel;
DBGrid2: TDBGrid;
Panel4: TPanel;
N7: TMenuItem;
DBEmrjg: TDBEdit;
DBEyhm: TDBEdit;
N8: TMenuItem;
N9: TMenuItem;
DBEqx: TDBEdit;
DBText1: TDBText;
N3: TMenuItem;
Label5: TLabel;
function sswu(yuanshi:string):real;
function jgjs(shangji:string;xiaji:string;MM:string):string;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure N5Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure PC1Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses D_M, sd_gl, dd_gl, mr_jg, deng_lu, dl_gl, shan_chu;
{$R *.dfm}
function Tform1.sswu(yuanshi:string):real;
var
dd:string;
begin
if pos('.',yuanshi)<>0 then
begin
dd:=copy(yuanshi,pos('.',yuanshi)+1,3);
if (strtofloat(dd)>=0)and(strtofloat(dd)<=25) then
result:=strtofloat(copy(yuanshi,1,pos('.',yuanshi)-1))
else
if (strtofloat(dd)>25)and(strtofloat(dd)<=75) then
result:=strtofloat(copy(yuanshi,1,pos('.',yuanshi)-1))+0.5
else
if (strtofloat(dd)>75)and(strtofloat(dd)<=99) then
result:=strtofloat(copy(yuanshi,1,pos('.',yuanshi)-1))+1;
end
else
result:=strtofloat(yuanshi);
end;
function Tform1.jgjs(shangji:string;xiaji:string;MM:string):string;
var
tt,xiaoshi,fenzhong,allmoney:string;
begin
tt:='';
xiaoshi:='';
fenzhong:='';
allmoney:='';
//tt:=timetostr(now()-strtodatetime(DM.ADOTgltemp.Lookup('卡编号',edit1.Text,'上机时间')));
tt:=timetostr(strtodatetime(xiaji)-strtodatetime(shangji));
xiaoshi:=copy(tt,1,2);
if copy(xiaoshi,2,2)=':' then
xiaoshi:=copy(xiaoshi,1,1);
xiaoshi:=floattostr(strtofloat(xiaoshi)*strtofloat(MM));//小时位的计算
if copy(tt,3,1)=':' then
fenzhong:=copy(tt,4,2)
else
fenzhong:=copy(tt,3,2);
fenzhong:=copy(floattostr(strtofloat(fenzhong)/60*strtofloat(MM)),1,4);// 分钟位的计算
result:=floattostr(strtofloat(xiaoshi)+strtofloat(fenzhong));//总金额的计算
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
moneyall:double;
ok,ss,xx:string;
begin
ss:='';
xx:='';
if key=#13 then
if (DM.ADOTgltemp.Lookup('卡编号',edit1.Text,'卡编号')=Null) then
begin
DM.ADOTgl.Append;
DM.ADOTgl.FieldByName('卡编号').AsString:=edit1.Text;
DM.ADOTgl.FieldByName('上机时间').AsString:=datetimetostr(now());
DM.ADOTgl.FieldByName('操作员').AsString:=DBEyhm.Text;
DM.ADOTgl.Post;
DM.ADOTgltemp.Append;
DM.ADOTgltemp.FieldByName('卡编号').AsString:=edit1.Text;
DM.ADOTgltemp.FieldByName('上机时间').AsString:=datetimetostr(now());
DM.ADOTgltemp.Post;
edit1.Text:='';
DBText1.Caption:=inttostr(strtoint(DBtext1.Caption)-1);
DM.ADOQuery1.Close;
DM.ADOQuery1.Open;
DM.ADOQuery2.Close;
DM.ADOQuery2.Open;
end
else
begin
dm.ADOTgl.Locate('卡编号;上机时间',vararrayof([DM.ADOTgltemp.Lookup('卡编号',edit1.Text,'卡编号'),DM.ADOTgltemp.Lookup('卡编号',edit1.Text,'上机时间')]),[]);
dm.ADOTgl.Edit;
DM.ADOTgl.FieldByName('下机时间').AsString:=datetimetostr(now());
DM.ADOTgl.UpdateBatch;
DM.ADOTgl.Edit;
DM.ADOTjggl.First;
ok:='';
repeat
begin
if strtodatetime(DBEsj.Text)<=strtodatetime((datetostr(now())+' '+DBEshangji.Text)) then
begin
//情况2 *(*)
if (strtodatetime(DBExj.Text)>=strtodatetime((datetostr(now())+' '+DBEshangji.Text)))and(strtodatetime(DBExj.Text)<strtodatetime((datetostr(now())+' '+DBExiaji.Text))) then
begin
DM.ADOTgl.FieldByName('结算').AsFloat:=sswu(jgjs(DBEsj.Text,datetostr(now())+' '+DBEshangji.Text,DBEmrjg.text))+sswu(jgjs(datetostr(now())+' '+DBEshangji.Text,DBExj.Text,DBEsdjg.Text));
ok:='ok';
break;
end;
//情况5 *()*
if (strtodatetime(DBExj.Text)>=strtodatetime((datetostr(now())+' '+DBExiaji.Text))) then
begin
moneyall:=0;
moneyall:=sswu(jgjs(DBEsj.Text,datetostr(now())+' '+DBEshangji.Text,DBEmrjg.text));
while ok<>'ok' do
begin
DM.ADOTjggl.Next;
if DM.ADOTjggl.eof then
begin
DM.ADOTgl.FieldByName('结算').AsFloat:=moneyall+sswu(jgjs(datetostr(now())+' '+DBEshangji.Text,datetostr(now())+' '+DBExiaji.Text,DBEsdjg.Text))+sswu(jgjs(datetostr(now())+' '+DBExiaji.Text,DBExj.Text,DBEmrjg.Text));
ok:='ok';
break;
end;
if (strtodatetime(DBExj.Text)<=strtodatetime((datetostr(now())+' '+DBEshangji.Text))) then
begin
DM.ADOTjggl.Prior;
DM.ADOTgl.FieldByName('结算').AsFloat:=moneyall+sswu(jgjs(datetostr(now())+' '+DBEshangji.Text,datetostr(now())+' '+DBExiaji.Text,DBEsdjg.Text))+sswu(jgjs(datetostr(now())+' '+DBExiaji.Text,DBExj.Text,DBEmrjg.Text));
ok:='ok';
break;
end;
DM.ADOTjggl.Prior;
ss:=datetostr(now())+' '+DBExiaji.Text;
DM.ADOTjggl.Next;
xx:=datetostr(now())+' '+DBEshangji.Text;
DM.ADOTjggl.Prior;
moneyall:=moneyall+sswu(jgjs(datetostr(now())+' '+DBEshangji.Text,datetostr(now())+' '+DBExiaji.Text,DBEsdjg.Text))+sswu(jgjs(ss,xx,DBEmrjg.Text));
DM.ADOTjggl.Next;
end;
break;
end;
end;
if (strtodatetime(DBEsj.Text)>=strtodatetime((datetostr(now())+' '+DBEshangji.Text))) then
begin
//情况3 (**)
if strtodatetime(DBExj.Text)<=strtodatetime((datetostr(now())+' '+DBExiaji.Text)) then
begin
DM.ADOTgl.FieldByName('结算').AsFloat:=sswu(jgjs(DBEsj.Text,DBExj.Text,DBEsdjg.Text));
ok:='ok';
break;
end;
//情况4(*)*
if strtodatetime(DBEsj.Text)<=strtodatetime((datetostr(now())+' '+DBExiaji.Text)) then
if strtodatetime(DBExj.Text)>=strtodatetime((datetostr(now())+' '+DBExiaji.Text)) then
begin
DM.ADOTjggl.Next;
if DM.ADOTjggl.Eof then
begin
DM.ADOTgl.FieldByName('结算').AsFloat:=sswu(jgjs(DBEsj.Text,datetostr(now())+' '+DBExiaji.Text,DBEsdjg.Text))+sswu(jgjs(datetostr(now())+' '+DBExiaji.Text,DBExj.Text,DBEmrjg.text));
ok:='ok';
break;
end
else
begin
if (strtodatetime(DBExj.Text)<=strtodatetime((datetostr(now())+' '+DBEshangji.Text))) then
begin
DM.ADOTjggl.Prior;
DM.ADOTgl.FieldByName('结算').AsFloat:=sswu(jgjs(DBEsj.Text,datetostr(now())+' '+DBExiaji.Text,DBEsdjg.Text))+sswu(jgjs(datetostr(now())+' '+DBExiaji.Text,DBExj.Text,DBEmrjg.text));
ok:='ok';
break;
end;
end;
end;
end;
end;
DM.ADOTjggl.Next;
until DM.ADOTjggl.Eof;
//情况1 **()
if ok='' then
begin
DM.ADOTgl.FieldByName('结算').AsFloat:=sswu(jgjs(DBEsj.Text,DBExj.Text,DBEmrjg.text));
ok:=''
end;
DM.ADOTgl.UpdateBatch;
DM.ADOTgltemp.Locate('卡编号',edit1.Text,[]);
DM.ADOTgltemp.Edit;
DM.ADOTgltemp.Delete;
DM.ADOTgltemp.UpdateBatch;
Edit1.Text:='';
DM.ADOQuery1.Close;
DM.ADOQuery1.Open;
DM.ADOQuery2.Close;
DM.ADOQuery2.Open;
DBtext1.Caption:=inttostr(strtoint(DBtext1.Caption)+1);
end;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
sdgl.ShowModal;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label2.Caption:=datetimetostr(now());
end;
procedure TForm1.PC1Click(Sender: TObject);
begin
ddgl.ShowModal;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
mrjg.ShowModal;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
if DBEqx.Text='admin' then
dlgl.ShowModal
else
showmessage('您没有这个权限');
end;
procedure TForm1.N4Click(Sender: TObject);
begin
denglu.ShowModal;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
DM.ADOC.Execute;
DM.ADOTgltemp.Active:=true;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
shanchu.ShowModal;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -