?? qrymaterial.pas
字號:
unit QryMaterial;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, Buttons, InvDef, EnhLV, GLLV, dpConst;
type
TfrmMaterialQry = class(TForm)
Panel1: TPanel;
Panel3: TPanel;
edtFMtlCode: TLabeledEdit;
cbxMTP: TComboBox;
edtMtlType: TLabeledEdit;
edtMTPName: TEdit;
edtEMtlCode: TLabeledEdit;
Image1: TImage;
btnQuery: TBitBtn;
cbxSup: TComboBox;
cbxMak: TComboBox;
rdoSort: TRadioGroup;
Panel5: TPanel;
btnOK: TBitBtn;
btnCancel: TBitBtn;
edtSupply: TLabeledEdit;
edtMake: TLabeledEdit;
edtMakName: TEdit;
edtSupName: TEdit;
ListViewMTL: TGradLineListView;
chkMaterial: TCheckBox;
chkOther: TCheckBox;
stsBarCnt: TStatusBar;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnQueryClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure ListViewMTLColumnClick(Sender: TObject; Column: TListColumn);
procedure cbxMTPDropDown(Sender: TObject);
procedure cbxMTPChange(Sender: TObject);
procedure cbxSupDropDown(Sender: TObject);
procedure cbxSupChange(Sender: TObject);
procedure cbxMakDropDown(Sender: TObject);
procedure cbxMakChange(Sender: TObject);
procedure ListViewMTLDblClick(Sender: TObject);
procedure edtSupplyChange(Sender: TObject);
procedure edtMakeChange(Sender: TObject);
procedure edtMtlTypeChange(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edtFMtlCodeChange(Sender: TObject);
procedure edtEMtlCodeChange(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 }
iSortKey,
iShiZaiKubun: integer;
FSelectedShizai: PShizai;
function Set_QryCondition(lcP: PSHIZAI): Boolean;
protected
{ Protected }
end;
var
frmMaterialQry: TfrmMaterialQry;
QryMtlList: TList;
FColumnCnt: integer;
FOnMakeItemCaption: Boolean;
ListSortKey: 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 := TSHIZAI(Item1^).SHIZAI_CD;
Str2 := TSHIZAI(Item2^).SHIZAI_CD;
DataType := 0;
end;
2: begin //--
Str1 := TSHIZAI(Item1^).SHIZAI_NM;
Str2 := TSHIZAI(Item2^).SHIZAI_NM;
DataType := 0;
end;
3: begin //--
Str1 := TSHIZAI(Item1^).STANDARD;
Str2 := TSHIZAI(Item2^).STANDARD;
DataType := 0;
end;
4: begin //--
Int1 := TSHIZAI(Item1^).MAKER_CD;
Int2 := TSHIZAI(Item2^).MAKER_CD;
DataType := 1;
end;
5: begin //--
Str1 := TSHIZAI(Item1^).MAKER_NM;
Str2 := TSHIZAI(Item2^).MAKER_NM;
DataType := 0;
end;
6: begin //--
Int1 := TSHIZAI(Item1^).SHIIRE_CD;
Int2 := TSHIZAI(Item2^).SHIIRE_CD;
DataType := 1;
end;
7: begin //--
Str1 := TSHIZAI(Item1^).SHIIRE_NM;
Str2 := TSHIZAI(Item2^).SHIIRE_NM;
DataType := 0;
end;
8: begin //--
Int1 := TSHIZAI(Item1^).SHIZAI_KUBUN_ID;
Int2 := TSHIZAI(Item2^).SHIZAI_KUBUN_ID;
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;
function TfrmMaterialQry.Set_QryCondition(lcP: PSHIZAI): Boolean;
var i,iMatAttr: Integer;
WMtlCode: array[0..1] of String;
begin
Result := True;
if trim(edtFMtlCode.Text)='' then WMtlCode[0] := '0000000000'
else WMtlCode[0] := trim(edtFMtlCode.Text);
if trim(edtEMtlCode.Text)='' then WMtlCode[1] := 'ZZZZZZZZZZ'
else WMtlCode[1] := trim(edtEMtlCode.Text);
if ((WMtlCode[0] > lcp^.SHIZAI_CD) or (WMtlCode[1] < lcp^.SHIZAI_CD)) then begin
result := false;
exit;
end;
iMatAttr := dm_inventory.Get_KubunIssMode_FromShiZai(lcp^.REC_ID);
if chkMaterial.Checked then begin
if not ( iMatAttr= 1) then begin
result := false;
exit;
end;
end;
if chkOther.Checked then begin
if not ((iMatAttr=2)or (iMatAttr=3)or (iMatAttr=4)) then begin
result := false;
exit;
end;
end;
if (trim(edtSupply.Text)<>'') then
if not (inttostr(lcp^.SHIIRE_CD) = trim(edtSupply.Text)) then begin
result := false;
exit;
end;
if (trim(edtMake.Text)<>'') then
if not (inttostr(lcp^.MAKER_CD) = trim(edtMake.Text)) then begin
result := false;
exit;
end;
if (trim(edtMtlType.Text)<>'') then
if not (dm_inventory.Get_KubunRecID_FromShiZai(lcp^.REC_ID) = iShiZaiKubun) then begin
result := false;
exit;
end;
end;
procedure TfrmMaterialQry.FormCreate(Sender: TObject);
begin
QryMtlList := TList.Create;
QryMtlList.Clear;
SetMultilingual;
end;
procedure TfrmMaterialQry.FormShow(Sender: TObject);
begin
Close_TabStop;
Init_TabStopAndTabOrder;
edtFMtlCode.Text := '';
edtEMtlCode.Text := '';
edtMtlType.Text := '';
edtMTPName.Text := '';
cbxMTP.Text := '';
edtSupply.Text := '';
edtSupName.Text := '';
cbxSup.Text := '';
edtMake.Text := '';
edtMakName.Text := '';
cbxMak.Text := '';
dm_inventory.ReadShizai(QryMtlList);
SetListViewColumn;
SetListView;
edtMtlType.SetFocus
end;
procedure TfrmMaterialQry.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//dm_inventory.ListFreeMemory(QryMtlList);
end;
procedure TfrmMaterialQry.btnQueryClick(Sender: TObject);
var
i,j: integer;
lcP: PSHIZAI;
Item: TListItem;
begin
/////////////////////////////////////
case rdoSort.ItemIndex of
0: iSortKey := 1;
1: iSortKey := 2;
2: iSortKey := 4;
3: iSortKey := 6;
else iSortKey := 1;
end;
Screen.Cursor := crHourGlass;
with ListViewMTL.Items do begin
BeginUpdate;
Clear;
EndUpdate;
end;
//--
ListViewMTL.Items.BeginUpdate;
FOnMakeItemCaption := True;
try
ListSortKey := iSortKey;
QryMtlList.Sort(TListSortCompare(@ListSortCompare));
for i := 0 to QryMtlList.Count-1 do begin
lcP := QryMtlList.Items[i];
if not Set_QryCondition(lcp) then continue;
Item := ListViewMTL.Items.Add;
for j :=0 to FColumnCnt-2 do Item.Subitems.Add('');
lcP^.ITEM := Item;
Item.Data := lcP;
MakeItemCaption(Item);
end;
finally
FOnMakeItemCaption := False;
ListViewMTL.Items.EndUpdate;
if ListViewMTL.Items.Count>0 then
begin
ListViewMTL.TopItem.Selected := true;
ListViewMTL.Selected.Selected := true;
end;
stsBarCnt.Panels[0].Text := '符合條件的記錄有:'+ IntToStr(ListViewMTL.Items.Count)+' 條';
Screen.Cursor := crDefault;
end;
end;
/////////////////////////////////////////
/////////////////////////////////////////
procedure TfrmMaterialQry.btnOKClick(Sender: TObject);
var
lcP: PSHIZAI;
begin
ModalResult := mrNone;
if ListViewMTL.Selected = nil then FSelectedShizai := nil
else FSelectedShizai := PSHIZAI(ListViewMTL.Selected.Data);
ModalResult := mrOK;
end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -