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

📄 invcondqry.~pas

📁 文件包含程序源原文件
💻 ~PAS
字号:
unit InvCondQry;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, InvDef, dpConst, Math;

type
  TfrmBalQryCond = class(TForm)
    Panel1: TPanel;
    btnQuery: TBitBtn;
    btnClose: TBitBtn;
    Panel2: TPanel;
    edtStkID: TLabeledEdit;
    edtStkName: TEdit;
    cbxStk: TComboBox;
    edtMatClass: TLabeledEdit;
    edtMatClassName: TEdit;
    cbxMatClass: TComboBox;
    edtMatCode: TLabeledEdit;
    rdoSafeQty: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnQueryClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure cbxStkChange(Sender: TObject);
    procedure edtStkIDChange(Sender: TObject);
    procedure edtStkIDExit(Sender: TObject);
    procedure cbxMatClassDropDown(Sender: TObject);
    procedure cbxMatClassChange(Sender: TObject);
    procedure edtMatClassChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    Procedure SetMultilingual;

    procedure Close_TabStop;
    Procedure Init_TabStopAndTabOrder;
    Procedure GetNextTabOrder(Key: Word; ShiftState: TShiftState);

  public
    { Public declarations }
    iSortKey: integer;
    iShiZaiKubun: integer;
    ichkStkLess0: Boolean;
    
    function Set_QryCondition(lcP: PBALANCE): Boolean;

    
  end;

var
  frmBalQryCond: TfrmBalQryCond;

implementation

uses InvDM;

{$R *.dfm}

procedure TfrmBalQryCond.FormCreate(Sender: TObject);
begin
  edtStkID.Text        := '';
  edtStkName.Text      := '';
  cbxStk.Text          := '';
  edtMatClass.Text     := '';
  edtMatClassName.Text := '';
  cbxMatClass.Text     := '';
  edtMatCode.Text     := '';
  rdoSafeQty.ItemIndex := 0;

  SetMultilingual;
end;

procedure TfrmBalQryCond.FormShow(Sender: TObject);
begin
  Close_TabStop;
  Init_TabStopAndTabOrder;
  edtStkID.SetFocus;
end;

procedure TfrmBalQryCond.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
 //close;
end;

function TfrmBalQryCond.Set_QryCondition(lcP: PBALANCE): Boolean;
var i: Integer;
    WDate: array[0..1] of TDatetime;
    WMtlCode: array[0..1] of string;
begin
  Result := True;

  if ichkStkLess0 then
  begin
    if (RoundTo(lcp^.QUANTITY,-2)<=0.00) then begin
      result := false;
        exit;
      end;
  end;

  if trim(edtStkID.Text)<>'' then
      if not(lcp^.STK_ID=trim(edtStkID.Text)) then  begin
        result := false;
        exit;
      end;

  if (trim(edtMatClass.Text)<>'') then
    if not (dm_inventory.Get_KubunRecID_FromShiZai(lcp^.CODE) = iShiZaiKubun) then begin
    result := false;
    exit;
  end;

  if trim(edtMatCode.Text)<>'' then begin
    if not(dm_inventory.GetMaterialCode(lcp^.CODE)=trim(edtMatCode.Text))then begin
      result := false;
      exit;
    end;
  end;

  case rdoSafeQty.ItemIndex  of
    0: begin
       end;
    1: begin
         if not (lcp^.IS_SAFETY = 0) then
         begin
           result := false;
           exit;
         end;
       end;
    2: begin
         if not (lcp^.IS_SAFETY = 1) then
         begin
           result := false;
           exit;
         end;
       end;
  end;
end;

////////////////////////////////////////////////////////////////////

procedure TfrmBalQryCond.btnQueryClick(Sender: TObject);
begin
  ModalResult := mrNone;
  iSortKey := 2;
  ModalResult := mrOK;
end;

procedure TfrmBalQryCond.btnCloseClick(Sender: TObject);
begin
  close;
  //ModalResult := mrCancel;
end;

procedure TfrmBalQryCond.cbxStkChange(Sender: TObject);
begin
  edtStkID.Text   := Get_PosBeforeStr(cbxStk.Text,'_');
  edtStkName.Text := Get_PosAfterStr(cbxStk.Text,'_');
  edtStkID.SetFocus;
end;

procedure TfrmBalQryCond.edtStkIDChange(Sender: TObject);
begin
  edtStkName.Text := dm_Inventory.GetStockName(trim(edtStkID.Text));
end;

procedure TfrmBalQryCond.edtStkIDExit(Sender: TObject);
var iBool: Boolean;
begin
  iBool := true;
  if not(trim(edtStkID.Text)='') then begin
    iBool := dm_Inventory.Get_StockCheck(trim(edtStkID.Text),edtStkName);
    if not(iBool) then begin
      edtStkID.Text := '';
      Exit;
    end;
  end;
end;

procedure TfrmBalQryCond.cbxMatClassDropDown(Sender: TObject);
begin
  dm_inventory.Read_shizai_kubunTocbx(cbxMatClass);
end;

procedure TfrmBalQryCond.cbxMatClassChange(Sender: TObject);
begin
  edtMatClass.Text     := Get_PosBeforeStr(cbxMatClass.Text,'_');
  edtMatClassName.Text := Get_PosAfterStr(cbxMatClass.Text,'_');
  edtMatClass.SetFocus;
  iShiZaiKubun := dm_inventory.GetShiZaiKubunID(trim(edtMatClass.Text));
end;

procedure TfrmBalQryCond.edtMatClassChange(Sender: TObject);
begin
  edtMatClassName.Text := dm_inventory.Get_Shizai_KubunName2(trim(edtMatClass.Text));
end;

///////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
procedure TfrmBalQryCond.Close_TabStop;
var
  i:Integer;
begin
  for i:=0 To Self.ComponentCount-1 do
    try
      if not ((Self.Components[i] is TLabel) or (Self.Components[i] is TImageList)or
      (Self.Components[i] is TSpeedButton) or (self.Components[i] is TiMage))then
        begin
          (Self.Components[i] as TWinControl).TabStop  := False;
          (Self.Components[i] as TWinControl).TabOrder := -1;
        end;
    except
     ;
    end;
end;

procedure TfrmBalQryCond.Init_TabStopAndTabOrder;
begin
  edtStkID.TabStop  := true;
  edtStkID.TabOrder := 6;

  edtMatCode.TabStop  := true;
  edtMatCode.TabOrder := 5;

  edtMatClass.TabStop  := true;
  edtMatClass.TabOrder := 4;

  rdoSafeQty.TabStop  := true;
  rdoSafeQty.TabOrder := 3;

  btnClose.TabStop  := true;
  btnClose.TabOrder := 2;

  btnQuery.TabStop  := true;
  btnQuery.TabOrder  := 1;
end;

procedure TfrmBalQryCond.GetNextTabOrder(Key: Word; ShiftState: TShiftState);
var
  nextControl : TWinControl;
begin
  if key = VK_TAB then begin

    nextControl := FindNextControl(ActiveControl ,false,true,false);
    if NextControl <> nil then  NextControl.SetFocus;
  end
  else if key = VK_RETURN then
  begin
    nextControl := FindNextControl(ActiveControl ,true,true,false);
    if NextControl <> nil then  NextControl.SetFocus;
  end;
end;

procedure TfrmBalQryCond.SetMultilingual;
begin
  self.Caption                  := GetMultiLingalMsg(90021, 'Inventory Query');
  edtStkID.EditLabel.Caption    := GetMultiLingalMsg(90027, 'Stock ID')+' ';
  edtMatClass.EditLabel.Caption := GetMultiLingalMsg(90123, 'Material Class')+' ';
  edtMatCode.EditLabel.Caption := GetMultiLingalMsg(90028,  'Material Code')+' ';

  rdoSafeQty.Caption            := GetMultiLingalMsg(90199, 'Safety Params Filter');
  rdoSafeQty.Items[0]           := GetMultiLingalMsg(90079, 'ALL');
  rdoSafeQty.Items[1]           := GetMultiLingalMsg(90041, '<= Safety Quantity');
  rdoSafeQty.Items[2]           := GetMultiLingalMsg(90042, '> Satety Quantity');

  rdoSortBy.Caption             := GetMultiLingalMsg(90135, 'Sort by');
  rdoSortBy.Items[0]            := GetMultiLingalMsg(90028, 'Material Code');
  rdoSortBy.Items[1]            := GetMultiLingalMsg(90029, 'Material Name');
  rdoSortBy.Items[2]            := GetMultiLingalMsg(90033, 'Unit Price');
  rdoSortBy.Items[3]            := GetMultiLingalMsg(90034, 'Inventory Quantity');
  rdoSortBy.Items[4]            := GetMultiLingalMsg(90035, 'Inventory Amount');
  btnQuery.Caption              := GetMultiLingalMsg(90115, 'Filter Query');
  btnClose.Caption              := GetMultiLingalMsg(90025, 'Exit');
end;

procedure TfrmBalQryCond.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_TAB) or (Key = VK_RETURN)  then //--
    GetNextTabOrder(VK_TAB, Shift);
end;

end.

⌨️ 快捷键说明

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