📄 csjk.pas
字号:
unit csjk;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons;
type
Tf_csjk = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label6: TLabel;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label7: TLabel;
Label8: TLabel;
jkph: TEdit;
sj: TDateTimePicker;
csmc: TEdit;
fkr: TEdit;
fkhj: TEdit;
jkzr: TEdit;
jkje: TEdit;
ljyfk: TEdit;
Panel1: TPanel;
lb: TListBox;
Label9: TLabel;
qcsk: TEdit;
tj: TBitBtn;
bc: TBitBtn;
qx: TBitBtn;
tc: TBitBtn;
procedure jkphKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure tjClick(Sender: TObject);
procedure qxClick(Sender: TObject);
procedure csmcKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure csmcExit(Sender: TObject);
procedure fkrExit(Sender: TObject);
procedure fkrKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lbDblClick(Sender: TObject);
procedure lbKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lbExit(Sender: TObject);
procedure bcClick(Sender: TObject);
procedure fkhjKeyPress(Sender: TObject; var Key: Char);
procedure jkzrChange(Sender: TObject);
procedure jkzrEnter(Sender: TObject);
procedure fkhjChange(Sender: TObject);
procedure ljyfkChange(Sender: TObject);
procedure ljyfkKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
Procedure FindNext;
Function IsNull: Boolean;
Procedure SetListPos(WinControl: TWinControl);
{ Public declarations }
end;
var
f_csjk: Tf_csjk;
implementation
uses DataModal;
{$R *.dfm}
{ Tf_csjk }
procedure Tf_csjk.FindNext;
begin
if FindNextControl(ActiveControl,True,True,True)is TEdit then
TEdit(FindNextControl(ActiveControl,True,True,True)).SetFocus
else if FindNextControl(ActiveControl,True,True,True)is TDateTimePicker then
TDateTimePicker(FindNextControl(ActiveControl,True,True,True)).SetFocus
else if FindNextControl(ActiveControl,True,True,True)is TComboBox then
TComboBox(FindNextControl(ActiveControl,True,True,True)).SetFocus;
end;
procedure Tf_csjk.jkphKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
FindNext;
end;
procedure Tf_csjk.FormCreate(Sender: TObject);
begin
sj.DateTime := Now();
end;
procedure Tf_csjk.tjClick(Sender: TObject);
var
s,m: String;
i: integer;
begin
s:= 'PH'+ FormatDateTime('yyyymmdd',sj.Date);
With Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select max(jkph) as ss From t_csjkjl where sj>=:a and sj <:b');
ParamByName('a').AsDate := Trunc(sj.Date);
ParamByName('b').AsDate := Trunc(sj.Date)+1;
Open;
end;
If Data.Query1.FieldByName('ss').Value = null then
s := s + '001'
else
begin
m:= Trim(Data.Query1.FieldByName('ss').Value) ;
i:= StrToInt(Trim(Copy(m,11,8))) ;
if i<9 then
s:= s + '00'+ InttoStr(i +1)
else if i<99 then
s:= s + '0'+ InttoStr(i +1)
else
s:= s +InttoStr(i +1);
end;
jkph.Text := s;
csmc.SetFocus;
sj.Enabled := False;
end;
procedure Tf_csjk.qxClick(Sender: TObject);
begin
jkph.Clear;
csmc.Clear;
fkr.Clear;
fkhj.Text := '0.0';
jkzr.Text := '0.0';
ljyfk.Text := '0.0';
qcsk.Clear;
sj.DateTime := Now;
sj.Enabled := True;
csmc.SetFocus;
end;
procedure Tf_csjk.csmcKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Next then
begin
lb.Clear;
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select csmc from t_csjk');
Open;
end;
if Data.Query1.RecordCount>0 then
begin
while Not Data.Query1.Eof do
begin
lb.Items.Add(Trim(Data.Query1.FieldByName('csmc').AsString));
Data.Query1.Next;
end;
SetListPos(csmc);
lb.Visible := True;
lb.SetFocus;
lb.Tag := 1;
lb.ItemIndex := 0;
end;
end
else if Key = vk_ReTurn then
jkph.OnKeyDown(sender,key,shift);
end;
procedure Tf_csjk.csmcExit(Sender: TObject);
begin
if Trim(csmc.Text)<>'' then
begin
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_csjk where csmc = :a');
ParamByName('a').AsString := Trim(csmc.Text);
Open;
if RecordCount<1 then
begin
Application.MessageBox('该厂商信息不存在.','提示',64);
csmc.Clear;
end
else
qcsk.Text := Format('%8.4f',[Data.Query2.FieldByName('yfje').AsFloat]);
end;
end;
end;
procedure Tf_csjk.fkrExit(Sender: TObject);
begin
if Trim(fkr.Text)<>'' then
begin
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_employee where ygmc = :a and bmmc = :b ');
ParamByName('a').AsString := Trim(fkr.Text);
ParamByName('b').AsString := '财会部';
Open;
if RecordCount<1 then
begin
Application.MessageBox('该员工不存在或没有该职权.','提示',64);
fkr.Clear;
end;
end;
end;
end;
procedure Tf_csjk.fkrKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Next then
begin
lb.Clear;
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select ygmc from t_employee where bmmc =:a');
ParamByName('a').AsString := '财会部';
Open;
end;
if Data.Query1.RecordCount>0 then
begin
while Not Data.Query1.Eof do
begin
lb.Items.Add(Trim(Data.Query1.FieldByName('ygmc').AsString));
Data.Query1.Next;
end;
SetListPos(fkr);
lb.Visible := True;
lb.SetFocus;
lb.Tag := 2;
lb.ItemIndex := 0;
end;
end
else if Key = vk_ReTurn then
jkph.OnKeyDown(sender,key,shift);
end;
procedure Tf_csjk.lbDblClick(Sender: TObject);
begin
Case lb.Tag of
1: begin
csmc.Text := lb.Items[lb.ItemIndex];
csmc.SetFocus;
end;
2: begin
fkr.Text := lb.Items[lb.ItemIndex];
fkr.SetFocus;
end;
end;
lb.Visible := False;
end;
procedure Tf_csjk.lbKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
lb.OnDblClick(Sender);
end;
procedure Tf_csjk.lbExit(Sender: TObject);
begin
lb.Visible := False;
end;
procedure Tf_csjk.SetListPos(WinControl: TWinControl);
begin
lb.Top := WinControl.Top;
lb.Left := WinControl.Left+(WinControl.Width-lb.Width);
lb.Visible := True;
lb.SetFocus;
end;
function Tf_csjk.IsNull: Boolean;
var
i: Integer;
begin
Result := False;
For i:= 0 to ControlCount-1 do
if Controls[i]is TEdit then
begin
if Trim(TEdit(Controls[i]).Text) ='' then
begin
Result := True;
Break;
end;
end
else if Controls[i]is TComboBox then
begin
if Trim(TComboBox(Controls[i]).Text) ='' then
begin
Result := True;
Break;
end;
end;
end;
procedure Tf_csjk.bcClick(Sender: TObject);
begin
if IsNull = False then
begin
Try
Data.Database.StartTransaction;
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert t_csjkjl values(:a,:b,:c,:d,:e,:f,:g,:h)');
ParamByName('a').AsString := Trim(jkph.Text);
ParamByName('b').AsString := Trim(csmc.Text);
ParamByName('c').AsFloat := StrToFloat(fkhj.Text);
ParamByName('d').AsFloat := StrToFloat(jkzr.Text);
ParamByName('e').AsFloat := StrToFloat(ljyfk.Text);
ParamByName('f').AsFloat := StrToFloat(jkje.Text);
ParamByName('g').AsString := Trim(fkr.Text);
ParamByName('h').AsDate := sj.DateTime;
ExecSQL;
end;
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('update t_csjk set yfje = yfje-:a where csmc = :b');
ParamByName('a').AsFloat := StrToFloat(jkje.Text);
ParamByName('b').AsString := Trim(csmc.Text);
ExecSQL;
end;
if StrToFloat(ljyfk.Text)>0 then
begin
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('update t_csyfk set yfje = 0 where csmc = :a');
ParamByName('a').AsString := Trim(csmc.Text);
ExecSQL;
end;
end;
Data.Database.Commit;
Application.MessageBox('操作成功.','提示',64);
qx.OnClick(Sender);
Except
Data.Database.Rollback;
Application.MessageBox('系统出错.','提示',64);
End;
end;
end;
procedure Tf_csjk.fkhjKeyPress(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_csjk.jkzrChange(Sender: TObject);
begin
if Trim(jkzr.Text)<>'' then
begin
if StrToFloat(jkzr.Text)>StrToFloat(fkhj.Text) then
begin
Application.MessageBox('结款折让不能大于付款合计.','提示',64);
jkzr.Text := '0.0';
jkzr.SelectAll;
Exit;
end;
jkje.Text := Format('%8.4f',[StrToFloat(fkhj.Text)+StrToFloat(jkzr.Text)+StrToFloat(ljyfk.Text)]);
end
else
begin
jkzr.Text := '0.0';
jkzr.SelectAll;
end;
end;
procedure Tf_csjk.jkzrEnter(Sender: TObject);
begin
jkzr.SelectAll;
end;
procedure Tf_csjk.fkhjChange(Sender: TObject);
begin
jkzr.Text := '0.0';
if Trim(fkhj.Text)<>'' then
begin
jkje.Text := Format('%8.4f',[StrToFloat(fkhj.Text)+StrToFloat(jkzr.Text)+StrToFloat(ljyfk.Text)]);
end
else
begin
fkhj.Text := '0.0';
fkhj.SelectAll;
end;
end;
procedure Tf_csjk.ljyfkChange(Sender: TObject);
begin
jkje.Text := Format('%8.4f',[StrToFloat(fkhj.Text)+StrToFloat(jkzr.Text)+StrToFloat(ljyfk.Text)]);
end;
procedure Tf_csjk.ljyfkKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_next then
begin
if Trim(csmc.Text)<>'' then
begin
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select yfje from t_csyfk where csmc = :a');
ParamByName('a').AsString := Trim(csmc.Text);
Open;
end;
if Data.Query2.RecordCount>0 then
ljyfk.Text := Format('%8.4f',[Data.Query2.FieldByName('yfje').AsFloat]);
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -