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

📄 qryorderdelivery.pas

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

interface

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

type
  TfrmDeliveryOrder = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    ListViewDelOrd: TGradLineListView;
    edtOrder: TLabeledEdit;
    cbxSup: TComboBox;
    edtSupply: TLabeledEdit;
    edtSupName: TEdit;
    edtHatCode: TLabeledEdit;
    lblFDate: TLabel;
    edtFDate: TDateTimePicker;
    edtMatClass: TLabeledEdit;
    edtMatClassName: TEdit;
    cbxMatClass: TComboBox;
    edtEDate: TDateTimePicker;
    lblEDate: TLabel;
    btnOK: TBitBtn;
    btnCancel: TBitBtn;
    btnQuery: TBitBtn;
    chkMaterial: TCheckBox;
    chkOther: TCheckBox;
    stsBarCnt: TStatusBar;
    chkWeight0: TCheckBox;
    chkQty0: TCheckBox;
    Image1: TImage;
    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 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 edtFMatCodeChange(Sender: TObject);
  private
    { Private declarations }
    Procedure SetListViewColumn(iMode: Integer);
    Procedure SetListView;
    procedure MakeItemCaption(Item: TListItem; iMode: Integer);

    Procedure SetMultilingual;

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

  public
    { Public declarations }
    default_suplier: string;
    default_orderno: integer;
    curr_select_DeliOrd: PUnDeliveryOnTime;
    iShowMode: Integer;

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


  end;

var
  frmDeliveryOrder: TfrmDeliveryOrder;
  ListSortKey: integer;
  FOrd_UnDeliveryList: 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 //--
        Int1 := TUnDeliveyOnTime(Item1^).hatchu_id;
        Int2 := TUnDeliveyOnTime(Item2^).hatchu_id;
        DataType := 1;
       end;
    2: begin //--
        Str1 := dm_inventory.GetOrderNo(TUnDeliveyOnTime(Item1^).seihin_rec_id);
        Str2 := dm_inventory.GetOrderNo(TUnDeliveyOnTime(Item2^).seihin_rec_id);
        DataType := 0;
       end;
    4: begin //--
        Str1 := dm_inventory.GetMaterialCode(TUnDeliveyOnTime(Item1^).shizai_rec_id);
        Str2 := dm_inventory.GetMaterialCode(TUnDeliveyOnTime(Item2^).shizai_rec_id);
        DataType := 0;
       end;
    9: begin //--
        Int1 := TUnDeliveyOnTime(Item1^).maker;
        Int2 := TUnDeliveyOnTime(Item2^).maker;
        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 TfrmDeliveryOrder.FormCreate(Sender: TObject);
begin
  FOrd_UnDeliveryList := TList.Create;
  FOrd_UnDeliveryList.Clear;

  SetMultilingual;
end;

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

procedure TfrmDeliveryOrder.FormShow(Sender: TObject);
var tmpf,tmpe: string;
begin
  Close_TabStop;
  Init_TabStopAndTabOrder;
  if (iShowMode=-1) then iShowMode := 0;

  edtSupply.Text  := default_suplier;
  edtSupName.Text := dm_inventory.GetShigenName(StrToIntDef(trim(edtSupply.Text),0));
  cbxSup.Text     := '';
  edtMatClass.Text:= '';
  edtMatClassName.Text := '';
  cbxMatClass.Text:= '';
  edtFDate.Date   := Now-14;
  edtEDate.Date   := Now+10;
  edtOrder.Text   := '';
  edtHatCode.Text  := '';

  tmpf := formatdatetime('yyyy/mm/dd',edtFDate.Date)+' 00:00:00';
  tmpe := formatdatetime('yyyy/mm/dd',edtEDate.Date)+' 23:59:59';
  dm_inventory.Read_UnDeliveryOnTimeInfo(FOrd_UnDeliveryList,tmpf,tmpe);
  SetListViewColumn(iShowMode);
  SetListView;
  edtSupply.SetFocus;
end;

procedure TfrmDeliveryOrder.MakeItemCaption(Item: TListItem; iMode: Integer);
  //-- 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: PUnDeliveryOnTime;
begin
  if Item = nil then Exit;
  if Item.Data = nil then Exit;
  lcP := Item.Data;

  Item.Caption      := IntTostr(lcp^.hatchu_id);
  Item.SubItems[00] := lcp^.hatchu_code;
  Item.SubItems[01] := lcp^.sequal_no;
  Item.SubItems[02] := dm_inventory.GetOrderNo(lcp^.seihin_rec_id);
  Item.SubItems[03] := dm_inventory.GetPartCode(lcp^.seihin_rec_id, lcp^.buhin_rec_id);
  Item.SubItems[04] := dm_inventory.GetMaterialCode(lcp^.shizai_rec_id);
  Item.SubItems[05] := lcp^.shizai_meisho;
  Item.SubItems[06] := lcp^.kikaku;
  Item.SubItems[07] := IntToStr(lcp^.hatchu_sha);
  Item.SubItems[08] := IntToStr(lcp^.irai_sha);
  Item.SubItems[09] := IntToStr(lcp^.hatchu_saki);
  Item.SubItems[10] := IntToStr(lcp^.maker);
  Item.SubItems[11] := formatDatetime('yy/mm/dd',lcp^.tks_shitei);
  Item.SubItems[12] := formatDatetime('yy/mm/dd',lcp^.knr_shitei);
  Item.SubItems[13] := formatFloat('#,##0.00',RoundTo(lcp^.tanka,-2));
  Item.SubItems[14] := formatFloat('#,##0.00',RoundTo(lcp^.suryo,-2));
  Item.SubItems[15] := formatFloat('#,##0.00',RoundTo(lcp^.weight,-2));
  Item.SubItems[16] := formatFloat('#,##0.00',RoundTo(lcp^.mak_price,-2));
  Item.SubItems[17] := formatFloat('#,##0.00',RoundTo(lcp^.kingaku,-2));
  Item.SubItems[18] := formatFloat('#,##0.00',RoundTo(lcp^.deliveried_suryo,-2));
  Item.SubItems[19] := formatFloat('#,##0.00',RoundTo(lcp^.deliveried_kingaku,-2));
  Item.SubItems[20] := formatDatetime('yy/mm/dd',lcp^.chakushu_bi);
  Item.SubItems[21] := formatDatetime('yy/mm/dd',lcp^.kanryo_bi);
  Item.SubItems[22] := formatFloat('#,##0.00',RoundTo(lcp^.un_deliveried_weight,-2));
  Item.SubItems[23] := formatFloat('#,##0.00',RoundTo(lcp^.un_deliveried_suryo,-2));

end;

procedure TfrmDeliveryOrder.SetListView;
var i,j: Integer;
    lcP: PUnDeliveryOnTime;
    Item: TListItem;
begin
  Screen.Cursor  := crHourGlass;
  with ListViewDelOrd.Items do begin
    BeginUpdate;
    Clear;
    EndUpdate;
  end;

  //--
  ListViewDelOrd.Items.BeginUpdate;
  FOnMakeItemCaption := True;
  try
    //ListSortKey := 1;
    FOrd_UnDeliveryList.Sort(TListSortCompare(@ListSortCompare));

    for i := 0 to FOrd_UnDeliveryList.Count-1 do begin
      lcP  := FOrd_UnDeliveryList.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, iShowMode);
    end;
  finally
    FOnMakeItemCaption := False;
    ListViewDelOrd.Items.EndUpdate;
    if ListViewDelOrd.Items.Count > 0 then
    begin
      ListViewDelOrd.TopItem.Selected := True;
      ListViewDelOrd.Selected.Selected := true;
      curr_select_DeliOrd := ListViewDelOrd.TopItem.Data;
    end;
    stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(ListViewDelOrd.Items.Count)+' 条';
    Screen.Cursor := crDefault;
  end;
end;

procedure TfrmDeliveryOrder.SetListViewColumn(iMode: Integer);
var
  Column: TListColumn;
begin
  ListViewDelOrd.Columns.Clear;
  FColumnCnt := 0;
  //--
  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 8;
  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(10042,'Sequal No');
  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 * 12;
  Column.Caption := GetMultiLingalMsg(90064,'Part Code');
  Inc(FColumnCnt);

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

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 10;
  Column.Caption := GetMultiLingalMsg(90125,'Ordered Man');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 10;
  Column.Caption := GetMultiLingalMsg(90126,'Relation Man');
  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(90127,'Ordered Date');
  Inc(FColumnCnt);

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

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 12;
  Column.Caption := GetMultiLingalMsg(90128,'Ordered Quantity');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;
  Column.Width   := ListViewDelOrd.Font.Size * 12;
  Column.Caption := GetMultiLingalMsg(90273, 'Weight/PCS');
  Inc(FColumnCnt);

  Column         := ListViewDelOrd.Columns.Add;

⌨️ 快捷键说明

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