?? khjk.~pas
字號:
unit khjk;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons;
type
Tf_khjk = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label6: TLabel;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
jkph: TEdit;
sj: TDateTimePicker;
khmc: TEdit;
skr: TEdit;
fkhj: TEdit;
jkzr: TEdit;
jkje: TEdit;
ljyfk: TEdit;
Panel1: TPanel;
lb: TListBox;
qkhk: TEdit;
tj: TBitBtn;
bc: TBitBtn;
qx: TBitBtn;
tc: TBitBtn;
procedure jkphKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure khmcExit(Sender: TObject);
procedure khmcKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure skrExit(Sender: TObject);
procedure skrKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure fkhjKeyPress(Sender: TObject; var Key: Char);
procedure fkhjChange(Sender: TObject);
procedure jkzrChange(Sender: TObject);
procedure jkzrEnter(Sender: TObject);
procedure ljyfkChange(Sender: TObject);
procedure tjClick(Sender: TObject);
procedure bcClick(Sender: TObject);
procedure qxClick(Sender: TObject);
procedure lbDblClick(Sender: TObject);
procedure lbExit(Sender: TObject);
procedure lbKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ljyfkKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
Procedure FindNext;
Function IsNull: Boolean;
Procedure SetListPos(WinControl: TWinControl);
{ Public declarations }
end;
var
f_khjk: Tf_khjk;
implementation
uses DataModal;
{$R *.dfm}
{ Tf_khjk }
procedure Tf_khjk.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;
function Tf_khjk.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_khjk.SetListPos(WinControl: TWinControl);
begin
lb.Top := WinControl.Top;
lb.Left := WinControl.Left+(WinControl.Width-lb.Width);
lb.Visible := True;
lb.SetFocus;
end;
procedure Tf_khjk.jkphKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
FindNext;
end;
procedure Tf_khjk.khmcExit(Sender: TObject);
begin
if Trim(khmc.Text)<>'' then
begin
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_khjk where khmc = :a');
ParamByName('a').AsString := Trim(khmc.Text);
Open;
if RecordCount<1 then
begin
Application.MessageBox('該客戶信息不存在.','提示',64);
khmc.Clear;
end
else
qkhk.Text := Format('%8.4f',[Data.Query2.FieldByName('ysje').AsFloat]);
end;
end;
end;
procedure Tf_khjk.khmcKeyDown(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 khmc from t_khjk');
Open;
end;
if Data.Query1.RecordCount>0 then
begin
while Not Data.Query1.Eof do
begin
lb.Items.Add(Trim(Data.Query1.FieldByName('khmc').AsString));
Data.Query1.Next;
end;
SetListPos(khmc);
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_khjk.skrExit(Sender: TObject);
begin
if Trim(skr.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(skr.Text);
ParamByName('b').AsString := '財會部';
Open;
if RecordCount<1 then
begin
Application.MessageBox('該員工不存在或沒有該職權.','提示',64);
skr.Clear;
end;
end;
end;
end;
procedure Tf_khjk.skrKeyDown(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(skr);
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_khjk.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_khjk.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_khjk.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_khjk.jkzrEnter(Sender: TObject);
begin
jkzr.SelectAll;
end;
procedure Tf_khjk.ljyfkChange(Sender: TObject);
begin
jkje.Text := Format('%8.4f',[StrToFloat(fkhj.Text)+StrToFloat(jkzr.Text)+StrToFloat(ljyfk.Text)]);
end;
procedure Tf_khjk.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_khjkjl 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;
khmc.SetFocus;
sj.Enabled := False;
end;
procedure Tf_khjk.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_khjkjl values(:a,:b,:c,:d,:e,:f,:g,:h)');
ParamByName('a').AsString := Trim(jkph.Text);
ParamByName('b').AsString := Trim(khmc.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(skr.Text);
ParamByName('h').AsDate := sj.DateTime;
ExecSQL;
end;
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('update t_khjk set ysje = ysje-:a where khmc = :b');
ParamByName('a').AsFloat := StrToFloat(jkje.Text);
ParamByName('b').AsString := Trim(khmc.Text);
ExecSQL;
end;
if StrToFloat(ljyfk.Text)>0 then
begin
with Data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('update t_khyfk set yfje = 0 where khmc = :a');
ParamByName('a').AsString := Trim(khmc.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_khjk.qxClick(Sender: TObject);
begin
jkph.Clear;
khmc.Clear;
skr.Clear;
fkhj.Text := '0.0';
jkzr.Text := '0.0';
ljyfk.Text := '0.0';
qkhk.Clear;
sj.DateTime := Now;
sj.Enabled := True;
khmc.SetFocus;
end;
procedure Tf_khjk.lbDblClick(Sender: TObject);
begin
Case lb.Tag of
1: begin
khmc.Text := lb.Items[lb.ItemIndex];
khmc.SetFocus;
end;
2: begin
skr.Text := lb.Items[lb.ItemIndex];
skr.SetFocus;
end;
end;
lb.Visible := False;
end;
procedure Tf_khjk.lbExit(Sender: TObject);
begin
lb.Visible := False;
end;
procedure Tf_khjk.lbKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
lb.OnDblClick(Sender);
end;
procedure Tf_khjk.ljyfkKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_next then
begin
if Trim(khmc.Text)<>'' then
begin
with Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select yfje from t_khyfk where khmc = :a');
ParamByName('a').AsString := Trim(khmc.Text);
Open;
end;
if Data.Query2.RecordCount>0 then
ljyfk.Text := Format('%8.4f',[Data.Query2.FieldByName('yfje').AsFloat]);
end;
end;
end;
procedure Tf_khjk.FormCreate(Sender: TObject);
begin
sj.DateTime := Now();
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -