?? invmoldexpense.~pas
字號:
unit InvMoldExpense;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ExtCtrls, ComCtrls, InvDef, xlsConst, dpConst,
Math, EnhLV, GLLV, ComObj, ClipBrd, StrUnit;
type
TfrmInvMoldExp = class(TForm)
stsBarCnt: TStatusBar;
Panel2: TPanel;
CheckBox1: TCheckBox;
GroupBox1: TGroupBox;
edtMoldID: TLabeledEdit;
Panel6: TPanel;
GroupBox2: TGroupBox;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
btnExcel: TSpeedButton;
TabControl1: TTabControl;
Panel4: TPanel;
ListViewMold: TGradLineListView;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure ListViewMoldColumnClick(Sender: TObject;
Column: TListColumn);
procedure btnExcelClick(Sender: TObject);
private
{ Private declarations }
function SetListColumn: Integer;
procedure MakeItemCaption(Item: TListItem);
procedure SetListView;
public
{ Public declarations }
Procedure PrintProc;
function CopyToClipBoard(var RecCnt, ColCnt: Integer): string;
end;
var
frmInvMoldExp: TfrmInvMoldExp;
FMoldExpenseList: TList;
FColumnCount,
ListSortKey: Integer;
implementation
uses Main, InvDM;
{$R *.dfm}
//-- TListSortCompare --
function ListSortCompare(Item1, Item2: Pointer): Longint;
var DataType: Integer;
Str1, Str2: string;
Int1, Int2: Integer;
Dbl1, Dbl2: Double;
Dat1, Dat2: TDateTime;
begin
Result := 0;
Str1 := ''; Str2 := '';
Int1 := 0; Int2 := 0;
Dbl1 := 0; Dbl2 := 0;
Dat1 := 0; Dat2 := 0;
case Abs(ListSortKey) of
1: begin //--
Str1 := TINVENTORY(Item1^).STK_ID;
Str2 := TINVENTORY(Item2^).STK_ID;
DataType := 0;
end;
2: begin //--
Dat1 := TINVENTORY(Item1^).DATE;
Dat2 := TINVENTORY(Item2^).DATE;
DataType := 3;
end;
3: begin //--
Str1 := dm_inventory.GetMaterialCode(TINVENTORY(Item1^).MAT_RID)+RightStr(('0000000'+InttoStr(TINVENTORY(Item1^).GUAGE_ID)),6);
Str2 := dm_inventory.GetMaterialCode(TINVENTORY(Item2^).MAT_RID)+RightStr(('0000000'+InttoStr(TINVENTORY(Item2^).GUAGE_ID)),6);
DataType := 0;
end;
4: begin //--
Str1 := TINVENTORY(Item1^).MAT_NM;
Str2 := TINVENTORY(Item2^).MAT_NM;
DataType := 0;
end;
5: begin //--
Str1 := dm_inventory.GetMaterialCode(TINVENTORY(Item1^).MAT_RID)+RightStr(('0000000'+InttoStr(TINVENTORY(Item1^).GUAGE_ID)),6);
Str2 := dm_inventory.GetMaterialCode(TINVENTORY(Item2^).MAT_RID)+RightStr(('0000000'+InttoStr(TINVENTORY(Item2^).GUAGE_ID)),6);
DataType := 0;
end;
7: begin //--
Dbl1 := TINVENTORY(Item1^).UNT_PRICE;
Dbl2 := TINVENTORY(Item2^).UNT_PRICE;
DataType := 2;
end;
8: begin //--
Dbl1 := Abs(TINVENTORY(Item1^).QUANTITY);
Dbl2 := Abs(TINVENTORY(Item2^).QUANTITY);
DataType := 2;
end;
9: begin //--
Dbl1 := Abs(TINVENTORY(Item1^).TTL_PRICE);
Dbl2 := Abs(TINVENTORY(Item2^).TTL_PRICE);
DataType := 2;
end;
10: begin //--
Dbl1 := Abs(TINVENTORY(Item1^).MAK_PRICE);
Dbl2 := Abs(TINVENTORY(Item2^).MAK_PRICE);
DataType := 2;
end;
11: begin //--
Int1 := TINVENTORY(Item1^).ODR_RID;
Int2 := TINVENTORY(Item2^).ODR_RID;
DataType := 1;
end;
12: begin //--
Int1 := TINVENTORY(Item1^).PAT_RID;
Int2 := TINVENTORY(Item2^).PAT_RID;
DataType := 1;
end;
13: begin //--
Str1 := TINVENTORY(Item1^).PAPERNO;
Str2 := TINVENTORY(Item2^).PAPERNO;
DataType := 0;
end;
17: begin //--
Int1 := TINVENTORY(Item1^).HAT_RID;
Int2 := TINVENTORY(Item2^).HAT_RID;
DataType := 1;
end;
18: begin //--
Str1 := TINVENTORY(Item1^).HAT_CODE;
Str2 := TINVENTORY(Item2^).HAT_CODE;
DataType := 0;
end;
20: begin //--
Int1 := TINVENTORY(Item1^).SUP_CD;
Int2 := TINVENTORY(Item2^).SUP_CD;
DataType := 1;
end;
21: begin //--
Int1 := TINVENTORY(Item1^).MAK_CD;
Int2 := TINVENTORY(Item2^).MAK_CD;
DataType := 1;
end;
23: begin //--
Str1 := TINVENTORY(Item1^).recieve_EmpID;
Str2 := TINVENTORY(Item2^).recieve_EmpID;
DataType := 0;
end;
24: begin //--
Str1 := TINVENTORY(Item1^).input_empid;
Str2 := TINVENTORY(Item2^).input_empid;
DataType := 0;
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;
3: if Dat1 < Dat2 then Result := -1
else if Dat1 > Dat2 then Result := 1
else Result := 0;
else Result := 0;
end;
if ListSortKey < 0 then Result := Result * -1;
end;
procedure TfrmInvMoldExp.FormCreate(Sender: TObject);
begin
Top := frmMain.Height;
Left := 0;
Width := Screen.Width;
Height := Screen.Height-(frmMain.Height+stsBarCnt.Height+8);
FMoldExpenseList := TList.Create;
FMoldExpenseList.Clear;
SetListColumn;
end;
procedure TfrmInvMoldExp.FormShow(Sender: TObject);
begin
Top := frmMain.Height;
Left := 0;
Width := Screen.Width;
Height := Screen.Height-(frmMain.Height+stsBarCnt.Height+8);
end;
procedure TfrmInvMoldExp.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;
procedure TfrmInvMoldExp.SpeedButton1Click(Sender: TObject);
var iMold_rec_id: LongInt;
lcp: PINVENTORY;
i,j: Integer;
Item: TListItem;
begin
iMold_rec_id := dm_inventory.GetOrderRID(trim(edtMoldID.Text));
if (iMold_rec_id=-1) then iMold_rec_id := 0;
if (iMold_rec_id<=0) then
begin
if MessageDlg('輸入的模號不存在,確定要帶出所有模號的出庫信息!',mtWarning,[mbYes,mbNo],0)=mrNo then Exit;
end;
dm_inventory.ReadInventory5(FMoldExpenseList, iMold_rec_id,1);
with ListViewMold.Items do
begin
BeginUpdate;
Clear;
EndUpdate;
end;
//--
ListViewMold.Items.BeginUpdate;
try
ListSortKey := 1;
FMoldExpenseList.Sort(TListSortCompare(@ListSortCompare));
for i :=0 to FMoldExpenseList.Count-1 do
begin
lcP := FMoldExpenseList.Items[i];
Item := ListViewMold.Items.Add;
for j :=0 to FColumnCount-2 do Item.Subitems.Add('');
Item.Data := lcP;
MakeItemCaption(Item);
end;
finally
ListViewMold.Items.EndUpdate;
stsBarCnt.Panels[0].Text := '符合條件的記錄有:'+ IntToStr(ListViewMold.Items.Count)+' 條';
Screen.Cursor := crDefault;
end;
end;
////////////////////////////////////////////////////////////
function TfrmInvMoldExp.SetListColumn: Integer;
var Column: TListColumn;
begin
ListViewMold.Columns.Clear;
FColumnCount := 0;
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 5;
Column.Caption := GetMultiLingalMsg(90027, 'Stock ID');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 8;
Column.Caption := '出庫日期';
Inc(FColumnCount);
//--
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90028, 'Material Code');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 14;
Column.Caption := GetMultiLingalMsg(90029, 'Material Name');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 22;
Column.Caption := '出庫規格';
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 5;
Column.Caption := GetMultiLingalMsg(90032, 'Unit Name');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 8;
Column.Alignment := taRightJustify;
Column.Caption := GetMultiLingalMsg(90033, 'Unit Price');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 8;
Column.Alignment := taRightJustify;
Column.Caption := '出庫量';
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 10;
Column.Alignment := taRightJustify;
Column.Caption := '出庫金額';
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 8;
Column.Alignment := taRightJustify;
Column.Caption := GetMultiLingalMsg(70222, 'Process Cost');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90063, 'Mold Code');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 10;
Column.Caption := GetMultiLingalMsg(90064, 'Part Code');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 13;
Column.Caption := '領料單號';
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90084, 'Use Guage');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 8;
Column.Caption := GetMultiLingalMsg(90085, 'Use Quantity');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 10;
Column.Caption := GetMultiLingalMsg(90086, 'Use Amount');
Inc(FColumnCount);
Column := ListViewMold.Columns.Add;
Column.Width := ListViewMold.Font.Size * 8;
Column.Caption := GetMultiLingalMsg(90062, 'Order Serial');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -