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

📄 qrymaterial.pas

📁 文件包含程序源原文件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit QryMaterial;

interface

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

type
  TfrmMaterialQry = class(TForm)
    Panel1: TPanel;
    Panel3: TPanel;
    edtFMtlCode: TLabeledEdit;
    cbxMTP: TComboBox;
    edtMtlType: TLabeledEdit;
    edtMTPName: TEdit;
    edtEMtlCode: TLabeledEdit;
    Image1: TImage;
    btnQuery: TBitBtn;
    cbxSup: TComboBox;
    cbxMak: TComboBox;
    rdoSort: TRadioGroup;
    Panel5: TPanel;
    btnOK: TBitBtn;
    btnCancel: TBitBtn;
    edtSupply: TLabeledEdit;
    edtMake: TLabeledEdit;
    edtMakName: TEdit;
    edtSupName: TEdit;
    ListViewMTL: TGradLineListView;
    chkMaterial: TCheckBox;
    chkOther: TCheckBox;
    stsBarCnt: TStatusBar;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnQueryClick(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure ListViewMTLColumnClick(Sender: TObject; Column: TListColumn);
    procedure cbxMTPDropDown(Sender: TObject);
    procedure cbxMTPChange(Sender: TObject);
    procedure cbxSupDropDown(Sender: TObject);
    procedure cbxSupChange(Sender: TObject);
    procedure cbxMakDropDown(Sender: TObject);
    procedure cbxMakChange(Sender: TObject);
    procedure ListViewMTLDblClick(Sender: TObject);
    procedure edtSupplyChange(Sender: TObject);
    procedure edtMakeChange(Sender: TObject);
    procedure edtMtlTypeChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtFMtlCodeChange(Sender: TObject);
    procedure edtEMtlCodeChange(Sender: TObject);

  private
    { Private declarations }

    Procedure SetListViewColumn;
    Procedure SetListView;
    procedure MakeItemCaption(Item: TListItem);

    procedure SetMultilingual;

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

  public
    { Public declarations }
    iSortKey,
    iShiZaiKubun: integer;
    FSelectedShizai: PShizai;
    
    function Set_QryCondition(lcP: PSHIZAI): Boolean;

  protected
    { Protected  }


  end;

var
  frmMaterialQry: TfrmMaterialQry;
  QryMtlList: TList;
  FColumnCnt: integer;
  FOnMakeItemCaption: Boolean;
  ListSortKey: Integer;

implementation

uses InvDM;



{$R *.dfm}

// TListSortCompare --
function ListSortCompare(Item1, Item2: Pointer): Longint;
var DataType: Integer;
    Str1, Str2: string;
    Int1, Int2: Integer;
    Dbl1, Dbl2: Double;
begin
  Result := 0;
  Str1 := ''; Str2 := '';
  Int1 := 0;  Int2 := 0;
  Dbl1 := 0;  Dbl2 := 0;
  case Abs(ListSortKey) of
    1: begin //--
        Str1 := TSHIZAI(Item1^).SHIZAI_CD;
        Str2 := TSHIZAI(Item2^).SHIZAI_CD;
        DataType := 0;
       end;
    2: begin //--
        Str1 := TSHIZAI(Item1^).SHIZAI_NM;
        Str2 := TSHIZAI(Item2^).SHIZAI_NM;
        DataType := 0;
       end;
    3: begin //--
        Str1 := TSHIZAI(Item1^).STANDARD;
        Str2 := TSHIZAI(Item2^).STANDARD;
        DataType := 0;
       end;
    4: begin //--
        Int1 := TSHIZAI(Item1^).MAKER_CD;
        Int2 := TSHIZAI(Item2^).MAKER_CD;
        DataType := 1;
       end;
    5: begin //--
        Str1 := TSHIZAI(Item1^).MAKER_NM;
        Str2 := TSHIZAI(Item2^).MAKER_NM;
        DataType := 0;
       end;
    6: begin //--
        Int1 := TSHIZAI(Item1^).SHIIRE_CD;
        Int2 := TSHIZAI(Item2^).SHIIRE_CD;
        DataType := 1;
       end;
    7: begin //--
        Str1 := TSHIZAI(Item1^).SHIIRE_NM;
        Str2 := TSHIZAI(Item2^).SHIIRE_NM;
        DataType := 0;
       end;
    8: begin //--
        Int1 := TSHIZAI(Item1^).SHIZAI_KUBUN_ID;
        Int2 := TSHIZAI(Item2^).SHIZAI_KUBUN_ID;
        DataType := 1;
       end;
    else Exit;
  end;

  case DataType of
    0: if Str1 < Str2 then  Result := -1
       else if Str1 > Str2 then Result := 1
       else Result := 0;
    1: if Int1 < Int2 then  Result := -1
       else if Int1 > Int2 then Result := 1
       else Result := 0;
    2: if Dbl1 < Dbl2 then  Result := -1
       else if Dbl1 > Dbl2 then Result := 1
       else Result := 0;
  else Result := 0;
  end;
  if ListSortKey < 0 then Result := Result * -1;
end;


function TfrmMaterialQry.Set_QryCondition(lcP: PSHIZAI): Boolean;
var i,iMatAttr: Integer;
    WMtlCode: array[0..1] of String;
begin
  Result := True;

  if trim(edtFMtlCode.Text)='' then WMtlCode[0] := '0000000000'
  else  WMtlCode[0] := trim(edtFMtlCode.Text);

  if trim(edtEMtlCode.Text)='' then WMtlCode[1] := 'ZZZZZZZZZZ'
  else  WMtlCode[1] := trim(edtEMtlCode.Text);

  if ((WMtlCode[0] > lcp^.SHIZAI_CD) or (WMtlCode[1] < lcp^.SHIZAI_CD)) then begin
    result := false;
    exit;
  end;

  iMatAttr := dm_inventory.Get_KubunIssMode_FromShiZai(lcp^.REC_ID);
  if chkMaterial.Checked then begin
    if not ( iMatAttr= 1) then begin
      result := false;
      exit;
    end;
  end;

  if chkOther.Checked then begin
    if not ((iMatAttr=2)or (iMatAttr=3)or (iMatAttr=4)) then begin
      result := false;
      exit;
    end;
  end;

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

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

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

end;

procedure TfrmMaterialQry.FormCreate(Sender: TObject);
begin
  QryMtlList := TList.Create;
  QryMtlList.Clear;
  SetMultilingual;
end;


procedure TfrmMaterialQry.FormShow(Sender: TObject);
begin
  Close_TabStop;
  Init_TabStopAndTabOrder;

  edtFMtlCode.Text := '';
  edtEMtlCode.Text := '';
  edtMtlType.Text  := '';
  edtMTPName.Text  := '';
  cbxMTP.Text      := '';
  edtSupply.Text   := '';
  edtSupName.Text  := '';
  cbxSup.Text      := '';
  edtMake.Text     := '';
  edtMakName.Text  := '';
  cbxMak.Text      := '';

  dm_inventory.ReadShizai(QryMtlList);
  SetListViewColumn;
  SetListView;
  edtMtlType.SetFocus
end;

procedure TfrmMaterialQry.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //dm_inventory.ListFreeMemory(QryMtlList);
end;

procedure TfrmMaterialQry.btnQueryClick(Sender: TObject);
var
  i,j: integer;
  lcP: PSHIZAI;
  Item: TListItem;
begin
  /////////////////////////////////////
  case rdoSort.ItemIndex of
   0: iSortKey := 1;
   1: iSortKey := 2;
   2: iSortKey := 4;
   3: iSortKey := 6;
   else iSortKey := 1;
  end;

  Screen.Cursor  := crHourGlass;
  with ListViewMTL.Items do begin
    BeginUpdate;
    Clear;
    EndUpdate;
  end;

  //--
  ListViewMTL.Items.BeginUpdate;
  FOnMakeItemCaption := True;
  try
    ListSortKey := iSortKey;
    QryMtlList.Sort(TListSortCompare(@ListSortCompare));
    for i := 0 to QryMtlList.Count-1 do begin
      lcP  := QryMtlList.Items[i];
      if not Set_QryCondition(lcp) then continue;
      Item := ListViewMTL.Items.Add;
      for j :=0 to FColumnCnt-2 do Item.Subitems.Add('');
      lcP^.ITEM := Item;
      Item.Data := lcP;
      MakeItemCaption(Item);
    end;
  finally
    FOnMakeItemCaption := False;
    ListViewMTL.Items.EndUpdate;
    if ListViewMTL.Items.Count>0 then
    begin
      ListViewMTL.TopItem.Selected  := true;
      ListViewMTL.Selected.Selected := true;
    end;
    stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(ListViewMTL.Items.Count)+' 条';
    Screen.Cursor := crDefault;
  end;
end;
/////////////////////////////////////////
/////////////////////////////////////////

procedure TfrmMaterialQry.btnOKClick(Sender: TObject);
var
  lcP: PSHIZAI;
begin
  ModalResult := mrNone;
  if ListViewMTL.Selected = nil then FSelectedShizai := nil
  else FSelectedShizai := PSHIZAI(ListViewMTL.Selected.Data);
  ModalResult := mrOK;
end;

⌨️ 快捷键说明

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