ad_enter_assetcardusedept_d.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 261 行

PAS
261
字号
unit Ad_Enter_AssetCardUseDept_D;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Entry_Detail, Db, AdODB, ExtCtrls, StdCtrls, Mask, ExtEdit, linkedit;

Type
  TFrm_Ad_Enter_AssetCardUseDept_D = Class(TFrm_Base_Entry_Detail)
    Label2: TLabel;
    Label11: TLabel;
    Edt_RemArk: TEdit;
    Label14: TLabel;
    Label13: TLabel;
    EDT_AssignRate: TEdit;
    Label17: TLabel;
    MEdt_LastOperationTime: TMaskEdit;
    Edt_PrepareShipQty: TEdit;
    Label15: TLabel;
    Edt_DeptName: TEdit;
    Edt_DeptCode: TLinkEdit;
    Label3: TLabel;
    Label1: TLabel;
    EDT_kmCode: TLinkEdit;
    EDT_kmName: TExtEdit;
    procedure Edt_DeptCodeExit(Sender: TObject);
    procedure EDT_AssignRateExit(Sender: TObject);
    procedure EDT_kmCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EDT_kmCodeExit(Sender: TObject);
    procedure EDT_kmCodeButtonClick(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
  private
    procedure getAssignRate(tmp:TAdoQuery);
    { Private declarations }
  public
    procedure InitControls; Override;
    procedure SaveBodyData; Override;
    procedure SetStatus(CurrentStatus:String;var EnableControls:String); Override;
    { Public declarations }
  end;

var
  Frm_Ad_Enter_AssetCardUseDept_D: TFrm_Ad_Enter_AssetCardUseDept_D;

implementation

uses Sys_Global;

{$R *.DFM}

{ TFrm_Sal_Enter_SaleOrder_D }

procedure TFrm_Ad_Enter_AssetCardUseDept_D.InitControls;
begin
  If (status='Add') Then
    SetFocus_Control:=Edt_DeptCode
  Else
    SetFocus_Control:=Edt_DeptCode;
  Inherited;
  with AdoQry_Body do
  begin
    If (Status='Add') then
    begin
      EDT_AssignRate.Text:='0';
      Edt_RemArk.Text:=fieldbyname('RemArk').AsString;
    end
    else
    begin
      Edt_DeptCode.Text:=fieldbyname('DeptCode').AsString;
      Edt_DeptName.Text:=fieldbyname('DeptName').AsString;
      edt_kmCode.Text:=fieldbyname('kmCode').asstring;
      edt_kmName.Text:=fieldbyname('kmName').asstring;
      EDT_AssignRate.Text:=fieldbyname('AssignRate').AsString;
      Edt_RemArk.Text:=fieldbyname('RemArk').AsString;
    end;
  end;
end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.SaveBodyData;
begin
  If Status='Add' Then
    AdoQry_Body.Append
  Else
    AdoQry_Body.Edit;
  with AdoQry_Body do
  begin
    fieldbyname('AssetCode').AsString:=fieldbyname('AssetCode').AsString;
    fieldbyname('DeptCode').AsString:=Edt_DeptCode.Text;
    fieldbyname('DeptName').AsString:=Edt_DeptName.Text;
    fieldbyname('kmCode').asstring:=edt_kmCode.Text;
    fieldbyname('kmName').asstring:=edt_kmName.Text;
    fieldbyname('AssignRate').AsString:=Edt_AssignRate.Text;
    fieldbyname('RemArk').AsString:=Edt_RemArk.Text;
    Post;
  end;

end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.Edt_DeptCodeExit(
  Sender: TObject);
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  if (not BlankInStrCheck(Edt_DeptCode.Text,'部门代码代码')) or
   (not BlankCheck(Edt_DeptCode.text,'部门代码代码')) then
  begin
    TWinControl(Sender).SetFocus;
    abort;
  end;
  if  TCustomEdit(Sender).Text <>'' then
  begin
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text:=' Select DeptCode,DeptName from Dept '
                        +'          where DeptCode= '''+TCustomEdit(Sender).Text+''' ';
    AdoQry_Tmp.Open;
    if not AdoQry_Tmp.Eof then
    begin
      Edt_DeptName.Text := AdoQry_Tmp.fieldbyname('DeptName').AsString;
    end
    else
    begin
      DispInfo('部门代码错误,请重新输入!',1);
      TWinControl(Sender).SetFocus;
      Abort;
    end;

  end
  else
    Edt_DeptName.Text:='';
  if (Status='Add')or((Status<>'Add') and
    (TEdit(Sender).Text<>AdoQry_Body.fieldbyname('DeptCode').AsString)) then
  begin
    with AdoQry_Body do
    begin
      AdoQry_Body.DisableControls;
      First;
      While Not Eof Do
      begin
        If (AdoQry_Body.fieldbyname('DeptCode').AsString=TCustomEdit(Sender).Text) Then
        begin
         DispInfo('存在相同记录,请重新选择!',3);
         AdoQry_Body.EnableControls;
         Abort;
        end;
        Next;
      end;
      First;
      AdoQry_Body.EnableControls;
    end;
  end;
end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.SetStatus(CurrentStatus: String;
  var EnableControls: String);
begin
  inherited;
  EnableControls:='Edt_DeptCode,EDT_kmCode,EDT_AssignRate,Edt_RemArk,';
end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.getAssignRate(tmp:TAdoQuery);
var
  Rate:real;
begin
  Rate:=0;
  With tmp do
  begin
    tmp.DisableControls;
    First;
    While Not Eof do
    begin
      Rate:=Rate+fieldbyname('AssignRate').AsFloat;
      Next;
    end;
    tmp.EnableControls;
  end;
  IF (Rate+StrToFloat(EDT_AssignRate.Text)>100) Then DispInfo('分配率不能大于100%!',3);
end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.EDT_AssignRateExit(
  Sender: TObject);
begin
  inherited;
  FloatCheck(Sender);
  IF (EDT_AssignRate.Text='0') Then
  begin
   DispInfo('分配率不能为零!',1);
   Abort;
  end;
//  getAssignRate(AdoQry_Body);
end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.EDT_kmCodeKeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  inherited;
   If key=120 Then
  CommOnHint(Sender,AdoQry_Tmp,'KmName','会计科目名称','KmCode',
             '会计科目代码',' Gl_AccountSubject ','KmType in (4,5)');

end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.EDT_kmCodeExit(Sender: TObject);
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  if (not BlankInStrCheck(EDT_kmCode.Text,'费用科目代码')) or
   (not BlankCheck(EDT_kmCode.text,'费用科目代码')) then
  begin
    TWinControl(Sender).SetFocus;
    abort;
  end;
  if  TCustomEdit(Sender).Text <>'' then
  begin
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text:=' Select KmCode,KmName from Gl_AccountSubject '
                        +'          where KmCode= '''+TCustomEdit(Sender).Text+''' and KmType in (4,5) ';
    AdoQry_Tmp.Open;
    if not AdoQry_Tmp.Eof then
    begin
      EDT_kmName.Text := AdoQry_Tmp.fieldbyname('KmName').AsString;
    end
    else
    begin
      DispInfo('费用科目代码错误,请重新输入!',1);
      TWinControl(Sender).SetFocus;
      Abort;
    end;
  end
  else
    EDT_kmName.Text:='';

end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.EDT_kmCodeButtonClick(
  Sender: TObject);
begin
  inherited;
  CommOnHint(Sender,AdoQry_Tmp,'KmName','会计科目名称','KmCode',
             '会计科目代码',' Gl_AccountSubject ','KmType in (4,5)');
end;

procedure TFrm_Ad_Enter_AssetCardUseDept_D.btn_okClick(Sender: TObject);
begin
  if (not BlankInStrCheck(EDT_kmCode.Text,'费用科目代码')) or
   (not BlankCheck(EDT_kmCode.text,'费用科目代码')) then
  begin
    EDT_kmCode.SetFocus;
    abort;
  end;
  inherited;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?