⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csyfk.~pas

📁 这是用Delphi编写的中小企业管理系统
💻 ~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 + -