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

📄 qrydeliverylist.pas

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

interface

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

type
  TfrmDeliveriedList = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    ListViewDelOrd: TGradLineListView;
    edtOrder: TLabeledEdit;
    cbxSup: TComboBox;
    edtSupply: TLabeledEdit;
    edtSupName: TEdit;
    edtHatCode: TLabeledEdit;
    edtMatCode: TLabeledEdit;
    edtMatClass: TLabeledEdit;
    edtMatClassName: TEdit;
    cbxMatClass: TComboBox;
    btnOK: TBitBtn;
    btnCancel: TBitBtn;
    btnQuery: TBitBtn;
    cbxStk: TComboBox;
    edtStkName: TEdit;
    edtStkID: TLabeledEdit;
    edtIssPaper: TLabeledEdit;
    edtInPaper: TLabeledEdit;
    stsBarCnt: TStatusBar;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure ListViewDelOrdColumnClick(Sender: TObject; Column: TListColumn);
    procedure btnQueryClick(Sender: TObject);
    procedure edtOrderChange(Sender: TObject);
    procedure cbxSupDropDown(Sender: TObject);
    procedure cbxSupChange(Sender: TObject);
    procedure edtSupplyChange(Sender: TObject);
    procedure btnOKClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure ListViewDelOrdDblClick(Sender: TObject);
    procedure cbxMatClassDropDown(Sender: TObject);
    procedure cbxMatClassChange(Sender: TObject);
    procedure edtMatClassChange(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure cbxStkDropDown(Sender: TObject);
    procedure cbxStkChange(Sender: TObject);
    procedure edtStkIDChange(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 }
    default_orderserial: integer;
    curr_select_DeliOrd: PAllReadyInOrder;

    function  Set_QryCondition(lcP: PAllReadyInOrder): Boolean;
    function  ListSelCheck: Boolean;


  end;

var
  frmDeliveriedList: TfrmDeliveriedList;
  ListSortKey: integer;
  FAllReadyInOrderList: TList;
  FColumnCnt: integer;
  FOnMakeItemCaption: Boolean;
  iShiZaiKubun: 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 := TAllReadyInOrder(Item1^).stk_id;
        Str2 := TAllReadyInOrder(Item2^).stk_id;
        DataType := 0;
       end;
    2: begin //--
        Int1 := TAllReadyInOrder(Item1^).order_no;
        Int2 := TAllReadyInOrder(Item2^).order_no;
        DataType := 1;
       end;
    3: begin //--
        Str1 := TAllReadyInOrder(Item1^).hat_code;
        Str2 := TAllReadyInOrder(Item2^).hat_code;
        DataType := 0;
       end;
    4: begin //--
        Str1 := dm_inventory.GetOrderNo(TAllReadyInOrder(Item1^).order_rec_id);
        Str2 := dm_inventory.GetOrderNo(TAllReadyInOrder(Item2^).order_rec_id);
        DataType := 0;
       end;
    5: begin //--
        Int1 := TAllReadyInOrder(Item1^).parts_rec_id;
        Int2 := TAllReadyInOrder(Item2^).parts_rec_id;
        DataType := 1;
       end;
    6: begin //--
        Str1 := dm_inventory.GetMaterialCode(TAllReadyInOrder(Item1^).material_rec_id);
        Str2 := dm_inventory.GetMaterialCode(TAllReadyInOrder(Item2^).material_rec_id);
        DataType := 0;
       end;
    13: begin //--
        Int1 := TAllReadyInOrder(Item1^).supplier_code;
        Int2 := TAllReadyInOrder(Item2^).supplier_code;
        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;

procedure TfrmDeliveriedList.FormCreate(Sender: TObject);
begin
  FAllReadyInOrderList := TList.Create;
  FAllReadyInOrderList.Clear;

  SetMultilingual;
end;

procedure TfrmDeliveriedList.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  //action := cafree;
end;

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

  edtSupply.Text  := '';
  edtSupName.Text := '';
  cbxSup.Text     := '';
  edtMatClass.Text:= '';
  edtMatClassName.Text := '';
  cbxMatClass.Text:= '';
  edtMatCode.Text:= '';
  edtOrder.Text   := '';
  edtHatCode.Text  := '';

  //dm_inventory.Read_DeliveryOnTimeInfo(FAllReadyInOrderList);
  SetListViewColumn;
  SetListView;
  edtStkID.SetFocus;
end;

procedure TfrmDeliveriedList.MakeItemCaption(Item: TListItem);
  //-- Init int value and '' to 0 value
  function IntToStrNull(INum: Integer): string;
  begin
    if INum = 0 then Result := ''
    else Result := IntToStr(INum);
  end;
var
  lcP: PAllReadyInOrder;
begin
  if Item = nil then Exit;
  if Item.Data = nil then Exit;
  lcP := Item.Data;

  Item.Caption      := strpas(lcp^.stk_id);
  Item.SubItems[00] := IntTostr(lcp^.order_no);
  Item.SubItems[01] := lcp^.hat_code;
  Item.SubItems[02] := dm_inventory.GetOrderNo(lcp^.order_rec_id);
  Item.SubItems[03] := dm_inventory.GetPartCode(lcp^.order_rec_id, lcp^.parts_rec_id);
  Item.SubItems[04] := dm_inventory.GetMaterialCode(lcp^.material_rec_id);
  Item.SubItems[05] := lcp^.material_name;
  Item.SubItems[06] := dm_inventory.Get_GuageName(lcp^.material_rec_id,lcp^.guage_id);
  Item.SubItems[07] := formatFloat('#,##0.00',lcp^.unit_price);
  Item.SubItems[08] := formatFloat('#,##0.00',lcp^.quantity);
  Item.SubItems[09] := formatFloat('#,##0.00',lcp^.mak_price);
  Item.SubItems[10] := formatFloat('#,##0.00',lcp^.total_price);
  Item.SubItems[11] := IntToStr(lcp^.supplier_code);
  Item.SubItems[12] := IntToStr(lcp^.maker_code);
  Item.SubItems[13] := lcp^.iss_paperno;
  Item.SubItems[14] := lcp^.paperno;
  Item.SubItems[15] := lcp^.sequal_no;
  Item.SubItems[16] := formatDatetime('yy/mm/dd',lcp^.date);
  Item.SubItems[17] := lcp^.note;
end;

procedure TfrmDeliveriedList.SetListView;
var i,j: Integer;
    lcP: PAllReadyInOrder;
    Item: TListItem;
begin
  Screen.Cursor  := crHourGlass;
  with ListViewDelOrd.Items do begin
    BeginUpdate;
    Clear;
    EndUpdate;
  end;
  
  //--
  ListViewDelOrd.Items.BeginUpdate;
  FOnMakeItemCaption := True;
  try
    //ListSortKey := 1;
    FAllReadyInOrderList.Sort(TListSortCompare(@ListSortCompare));

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

procedure TfrmDeliveriedList.SetListViewColumn;
var
  Column: TListColumn;
begin
  ListViewDelOrd.Columns.Clear;
  FColumnCnt := 0;
  //--
  Column           := ListViewDelOrd.Columns.Add;
  Column.Width     := ListViewDelOrd.Font.Size * 5;
  Column.Alignment := taCenter;
  Column.Caption   := GetMultiLingalMsg(90027,'stk_id');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 7;
  Column.Caption := GetMultiLingalMsg(90124,'SerialNum');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 12;
  Column.Caption := GetMultiLingalMsg(32093,'Order Code');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 12;
  Column.Caption := GetMultiLingalMsg(90063,'Mold Code');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 14;
  Column.Caption := GetMultiLingalMsg(90064,'Part Code');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 12;
  Column.Caption := GetMultiLingalMsg(90028,'Material Code');
  Inc(FColumnCnt);
  //--
  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 18;
  Column.Caption := GetMultiLingalMsg(90029,'Material Name');
  Inc(FColumnCnt);
  //--
  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 18;
  Column.Caption := GetMultiLingalMsg(90031,'Guage Name');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 10;
  Column.Caption := GetMultiLingalMsg(90033,'Unit Price');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 10;
  Column.Caption := '订货结余量';//GetMultiLingalMsg(90055,'IN Quantity');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 8;
  Column.Caption := GetMultiLingalMsg(70222,'Process Cost');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 10;
  Column.Caption := '订货结余额';//GetMultiLingalMsg(90056, 'IN Amount');
  Inc(FColumnCnt);

  //--
  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 8;
  Column.Caption := GetMultiLingalMsg(90057,'Suplier');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 8;
  Column.Caption := GetMultiLingalMsg(90058,'Maker');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 12;
  Column.Caption := GetMultiLingalMsg(90236,'Issue Paper');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 12;
  Column.Caption := GetMultiLingalMsg(90073,'In Paper');

⌨️ 快捷键说明

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