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

📄 invmoldexpense.pas

📁 文件包含程序源原文件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  Inc(FColumnCount);

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

  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 14;
  Column.Caption := GetMultiLingalMsg(10042,'Sequal No');
  Inc(FColumnCount);

  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 20;
  Column.Caption := GetMultiLingalMsg(90057, 'Suplier');
  Inc(FColumnCount);
  //-- paperno
  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 7;
  Column.Caption := GetMultiLingalMsg(90058, 'Maker');
  Inc(FColumnCount);

  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 8;
  Column.Caption := GetMultiLingalMsg(90097, 'Manager Type');
  Inc(FColumnCount);
  //-- recieve empid
  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 10;
  Column.Caption := GetMultiLingalMsg(90088, 'Receive Man');
  Inc(FColumnCount);
  //-- input empid
  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 10;
  Column.Caption := GetMultiLingalMsg(90247, 'Manager Man');
  Inc(FColumnCount);
  //-- invoice_no empid
  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 10;
  Column.Caption := GetMultiLingalMsg(90061, 'Invoice NO');
  Inc(FColumnCount);
  //-- invoice_no empid
  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 10;
  Column.Caption := GetMultiLingalMsg(90236, 'Issue Paper');
  Inc(FColumnCount);
  //--
  Column := ListViewMold.Columns.Add;
  Column.Width   := ListViewMold.Font.Size * 12;
  Column.Caption := GetMultiLingalMsg(90065, 'Remarks');
  Inc(FColumnCount);
  Result := FColumnCount;
end;

///////////////////////////////////////////////////////////////
procedure TfrmInvMoldExp.MakeItemCaption(Item: TListItem);
var lcP: PINVENTORY;
begin
  if Item = nil then Exit;
  if Item.Data = nil then Exit;
  lcP := Item.Data;
  Item.ImageIndex := lcP^.KIND;

  Item.Caption      := lcp^.STK_ID;
  if lcP^.DATE <= 2 then Item.SubItems[00] := ''
  else Item.SubItems[00] := FormatDateTime('yy/mm/dd', lcP^.DATE);
  Item.SubItems[01] := dm_inventory.GetMaterialCode(lcP^.MAT_RID);
  Item.SubItems[02] := lcP^.MAT_NM;
  Item.SubItems[03] := dm_inventory.Get_GuageName(lcp^.MAT_RID,trunc(lcp^.GUAGE_ID));
  Item.SubItems[04] := dm_inventory.GetUnitTypeName(lcP^.MAT_RID);
  Item.SubItems[05] := FormatFloat('#,##0.0000', RoundTo(lcP^.UNT_PRICE,-4));
  Item.SubItems[06] := FormatFloat('#,##0.0000', Abs(RoundTo(lcP^.QUANTITY,-4)));
  Item.SubItems[07] := FormatFloat('#,##0.00', Abs(RoundTo(lcP^.TTL_PRICE,-2)));
  Item.SubItems[08] := FormatFloat('#,##0.00', Abs(RoundTo(lcP^.MAK_PRICE,-2)));
  Item.SubItems[09] := dm_inventory.GetOrderNo(lcP^.ODR_RID);
  Item.SubItems[10] := dm_inventory.GetPartCode(lcP^.ODR_RID, lcP^.PAT_RID);
  Item.SubItems[11] := lcp^.PAPERNO;
  Item.SubItems[12] := lcp^.USE_GUAGE;
  Item.SubItems[13] := FormatFloat('#,##0.0000', Abs(RoundTo(lcP^.USE_QUANTITY,-4)));
  Item.SubItems[14] := FormatFloat('#,##0.00', Abs(RoundTo(lcP^.USE_AMOUNT,-2)));
  if lcP^.HAT_RID <= 0 then Item.SubItems[15] := ''
  else Item.SubItems[15] := Format('%d', [lcP^.HAT_RID]);
  Item.SubItems[16] := lcP^.HAT_CODE;
  Item.SubItems[17] := lcP^.SEQUAL_NO;
  Item.SubItems[18] := dm_inventory.GetShigenName(lcP^.SUP_CD);
  Item.SubItems[19] := dm_inventory.GetShigenName(lcP^.MAK_CD);
  Item.SubItems[20] := dm_inventory.Get_IOIDName((lcP^.INOUT_ID), 2);
  Item.SubItems[21] := dm_inventory.Get_EmpName(lcp^.recieve_EmpID);
  Item.SubItems[22] := dm_inventory.Get_EmpName(lcP^.input_empid);
  Item.SubItems[23] := lcP^.invoice_no;
  Item.SubItems[24] := strpas(lcP^.ISS_PAPERNO);
  Item.SubItems[25] := lcP^.NOTE;
end;

procedure TfrmInvMoldExp.SetListView;
var IX_1, IX_2: Integer;
    lcP: PINVENTORY;
    Item: TListItem;
    Tmp: string;
begin
  Screen.Cursor  := crHourGlass;
  with ListViewMold.Items do begin
    BeginUpdate;
    Clear;
    EndUpdate;
  end;

  //////////////////////////////////
  ListViewMold.Items.BeginUpdate;
  try
    for IX_1:=0 to FMoldExpenseList.Count-1 do begin
      lcP  := FMoldExpenseList.Items[IX_1];
      Item := ListViewMold.Items.Add;
      for IX_2:=0 to FColumnCount-2 do Item.Subitems.Add('');
      Item.Data := lcP;
      MakeItemCaption(Item);
    end;
  finally
    ListViewMold.Items.EndUpdate;
    ListViewMold.Items.EndUpdate;
    stsBarCnt.Panels[0].Text := '符合条件的记录有:'+ IntToStr(ListViewMold.Items.Count)+' 条';
    Screen.Cursor := crDefault;
  end;
end;

procedure TfrmInvMoldExp.SpeedButton2Click(Sender: TObject);
begin
  CLOSE;
end;

procedure TfrmInvMoldExp.ListViewMoldColumnClick(Sender: TObject; Column: TListColumn);
////////////////////////////////////////
  function GetKindCode(S: string): Integer;
  var
    SIn, SOut, SRtn, STun, SBala: string;
  begin
    SIn  := GetMultiLingalMsg(90104, 'In');
    SOut := GetMultiLingalMsg(90105, 'Out');
    SRtn := GetMultiLingalMsg(90098, 'Return');
    STun := GetMultiLingalMsg(90099, 'Tune');
    SBala := GetMultiLingalMsg(90248,'Balance');

    if S = SIn then Result := 0
    else if S = SOut then Result := 1
    else if S = SRtn then Result := 2
    else if S = STun then Result := 3
    else if S = SBala then Result := 4
    else Result := -1;
  end;
  //-- StrToFloat
  function StrToFloatEx(S: string): Double;
  begin
    S := StringReplace(S, ',', '', [rfReplaceAll]);
    S := StringReplace(S, '\', '', [rfReplaceAll]);
    try    Result := Abs(StrToFloat(S));
    except Result := 0;
    end;
  end;
var WSB_Pos: Integer;
begin
  if ListViewMold.Items.Count = 0 then Exit;
  WSB_Pos := GetScrollPos(ListViewMold.Handle, SB_HORZ);
  ListSortKey := Column.Index + 1;
  with ListViewMold do
    case ListSortKey of
      1: if Items[0].Caption < Items[Items.Count-1].Caption then
           ListSortKey := ListSortKey * -1;
      7..9: //--
         if StrToFloatEx(Items[0].SubItems[ListSortKey-2]) <
            StrToFloatEx(Items[Items.Count-1].SubItems[ListSortKey-2]) then
           ListSortKey := ListSortKey * -1;
    else if Items[0].SubItems[ListSortKey-2] <
            Items[Items.Count-1].SubItems[ListSortKey-2] then
           ListSortKey := ListSortKey * -1;
    end;
  FMoldExpenseList.Sort(TListSortCompare(@ListSortCompare));
  SetListView;
  ListViewMold.Scroll(WSB_Pos, 0);
end;

procedure TfrmInvMoldExp.btnExcelClick(Sender: TObject);
begin
  if ListViewMold.Items.Count > 0 then PrintProc;
end;

{*********************************************************************}
procedure TfrmInvMoldExp.PrintProc;
var
  V: OleVariant;
  RecCnt, ColCnt: Integer;
  i,k,L: Integer;
  S,AreaS,DD: string;
  ireport,isheet: integer;
begin
  try
    V := CreateOleObject('Excel.Application');
  except
    MessageDlg('Excel Application is Created Error!', mtError, [mbOk], 0);
    Exit;
  end;
  V.Visible := True;
  V.WorkBooks.Add;
  V.WorkBooks[1].Activate;

  V.WorkSheets[1].Activate;
  V.WorkSheets[1].Name := 'mould material detail';
  V.ActiveSheet.Cells[1, 2].Value := '  ' +'模具从仓库领用物料的明细表';

  RecCnt := 0;
  ColCnt := 0;
  ClipBoard.asText := CopyToClipBoard(RecCnt, ColCnt);

  //--
  V.ActiveSheet.PageSetUp.Orientation := xlPortrait;    //xlLandscape;(纵向)
  V.ActiveSheet.PageSetUp.PrintTitleRows := '$1:$3';        //--
  V.ActiveSheet.PageSetUp.RightHeader :=                    //--
                '&9 '+FormatDateTime('yyyy/mm/dd hh:nn', Now) + ' ' +
                 'Print Date';
  V.ActiveSheet.PageSetUp.CenterFooter := '&9&P/&N Page';  //--
  V.ActiveSheet.PageSetUp.Order := xlOverThenDown;          //--

  //page format
  V.ActiveSheet.PageSetUp.LeftMargin   := V.InchesToPoints(10/25.4); // 15mm
  V.ActiveSheet.PageSetUp.RightMargin  := V.InchesToPoints(10/25.4); // 15mm
  V.ActiveSheet.PageSetUp.TopMargin    := V.InchesToPoints(15/25.4); // 15mm
  V.ActiveSheet.PageSetUp.BottomMargin := V.InchesToPoints(15/25.4); // 15mm
  V.ActiveSheet.PageSetUp.HeaderMargin := V.InchesToPoints(10/25.4); // 10mm
  V.ActiveSheet.PageSetUp.FooterMargin := V.InchesToPoints(10/25.4); // 10mm

  //-- report title caption stytle
  V.ActiveSheet.Cells.Font.Size := 9;
  V.ActiveSheet.Cells[1, 1].HorizontalAlignment := xlLeft;
  V.ActiveSheet.Cells[1, 1].Font.Size := 16;
  V.ActiveSheet.Cells[1, 1].Font.Bold := True;
  V.ActiveSheet.Cells[1, 1].Font.Italic := True;
  V.ActiveSheet.Rows[3].HorizontalAlignment := xlCenter;
  V.ActiveSheet.Rows[3].Font.Size := 11;
  V.ActiveSheet.Rows[3].Font.Bold := True;

  ///--
  V.ActiveSheet.Columns[3].NumberFormatLocal := '@';    //--
  V.ActiveSheet.Columns[6].NumberFormatLocal := '#,###.0000';      //--
  V.ActiveSheet.Columns[7].NumberFormatLocal := '#,###.0000';      //--
  V.ActiveSheet.Columns[8].NumberFormatLocal := '#,###.00';      //--
  V.ActiveSheet.Columns[9].NumberFormatLocal := '#,###.00';      //--
  V.ActiveSheet.Columns[31].NumberFormatLocal := '@';      //--

  //--
  k := Ord('A')+(ColCnt-1);     //Chr(Ord('A')+(ColCnt-1))   A->65 Z->89

  //showMessage(inttostr(ord('A')));

  if K > 90 then begin
    L := (K-89);
    AreaS := 'A'+chr(64+L);
  end
  else begin
    AreaS := Chr(Ord('A')+(ColCnt-1));
  end;

  S := 'A3:'+AreaS+IntToStr(RecCnt+3);

  V.ActiveSheet.Range[S].Borders[xlDiagonalDown].LineStyle := xlNone;
  V.ActiveSheet.Range[S].Borders[xlDiagonalUp].LineStyle   := xlNone;
  V.ActiveSheet.Range[S].Borders[xlEdgeLeft].LineStyle  := xlContinuous;
  V.ActiveSheet.Range[S].Borders[xlEdgeLeft].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlEdgeLeft].ColorIndex := xlAutomatic;
  V.ActiveSheet.Range[S].Borders[xlEdgeTop].LineStyle  := xlContinuous;
  V.ActiveSheet.Range[S].Borders[xlEdgeTop].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlEdgeTop].ColorIndex := xlAutomatic;
  V.ActiveSheet.Range[S].Borders[xlEdgeBottom].LineStyle  := xlContinuous;
  V.ActiveSheet.Range[S].Borders[xlEdgeBottom].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlEdgeBottom].ColorIndex := xlAutomatic;
  V.ActiveSheet.Range[S].Borders[xlEdgeRight].LineStyle  := xlContinuous;
  V.ActiveSheet.Range[S].Borders[xlEdgeRight].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlEdgeRight].ColorIndex := xlAutomatic;
  V.ActiveSheet.Range[S].Borders[xlInsideVertical].LineStyle  := xlDot;
  V.ActiveSheet.Range[S].Borders[xlInsideVertical].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlInsideVertical].ColorIndex := xlAutomatic;
  V.ActiveSheet.Range[S].Borders[xlInsideHorizontal].LineStyle  := xlDot;
  V.ActiveSheet.Range[S].Borders[xlInsideHorizontal].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlInsideHorizontal].ColorIndex := xlAutomatic;

  S := 'A3:'+AreaS+'3';

  V.ActiveSheet.Range[S].Borders[xlDiagonalDown].LineStyle := xlNone;
  V.ActiveSheet.Range[S].Borders[xlDiagonalUp].LineStyle   := xlNone;
  V.ActiveSheet.Range[S].Borders[xlEdgeLeft].LineStyle  := xlContinuous;
  V.ActiveSheet.Range[S].Borders[xlEdgeLeft].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlEdgeLeft].ColorIndex := xlAutomatic;
  V.ActiveSheet.Range[S].Borders[xlEdgeTop].LineStyle  := xlContinuous;
  V.ActiveSheet.Range[S].Borders[xlEdgeTop].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlEdgeTop].ColorIndex := xlAutomatic;
  V.ActiveSheet.Range[S].Borders[xlEdgeBottom].LineStyle  := xlContinuous;
  V.ActiveSheet.Range[S].Borders[xlEdgeBottom].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlEdgeBottom].ColorIndex := xlAutomatic;
  V.ActiveSheet.Range[S].Borders[xlEdgeRight].LineStyle  := xlContinuous;
  V.ActiveSheet.Range[S].Borders[xlEdgeRight].Weight     := xlThin;
  V.ActiveSheet.Range[S].Borders[xlEdgeRight].ColorIndex := xlAutomatic;

  //--
  V.ActiveSheet.Cells[3, 1].PasteSpecial;
  V.ActiveSheet.Cells[3, 1].Select;

  //--
  //DD := 'A:'+Chr(Ord('A')+(ColCnt-1));
  DD := 'A:'+AreaS;
  V.ActiveSheet.Columns[DD].EntireColumn.AutoFit;

  for i:=1 to ColCnt do
    V.ActiveSheet.Columns[i].ColumnWidth := V.ActiveSheet.Columns[i].ColumnWidth + 2;
  if frmMain.IniData.isExcelPrint then V.Print;
end;

///////////////////////////////////////////////////////////////////
function TfrmInvMoldExp.CopyToClipBoard(var RecCnt, ColCnt: Integer): string;
var i, j: Integer;
    Buf: string;
begin
  RecCnt := 0; ColCnt := 0;
  Buf := '';
  for i:=0 to FColumnCount-1 do begin
    Buf := Buf + ListViewMold.Column[i].Caption + #9;
    Inc(ColCnt);
  end;
  Buf := Buf + #13#10;
  for i:=0 to ListViewMold.Items.Count-1 do begin
    for j:=0 to FColumnCount-1 do
      if j = 0 then Buf := Buf + Trim(ListViewMold.Items[i].Caption) + #9
      else Buf := Buf + Trim(ListViewMold.Items[i].SubItems[j-1]) + #9;
    Buf := Buf + #13#10;
    Inc(RecCnt);
  end;
  Result := Buf;
end;



end.

⌨️ 快捷键说明

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