?? qrydeliverylist.~pas
字號:
unit QryDeliveryList;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Dialogs,
Buttons, ExtCtrls, ComCtrls, EnhLV, GLLV, Math, InvDef, dpConst;
type
TfrmDeliveriedList = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
ListViewDelOrd: TGradLineListView;
edtOrder: TLabeledEdit;
cbxSup: TComboBox;
edtSupply: TLabeledEdit;
edtSupName: TEdit;
edtHatCode: TLabeledEdit;
edtMatCode: TLabeledEdit;
edtMatClass: TLabeledEdit;
edtMatClassName: TEdit;
cbxMatClass: TComboBox;
btnOK: TBitBtn;
btnCancel: TBitBtn;
btnQuery: TBitBtn;
cbxStk: TComboBox;
edtStkName: TEdit;
edtStkID: TLabeledEdit;
edtIssPaper: TLabeledEdit;
edtInPaper: TLabeledEdit;
stsBarCnt: TStatusBar;
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 edtOrderChange(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 cbxStkDropDown(Sender: TObject);
procedure cbxStkChange(Sender: TObject);
procedure edtStkIDChange(Sender: TObject);
private
{ Private declarations }
Procedure SetListViewColumn;
Procedure SetListView;
procedure MakeItemCaption(Item: TListItem);
Procedure SetMultilingual;
procedure Close_TabStop;
Procedure Init_TabStopAndTabOrder;
Procedure GetNextTabOrder(Key: Word; ShiftState: TShiftState);
public
{ Public declarations }
default_orderserial: integer;
curr_select_DeliOrd: PAllReadyInOrder;
function Set_QryCondition(lcP: PAllReadyInOrder): Boolean;
function ListSelCheck: Boolean;
end;
var
frmDeliveriedList: TfrmDeliveriedList;
ListSortKey: integer;
FAllReadyInOrderList: 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 //--
Str1 := TAllReadyInOrder(Item1^).stk_id;
Str2 := TAllReadyInOrder(Item2^).stk_id;
DataType := 0;
end;
2: begin //--
Int1 := TAllReadyInOrder(Item1^).order_no;
Int2 := TAllReadyInOrder(Item2^).order_no;
DataType := 1;
end;
3: begin //--
Str1 := TAllReadyInOrder(Item1^).hat_code;
Str2 := TAllReadyInOrder(Item2^).hat_code;
DataType := 0;
end;
4: begin //--
Str1 := dm_inventory.GetOrderNo(TAllReadyInOrder(Item1^).order_rec_id);
Str2 := dm_inventory.GetOrderNo(TAllReadyInOrder(Item2^).order_rec_id);
DataType := 0;
end;
5: begin //--
Int1 := TAllReadyInOrder(Item1^).parts_rec_id;
Int2 := TAllReadyInOrder(Item2^).parts_rec_id;
DataType := 1;
end;
6: begin //--
Str1 := dm_inventory.GetMaterialCode(TAllReadyInOrder(Item1^).material_rec_id);
Str2 := dm_inventory.GetMaterialCode(TAllReadyInOrder(Item2^).material_rec_id);
DataType := 0;
end;
13: begin //--
Int1 := TAllReadyInOrder(Item1^).supplier_code;
Int2 := TAllReadyInOrder(Item2^).supplier_code;
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 TfrmDeliveriedList.FormCreate(Sender: TObject);
begin
FAllReadyInOrderList := TList.Create;
FAllReadyInOrderList.Clear;
SetMultilingual;
end;
procedure TfrmDeliveriedList.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
//action := cafree;
end;
procedure TfrmDeliveriedList.FormShow(Sender: TObject);
begin
Close_TabStop;
Init_TabStopAndTabOrder;
edtSupply.Text := '';
edtSupName.Text := '';
cbxSup.Text := '';
edtMatClass.Text:= '';
edtMatClassName.Text := '';
cbxMatClass.Text:= '';
edtMatCode.Text:= '';
edtOrder.Text := '';
edtHatCode.Text := '';
//dm_inventory.Read_DeliveryOnTimeInfo(FAllReadyInOrderList);
SetListViewColumn;
SetListView;
edtStkID.SetFocus;
end;
procedure TfrmDeliveriedList.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: PAllReadyInOrder;
begin
if Item = nil then Exit;
if Item.Data = nil then Exit;
lcP := Item.Data;
Item.Caption := strpas(lcp^.stk_id);
Item.SubItems[00] := IntTostr(lcp^.order_no);
Item.SubItems[01] := lcp^.hat_code;
Item.SubItems[02] := dm_inventory.GetOrderNo(lcp^.order_rec_id);
Item.SubItems[03] := dm_inventory.GetPartCode(lcp^.order_rec_id, lcp^.parts_rec_id);
Item.SubItems[04] := dm_inventory.GetMaterialCode(lcp^.material_rec_id);
Item.SubItems[05] := lcp^.material_name;
Item.SubItems[06] := dm_inventory.Get_GuageName(lcp^.material_rec_id,lcp^.guage_id);
Item.SubItems[07] := formatFloat('#,##0.00',lcp^.unit_price);
Item.SubItems[08] := formatFloat('#,##0.00',lcp^.quantity);
Item.SubItems[09] := formatFloat('#,##0.00',lcp^.mak_price);
Item.SubItems[10] := formatFloat('#,##0.00',lcp^.total_price);
Item.SubItems[11] := IntToStr(lcp^.supplier_code);
Item.SubItems[12] := IntToStr(lcp^.maker_code);
Item.SubItems[13] := lcp^.iss_paperno;
Item.SubItems[14] := lcp^.paperno;
Item.SubItems[15] := lcp^.sequal_no;
Item.SubItems[16] := formatDatetime('yy/mm/dd',lcp^.date);
Item.SubItems[17] := lcp^.note;
end;
procedure TfrmDeliveriedList.SetListView;
var i,j: Integer;
lcP: PAllReadyInOrder;
Item: TListItem;
begin
Screen.Cursor := crHourGlass;
with ListViewDelOrd.Items do begin
BeginUpdate;
Clear;
EndUpdate;
end;
//--
ListViewDelOrd.Items.BeginUpdate;
FOnMakeItemCaption := True;
try
//ListSortKey := 1;
FAllReadyInOrderList.Sort(TListSortCompare(@ListSortCompare));
for i := 0 to FAllReadyInOrderList.Count-1 do begin
lcP := FAllReadyInOrderList.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);
end;
finally
FOnMakeItemCaption := False;
ListViewDelOrd.Items.EndUpdate;
if ListViewDelOrd.Items.Count > 0 then ListViewDelOrd.TopItem.Selected := True;
stsBarCnt.Panels[0].Text := '符合條件的記錄有:'+ IntToStr(ListViewDelOrd.Items.Count)+' 條';
Screen.Cursor := crDefault;
end;
end;
procedure TfrmDeliveriedList.SetListViewColumn;
var
Column: TListColumn;
begin
ListViewDelOrd.Columns.Clear;
FColumnCnt := 0;
//--
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 5;
Column.Alignment := taCenter;
Column.Caption := GetMultiLingalMsg(90027,'stk_id');
Inc(FColumnCnt);
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 7;
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(90063,'Mold Code');
Inc(FColumnCnt);
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 14;
Column.Caption := GetMultiLingalMsg(90064,'Part Code');
Inc(FColumnCnt);
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90028,'Material Code');
Inc(FColumnCnt);
//--
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 18;
Column.Caption := GetMultiLingalMsg(90029,'Material Name');
Inc(FColumnCnt);
//--
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 18;
Column.Caption := GetMultiLingalMsg(90031,'Guage Name');
Inc(FColumnCnt);
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 10;
Column.Caption := GetMultiLingalMsg(90033,'Unit Price');
Inc(FColumnCnt);
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 10;
Column.Caption := '訂貨結余量';//GetMultiLingalMsg(90055,'IN Quantity');
Inc(FColumnCnt);
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 8;
Column.Caption := GetMultiLingalMsg(70222,'Process Cost');
Inc(FColumnCnt);
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 10;
Column.Caption := '訂貨結余額';//GetMultiLingalMsg(90056, 'IN Amount');
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(90236,'Issue Paper');
Inc(FColumnCnt);
Column := ListViewDelOrd.Columns.Add;
Column.Width := ListViewDelOrd.Font.Size * 12;
Column.Caption := GetMultiLingalMsg(90073,'In Paper');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -