📄 csyfk.~pas
字号:
unit csyfk;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons;
type
Tf_csyfk = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label5: TLabel;
Label6: TLabel;
fkph: TEdit;
sj: TDateTimePicker;
csmc: TEdit;
fkr: TEdit;
Panel1: TPanel;
Label3: TLabel;
fkxt: TComboBox;
Label4: TLabel;
fkje: TEdit;
lb: TListBox;
tj: TBitBtn;
bc: TBitBtn;
qx: TBitBtn;
tc: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure tjClick(Sender: TObject);
procedure fkphKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure qxClick(Sender: TObject);
procedure csmcKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lbDblClick(Sender: TObject);
procedure lbKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure fkrKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure fkjeKeyPress(Sender: TObject; var Key: Char);
procedure lbExit(Sender: TObject);
procedure bcClick(Sender: TObject);
procedure csmcExit(Sender: TObject);
procedure fkrExit(Sender: TObject);
private
{ Private declarations }
public
Procedure FindNext;
Function IsNull: Boolean;
Procedure SetListPos(WinControl: TWinControl);
{ Public declarations }
end;
var
f_csyfk: Tf_csyfk;
implementation
uses DataModal;
{$R *.dfm}
procedure Tf_csyfk.FormCreate(Sender: TObject);
begin
sj.DateTime := Now();
fkxt.ItemIndex := 0;
end;
procedure Tf_csyfk.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(fkph) as ss From t_csyfkjl 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;
fkph.Text := s;
csmc.SetFocus;
end;
procedure Tf_csyfk.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_csyfk.fkphKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
FindNext;
end;
procedure Tf_csyfk.qxClick(Sender: TObject);
var
i: Integer;
begin
For i := 0 to ControlCount-1 do
begin
if Controls[i]is TEdit then
TEdit(Controls[i]).Clear
else if Controls[i]is TDateTimePicker then
TDateTimePicker(Controls[i]).DateTime := Now
else if Controls[i]is TComboBox then
TComboBox(Controls[i]).ItemIndex := 0;
end;
end;
procedure Tf_csyfk.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_cszl');
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
fkph.OnKeyDown(sender,key,shift);
end;
procedure Tf_csyfk.SetListPos(WinControl: TWinControl);
begin
lb.Top := WinControl.Top;
lb.Left := WinControl.Left+(WinControl.Width-lb.Width);
lb.Visible := True;
lb.SetFocus;
end;
procedure Tf_csyfk.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_csyfk.lbKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
lb.OnDblClick(Sender);
end;
procedure Tf_csyfk.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
fkph.OnKeyDown(sender,key,shift);
end;
procedure Tf_csyfk.fkjeKeyPress(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_csyfk.lbExit(Sender: TObject);
begin
lb.Visible := False;
end;
function Tf_csyfk.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_csyfk.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_csyfkjl values(:a,:b,:c,:d,:e,:f)');
ParamByName('a').AsString := Trim(fkph.Text);
ParamByName('b').AsString := Trim(csmc.Text);
ParamByName('c').AsString := Trim(fkxt.Text);
ParamByName('d').AsFloat := StrToFloat(fkje.Text);
ParamByName('e').AsString := Trim(fkr.Text);
ParamByName('f').AsDate := sj.DateTime;
ExecSQL;
end;
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_csyfk where csmc = :a');
ParamByName('a').AsString := Trim(csmc.Text);
Open;
end;
if Data.Query2.RecordCount>0 then
begin
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('update t_csyfk set yfje = yfje+:a where csmc = :b');
ParamByName('a').AsFloat := StrToFloat(fkje.Text);
ParamByName('b').AsString := Trim(csmc.Text);
ExecSQL;
end;
end
else
begin
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert t_csyfk values(:a,:b)');
ParamByName('b').AsFloat := StrToFloat(fkje.Text);
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_csyfk.csmcExit(Sender: TObject);
begin
if Trim(csmc.Text)<>'' then
begin
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_cszl where csmc = :a');
ParamByName('a').AsString := Trim(csmc.Text);
Open;
if RecordCount<1 then
begin
Application.MessageBox('该厂商信息不存在.','提示',64);
csmc.Clear;
end;
end;
end;
end;
procedure Tf_csyfk.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;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -