📄 selectitemform.pas
字号:
unit SelectItemForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
SingleNbtnForm, ComCtrls, sDBTree, Db, jpeg, ExtCtrls, DBClient, sconnect,
Grids, StdCtrls, Buttons, DBGridEh;
type
TSelectItemFrm = class(TSingleNbtnFrm)
sDBTree1: TsDBTree;
cdsLookupTable: TClientDataSet;
Panel1: TPanel;
Label1: TLabel;
edFindText: TEdit;
btnFind: TSpeedButton;
btnEdit: TBitBtn;
btnTree: TBitBtn;
btnOk: TBitBtn;
btnCancel: TBitBtn;
cdsLookupTableItemNo: TStringField;
cdsLookupTableItemName: TStringField;
cdsLookupTableItemType: TStringField;
cdsLookupTableMeasureMethod: TStringField;
cdsLookupTableModeSpec: TStringField;
cdsLookupTableStandardPrice: TBCDField;
cdsLookupTableCostPrice: TBCDField;
DBGridEh1: TDBGridEh;
cdsLookupTableBarCode: TStringField;
cdsLookupTableTaxRate: TBCDField;
procedure sDBTree1GetFirstLevelData(Sender: TObject;
ColConstrain: String; DataSet: TClientDataSet);
procedure FormShow(Sender: TObject);
procedure sDBTree1DblClick(Sender: TObject);
procedure sDBTree1GetNextLevelData(Sender: TObject; RowConstrain,
ColConstrain: String; DataSet: TClientDataSet);
procedure btnTreeClick(Sender: TObject);
procedure btnOkClick(Sender: TObject);
procedure btnFindClick(Sender: TObject);
procedure sDBTree1Click(Sender: TObject);
procedure sDBTree1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGridEh1DblClick(Sender: TObject);
private
{ Private declarations }
FItemClass: string;
FItemType: string;
FStockCode: string;
FItemNo: string;
FItemName: string;
FItemUnit: string;
FItemSpec: string;
FItemBarcode : string;
FTaxRate: Double;
FStandardPrice: Double;
FCostPrice: Double;
function DoEqualQuery: integer;
function DoLikeQuery: integer;
procedure SetProperty;
public
{ Public declarations }
{ItemClass:采购:P/销售:S/制造:M}
property ItemClass: string read FItemClass write FItemClass;
{应该允许指定商品类型}
property ItemType: string read FItemType write FItemType;
{允许指定库房代码}
property StockCode: string read FStockCode write FStockCode;
property ItemNo: string read FItemNo write FItemNo;
property ItemName: string read FItemName write FItemName;
property ItemUnit: string read FItemUnit write FItemUnit;
property ItemSpec: string read FItemSpec write FItemSpec;
property ItemBarCode: string read FItemBarcode write FItemBarcode;
property TaxRate: Double read FTaxRate write FTaxRate;
property StandardPrice: Double read FStandardPrice write FStandardPrice;
property CostPrice: Double read FCostPrice write FCostPrice;
end;
{ItemClass:'P':采购/'S':销售/'M':制造}
{ItemType:商品类型代码}
{StockCode:库房代码}
{弹出窗体,选择指定类型的商品代码和商品信息}
function SelectItemNo(ItemClass,ItemType,StockCode: string; var ItemNo: string; var ItemInfo: TStrings): Boolean;
{检查指定类型的商品代码是否正确,并返回商品信息}
function CheckItemNo(ItemClass,ItemType,StockCode: string; var ItemNo: string; var ItemInfo: TStrings): Boolean;
implementation
{$R *.DFM}
uses
SystemConstUnit,DataSet2VariantUnit,GlobalUnit,
Pub_DBFunction, untItemPack, untItem;
const
FormSmallWidth = 360;
FormLargeWidth = 562;
PanelLargeLeft = 210;
PanelSmallLeft = 10;
SmallTag = 0;
LargeTag = 1;
FormTitleHight = 24;
SQL_Equal = 'select ItemNo,ItemName,ItemType,MeasureMethod,ModeSpec,StandardPrice,CostPrice,BarCode,TaxRate' +
' from Pub_ItemList where CompanyCode = ''%s''' +
' and AllowUsed=''1''' +
' and ((ItemNo = ''%s'') or (ItemName = ''%s''))';
SQL_Like = 'select ItemNo,ItemName,ItemType,MeasureMethod,ModeSpec,StandardPrice,CostPrice,BarCode,TaxRate' +
' from Pub_ItemList where CompanyCode = ''%s''' +
' and AllowUsed=''1''' +
' and ((ItemNo Like ''%%%s%%'') or (ItemName Like ''%%%s%%''))';
SQL_Equal_Stock = 'select I.ItemNo,I.ItemName,I.ItemType,I.MeasureMethod,I.ModeSpec,I.StandardPrice,I.CostPrice,BarCode,TaxRate' +
' from Pub_ItemList I, Inv_ItemStockMaster S' +
// ' where I.CompanyCode=S.CompanyCode and I.ItemNo=S.ItemNo' +
' where I.ItemNo=S.ItemNo' +
' and I.CompanyCode = ''%s''' +
' and I.AllowUsed=''1''' +
' and S.StockCode = ''%s''' +
' and ((I.ItemNo = ''%s'') or (I.ItemName = ''%s''))';
SQL_Like_Stock = 'select I.ItemNo,I.ItemName,I.ItemType,I.MeasureMethod,I.ModeSpec,I.StandardPrice,I.CostPrice,BarCode,TaxRate' +
' from Pub_ItemList I, Inv_ItemStockMaster S' +
// ' where I.CompanyCode=S.CompanyCode and I.ItemNo=S.ItemNo' +
' where I.ItemNo=S.ItemNo' +
' and I.CompanyCode = ''%s''' +
' and I.AllowUsed=''1''' +
' and S.StockCode = ''%s''' +
' and ((I.ItemNo Like ''%%%s%%'') or (I.ItemName Like ''%%%s%%''))';
SQL_Like_Vendor = 'select I.ItemNo,I.ItemName,I.ItemType,I.MeasureMethod,I.ModeSpec,I.StandardPrice,I.CostPrice,BarCode,TaxRate' +
' from Pub_ItemList I' +
' where ' +
' I.CompanyCode = ''%s''' +
' and I.AllowUsed=''1''' +
' and (I.ItemNo Like ''%s%%'')' +
' and ((I.ItemNo Like ''%%%s%%'') or (I.ItemName Like ''%%%s%%''))';
function SelectItemNo(ItemClass,ItemType,StockCode: string; var ItemNo: string; var ItemInfo: TStrings): Boolean;
var
SelectItemFrm: TSelectItemFrm;
begin
result := False;
SelectItemFrm := TSelectItemFrm.Create(Application);
try
SelectItemFrm.ItemClass := ItemClass;
SelectItemFrm.ItemType := ItemType;
SelectItemFrm.StockCode := StockCode;
SelectItemFrm.ItemNo := ItemNo;
SelectItemFrm.DoLikeQuery;
if SelectItemFrm.ShowModal= mrOk then
begin
ItemNo := SelectItemFrm.ItemNo;
ItemInfo.Clear;
ItemInfo.Add(Format('ItemName=%s',[SelectItemFrm.ItemName]));
ItemInfo.Add(Format('ItemUnit=%s',[SelectItemFrm.ItemUnit]));
ItemInfo.Add(Format('ItemSpec=%s',[SelectItemFrm.ItemSpec]));
ItemInfo.Add(Format('ItemBarCode=%s',[SelectItemFrm.ItemBarCode]));
ItemInfo.Add(Format('TaxRate=%f',[SelectItemFrm.TaxRate]));
ItemInfo.Add(Format('StandardPrice=%f',[SelectItemFrm.StandardPrice]));
ItemInfo.Add(Format('CostPrice=%f',[SelectItemFrm.CostPrice]));
result := True;
end;
finally
SelectItemFrm.Free;
end;
end;
function CheckItemNo(ItemClass,ItemType,StockCode: string; var ItemNo: string; var ItemInfo: TStrings): Boolean;
var
SelectItemFrm: TSelectItemFrm;
procedure SetItemInfo;
begin
ItemInfo.Clear;
ItemInfo.Add(Format('ItemName=%s',[SelectItemFrm.ItemName]));
ItemInfo.Add(Format('ItemUnit=%s',[SelectItemFrm.ItemUnit]));
ItemInfo.Add(Format('ItemSpec=%s',[SelectItemFrm.ItemSpec]));
ItemInfo.Add(Format('ItemBarCode=%s',[SelectItemFrm.ItemBarCode]));
ItemInfo.Add(Format('TaxRate=%f',[SelectItemFrm.TaxRate]));
ItemInfo.Add(Format('StandardPrice=%f',[SelectItemFrm.StandardPrice]));
ItemInfo.Add(Format('CostPrice=%f',[SelectItemFrm.CostPrice]));
end;
begin
result := False;
SelectItemFrm := TSelectItemFrm.Create(Application);
try
SelectItemFrm.ItemClass := ItemClass;
SelectItemFrm.ItemType := ItemType;
SelectItemFrm.StockCode := StockCode;
SelectItemFrm.ItemNo := ItemNo;
if SelectItemFrm.DoEqualQuery = 1 then
begin
SelectItemFrm.SetProperty;
ItemNo := SelectItemFrm.ItemNo;
SetItemInfo;
result := True;
end
else begin
case SelectItemFrm.DoLikeQuery of
0 : Global.AccessDialog.ShowWarning('没有定义相应的商品代码');
1 :
begin
SelectItemFrm.SetProperty;
ItemNo := SelectItemFrm.ItemNo;
SetItemInfo;
result := True;
end;
else if SelectItemFrm.ShowModal= mrOk then
begin
ItemNo := SelectItemFrm.ItemNo;
SetItemInfo;
result := True;
end;
end;
end;
finally
SelectItemFrm.Free;
end;
end;
//------------------------------ TSelectItemFrm ----------------------------
procedure TSelectItemFrm.FormShow(Sender: TObject);
var
i : integer;
begin
inherited;
btnTree.Tag := 1;
btnTreeClick(btnTree);
edFindText.Text := ItemNo;
sDBTree1.Reset;
for i := 0 to DBGridEh1.Columns.Count - 1 do
DBGridEh1.Columns[i].Title.Alignment := taCenter;
end;
procedure TSelectItemFrm.btnTreeClick(Sender: TObject);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -