📄 invmoldexpense.pas
字号:
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 + -