⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectitemform.pas

📁 实达企业在线EOL源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -