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

📄 invbomcheck.pas

📁 文件包含程序源原文件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  ListViewBomInfo.Items.BeginUpdate;

  //FQueryList.Sort(TListSortCompare(@ListSortCompare));

  FOnMakeItemCaption := True;
  try
    for i := 0 to FQueryList.Count-1 do begin
      lcP  := FQueryList.Items[i];
      Item := ListViewBomInfo.Items.Add;
      for j := 0 to FColCnt-1 do Item.Subitems.Add('');
      lcP^.ITEM := Item;
      Item.Data := lcP;
      MakeItemCaption(Item);
    end;
  finally
    FOnMakeItemCaption := False;
    ListViewBomInfo.Items.EndUpdate;
    if ListViewBomInfo.Items.Count > 0 then ListViewBomInfo.TopItem.Selected := True;
    Screen.Cursor := crDefault;
  end;
end;

function  TfrmBomCheck.SetListColumn(sListView: TListView): Integer;
var
  Column: TListColumn;
begin
  sListView.Columns.Clear;
  FColCnt := 0;

  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 12;
  Column.Caption := 'SerialNum';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := 'Mold ID';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 12;
  Column.Caption := 'Part ID/NO';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := 'Material Code';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := 'Material Name';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 8;
  Column.Caption := 'Material';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := 'Standard';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 6;
  Column.Caption := 'Unit';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 8;
  Column.Caption := 'Quantity';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 8;
  Column.Caption := 'Require Date';
  Inc(FColCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := 'Notes';
  Inc(FColCnt);
end;

procedure TfrmBomCheck.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: PBomCheckInfo;
begin
  if Item = nil then Exit;
  if Item.Data = nil then Exit;
  lcP := Item.Data;

  Item.Caption      := intToStr(lcp^.rec_id);
  Item.SubItems[00] := dm_inventory.GetOrderNo(lcP^.mold_id);
  Item.SubItems[01] := dm_inventory.GetPartCode(lcp^.mold_id,lcp^.part_id);
  Item.SubItems[02] := dm_inventory.GetMaterialCode(lcp^.shizai_rec_id);
  Item.SubItems[03] := dm_inventory.GetMaterialName(lcp^.shizai_rec_id);
  Item.SubItems[04] := strpas(lcp^.Material);
  Item.SubItems[05] := lcP^.standard;
  Item.SubItems[06] := dm_inventory.GetUnitTypeName(lcp^.shizai_rec_id);
  Item.SubItems[07] := formatfloat('#,##0.00',lcp^.quantity);
  Item.SubItems[08] := '';//formatdatetime('yy/mm/dd',lcp^.require_date);
  Item.SubItems[09] := '';//(lcp^.Notes);
end;


Procedure TfrmBomCheck.DrawSafeStockImage;
var
  SExplains: array[0..1] of string;
  i, x, y, TextW: Integer;
begin
  SExplains[0] := '-->Buy Material';
  SExplains[1] := '-->Inventory Out';

  with Image1.Canvas do begin
    TextW := TextWidth(SExplains[0]);
    if TextW < TextWidth(SExplains[1]) then
      TextW := TextWidth(SExplains[1]);

    Pen.Color := clBlack;
    Brush.Color := clBtnFace;
    FillRect(ClientRect);
    y := 5;
    for i:= 0 to 1 do begin
      x := i * (ImageList.Width+4 + TextW);
      ImageList.Draw(Image1.Canvas, x, y, i);
      TextOut(x+17, y+2, SExplains[i]);
    end;
  end;
end;

procedure TfrmBomCheck.rdoGroupByClick(Sender: TObject);
begin
  Read_BomCheckInfoList;
end;

procedure TfrmBomCheck.ListViewBomInfoColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  //if Column.Index=1 then
end;

procedure TfrmBomCheck.ListViewBomInfoSelectItem(Sender: TObject;
  Item: TListItem; Selected: Boolean);
begin
 // if ListViewBomInfo.Selected.Checked then ListViewBomInfo.Selected.ImageIndex:=1;
end;

procedure TfrmBomCheck.btnInvQueryClick(Sender: TObject);
  function SetQryCheck(lcP: PBALANCE): Boolean;
  var i: Integer;
      WMtlCode: array[0..1] of string;
  begin
    Result := True;
    //--
    if trim(edtMatCode.Text)<>'' then
      if not(dm_Inventory.GetMaterialRID(trim(edtMatCode.Text))=lcp^.CODE) then begin
        result := false;
        exit;
      end;
  end;
  
var FCurrInventory: TList;
    i,j: integer;
    lcp: PBALANCE;
    ITEM: TListItem;
begin
  FCurrInventory := TList.Create;
  FCurrInventory.Clear;
  Screen.Cursor  := crHourGlass;
  with ListViewMRP.Items do begin
    BeginUpdate;
    Clear;
    EndUpdate;
  end;

  SetMRPListColumn(ListViewMRP, 0);
  dm_inventory.Read_CurrInventoryInfo(FCurrInventory);

  //--
  ListViewMRP.Items.BeginUpdate;
  FOnMakeItemCaption := True;
  try
    for i := 0 to FCurrInventory.Count-1 do begin
      lcP  := FCurrInventory.Items[i];
      if not SetQryCheck(lcp) then continue;
      Item := ListViewMRP.Items.Add;
      for j :=0 to FColumnCnt-2 do Item.Subitems.Add('');
      lcP^.ITEM := Item;
      Item.Data := lcP;
      MakeMRPItemCaption(Item, 0);
    end;
  finally
    FOnMakeItemCaption := False;
    ListViewMRP.Items.EndUpdate;
    Screen.Cursor := crDefault;
  end;
end;

function  TfrmBomCheck.SetMRPListColumn(sListView: TGradLineListView; imode: integer): Integer;
var
  Column: TListColumn;
begin
  sListView.Columns.Clear;
  FColumnCnt := 0;

case imode of
0: begin
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 6;
  Column.Caption := '仓库';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 12;
  Column.Caption := 'Material Code';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 12;
  Column.Caption := 'Material Name';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 8;
  Column.Caption := 'Guage ID';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 12;
  Column.Caption := 'Guage Name';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 6;
  Column.Caption := 'Unit';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := 'Quantity';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := 'PCS';
  Inc(FColumnCnt);
  end;
1: begin
//--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 12;
  Column.Caption := 'Material Code';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 12;
  Column.Caption := 'Material Name';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := 'Guage ID';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 12;
  Column.Caption := 'Guage Name';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 6;
  Column.Caption := 'Unit';
  Inc(FColumnCnt);
  //--
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := '建议采购量';
  Inc(FColumnCnt);
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := '采购时间';
  Inc(FColumnCnt);
  Column         := sListView.Columns.Add;
  Column.Width   := sListView.Font.Size * 10;
  Column.Caption := '需求时间';
  Inc(FColumnCnt);
  end;
end;    //-- end case

end;

procedure TfrmBomCheck.MakeMRPItemCaption(Item: TListItem; imode: integer);
  function IntToStrNull(INum: Integer): string;
  begin
    if INum = 0 then Result := ''
    else Result := IntToStr(INum);
  end;
var lcP: PBALANCE;
    lcpA: PMRPInfo;
begin
  if Item = nil then Exit;
  if Item.Data = nil then Exit;
  case imode of
    0:begin
        lcP := Item.Data;
        Item.Caption      := (lcp^.STK_ID);
        Item.SubItems[00] := dm_inventory.GetMaterialCode(lcp^.CODE);
        Item.SubItems[01] := dm_inventory.GetMaterialName(lcp^.CODE);
        Item.SubItems[02] := inttostr(lcp^.GUAGE_ID);
        Item.SubItems[03] := dm_inventory.Get_GuageName(lcp^.CODE,lcp^.GUAGE_ID);
        Item.SubItems[04] := dm_inventory.GetUnitTypeName(lcp^.CODE);
        Item.SubItems[05] := formatfloat('###0.00',lcp^.quantity);
        Item.SubItems[06] := formatfloat('###0.00',lcp^.QUANTITY);
      end;
    1:begin
        lcPA := Item.Data;

        Item.Caption      := dm_inventory.GetMaterialCode(lcPA^.mat_rec_id);
        Item.SubItems[00] := dm_inventory.GetMaterialName(lcPA^.mat_rec_id);
        Item.SubItems[01] := inttostr(lcpA^.guage_id);
        Item.SubItems[02] := dm_inventory.Get_GuageName(lcPA^.mat_rec_id,lcpA^.guage_id);
        Item.SubItems[03] := dm_inventory.GetUnitTypeName(lcpA^.mat_rec_id);
        Item.SubItems[04] := formatfloat('###0.00',lcpA^.need_quantity);
        Item.SubItems[05] := formatdatetime('yy/mm/dd',lcpA^.cacu_order_date);
        Item.SubItems[06] := formatdatetime('yy/mm/dd',lcpA^.require_date);
      end;
  end;
end;

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

procedure TfrmBomCheck.btnMRPClick(Sender: TObject);
var FMRPList: TList;
    i,j: integer;
    lcp: PMRPInfo;
    ITEM: TListItem;
    ifix,ibom: integer;
begin
  FMRPList := TList.Create;
  FMRPList.Clear;
  Screen.Cursor  := crHourGlass;
  with ListViewMRP.Items do begin
    BeginUpdate;
    Clear;
    EndUpdate;
  end;

  if rdoMRP.ItemIndex=0 then begin
    ifix := 0;
    ibom := 0;
  end
  else begin
    ifix := 1;
    ibom := 1;
  end;

  SetMRPListColumn(ListViewMRP, 1);
  dm_inventory.Read_MRPInfo(FMRPList, ifix, ibom);

  //--
  ListViewMRP.Items.BeginUpdate;
  FOnMakeItemCaption := True;
  try
    for i := 0 to FMRPList.Count-1 do begin
      lcP  := FMRPList.Items[i];
      Item := ListViewMRP.Items.Add;
      for j :=0 to FColumnCnt-2 do Item.Subitems.Add('');
      lcP^.ITEM := Item;
      Item.Data := lcP;
      MakeMRPItemCaption(Item, 1);
    end;
  finally
    FOnMakeItemCaption := False;
    ListViewMRP.Items.EndUpdate;
    Screen.Cursor := crDefault;
  end;
end;

end.

⌨️ 快捷键说明

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