pasbom.pas

来自「产品信息系统!关于产品基础信息的系统!功能强大!」· PAS 代码 · 共 264 行

PAS
264
字号
unit pasBom;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BaseDefine, wwDialog, wwidlg, DB, ADODB, ActnList, ComCtrls,
  ToolWin, Grids, DBGridEh, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBTL,
  StdCtrls, Mask, DBCtrls, ExtCtrls, Wwlocate;

type
  TfrmBom = class(TfrmBaseDefine)
    dxDBTreeList1: TdxDBTreeList;
    dxDBTreeList1fID: TdxDBTreeListMaskColumn;
    dxDBTreeList1fParentID: TdxDBTreeListMaskColumn;
    dxDBTreeList1fParentCode: TdxDBTreeListColumn;
    dxDBTreeList1fCode: TdxDBTreeListColumn;
    dxDBTreeList1fName: TdxDBTreeListColumn;
    dxDBTreeList1fNotes: TdxDBTreeListColumn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBMemo1: TDBMemo;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBEdit5: TDBEdit;
    dxDBTreeList1Column7: TdxDBTreeListColumn;
    dxDBTreeList1Column8: TdxDBTreeListColumn;
    DBEdit6: TDBEdit;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label8: TLabel;
    wwLocateDialog1: TwwLocateDialog;
    QBaseInfoXh: TStringField;
    QBaseInfoName: TStringField;
    QBaseInfoSizes: TStringField;
    QBaseInfoRemark: TStringField;
    QBaseInfobomId: TBCDField;
    QBaseInfoFid: TBCDField;
    QBaseInfoFxh: TStringField;
    QBaseInfoFsizes: TStringField;
    dxDBTreeList2: TdxDBTreeList;
    Qf_getChild: TADOQuery;
    DSf_getChild: TDataSource;
    Splitter1: TSplitter;
    Qf_getChildxh: TStringField;
    Qf_getChildsizes: TStringField;
    Qf_getChildlevel: TIntegerField;
    Qf_getChildret: TStringField;
    Qf_getChildmyret: TStringField;
    dxDBTreeList2xh: TdxDBTreeListMaskColumn;
    dxDBTreeList2sizes: TdxDBTreeListMaskColumn;
    dxDBTreeList2level: TdxDBTreeListMaskColumn;
    dxDBTreeList2ret: TdxDBTreeListMaskColumn;
    dxDBTreeList2myret: TdxDBTreeListMaskColumn;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure QBaseInfoNewRecord(DataSet: TDataSet);
    procedure QBaseInfoAfterPost(DataSet: TDataSet);
    procedure QBaseInfoAfterCancel(DataSet: TDataSet);
    procedure acRefreshExecute(Sender: TObject);
    procedure QBaseInfoBeforeEdit(DataSet: TDataSet);
    procedure QBaseInfoAfterDelete(DataSet: TDataSet);
    procedure dsBaseInfoStateChange(Sender: TObject);
    procedure dxDBTreeList1ChangeNode(Sender: TObject; OldNode,
      Node: TdxTreeListNode);
    procedure acFindExecute(Sender: TObject);
    procedure dsBaseInfoDataChange(Sender: TObject; Field: TField);
    procedure Button1Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    iParentID,iSelfID:Integer;
    sParentCode,sSelfCode,sParentsizes,ssizes:String;
  public
    { Public declarations }
  end;

  Tcomboboxinfo=class(tobject)
  public
     fCode,fName:string;
  end;

var
  frmBom: TfrmBom;

implementation

{$R *.dfm}
uses DataModule,select;

procedure TfrmBom.FormDestroy(Sender: TObject);
begin
  frmBom:=nil;
end;

procedure TfrmBom.FormCreate(Sender: TObject);
begin
  inherited;
  tbtNew.Visible := False;
  Button2.Visible := bCanNew;
  Button3.Visible := bCanNew;
  Button4.Visible := bCanNew;
end;


procedure TfrmBom.Button2Click(Sender: TObject);
begin
  QBaseInfo.Append ;
  QBaseInfo.FieldByName('fID').AsInteger :=0;
  QBaseInfo.fieldbyname('fxh').asString :='';
  QBaseInfo.fieldbyname('fsizes').asString :='';
  QBaseInfo.Post;
  QBaseInfo.Edit;
  DBEdit3.SetFocus;
end;

procedure TfrmBom.Button3Click(Sender: TObject);
begin
  QBaseInfo.Append ;
  QBaseInfo.FieldByName('fID').AsInteger :=iParentID;
  QBaseInfo.fieldbyname('fxh').asString :=sParentCode;
  QBaseInfo.fieldbyname('fsizes').asString :=sParentsizes;
  QBaseInfo.Post;
  QBaseInfo.Edit;
  DBEdit3.SetFocus;
end;

procedure TfrmBom.Button4Click(Sender: TObject);
begin
  iParentId:=QBaseInfo.fieldbyname('fID').asInteger;
  iSelfID:=QBaseInfo.fieldbyname('bomID').asInteger;
  sParentCode:= QBaseInfo.fieldbyname('fxh').asString;
  sSelfCode:= QBaseInfo.fieldbyname('xh').asString;
  sParentsizes:= QBaseInfo.fieldbyname('fsizes').asString;
  ssizes:= QBaseInfo.fieldbyname('sizes').asString;
  QBaseInfo.Append ;
  QBaseInfo.FieldByName('fID').AsInteger :=iSelfID;
  QBaseInfo.fieldbyname('fxh').asString :=sSelfCode;
  QBaseInfo.fieldbyname('fsizes').asString :=ssizes;
  QBaseInfo.Post;
  QBaseInfo.Edit;
  DBEdit3.SetFocus;
end;

procedure TfrmBom.QBaseInfoNewRecord(DataSet: TDataSet);
begin
  CanSave:=True;
  CanCancel:=True;
end;

procedure TfrmBom.QBaseInfoAfterPost(DataSet: TDataSet);
begin
  inherited;
  CanSave:=False;
  CanCancel:=False;
end;

procedure TfrmBom.QBaseInfoAfterCancel(DataSet: TDataSet);
begin
  CanSave:=False;
  CanCancel:=False;
end;

procedure TfrmBom.acRefreshExecute(Sender: TObject);
begin
  //inherited;
  QBaseInfo.Requery();
end;

procedure TfrmBom.QBaseInfoBeforeEdit(DataSet: TDataSet);
begin
  //inherited;
  CanSave:=True;
  CanCancel:=True;
end;

procedure TfrmBom.QBaseInfoAfterDelete(DataSet: TDataSet);
begin
  if dmClient.adocnequip_manage.InTransaction then
      dmClient.adocnequip_manage.CommitTrans;
  CanSave:=False;
  CanCancel:=False;
  self.dsBaseInfoStateChange(nil);
end;

procedure TfrmBom.dsBaseInfoStateChange(Sender: TObject);
var
  i:Integer;
begin
  inherited;
  with PageControl1.ActivePage do
    for i := 0 to ControlCount - 1 do
      if Controls[i] is TDBEdit then
        (Controls[i] as TDBEdit).ReadOnly := CanEdit
      else if Controls[i] is TDBMemo then
        (Controls[i] as TDBMemo).ReadOnly := CanEdit;
  
end;

procedure TfrmBom.dxDBTreeList1ChangeNode(Sender: TObject; OldNode,
  Node: TdxTreeListNode);
begin
  inherited;
  if Not (QBaseInfo.State in [dsInsert,dsEdit]) then
  begin
    iParentId:=QBaseInfo.fieldbyname('fID').asInteger;
    iSelfID:=QBaseInfo.fieldbyname('bomID').asInteger;
    sParentCode:= QBaseInfo.fieldbyname('fxh').asString;
    sSelfCode:= QBaseInfo.fieldbyname('xh').asString;
    sParentsizes:= QBaseInfo.fieldbyname('fsizes').asString;
    ssizes:= QBaseInfo.fieldbyname('sizes').asString;
  end;
end;

procedure TfrmBom.acFindExecute(Sender: TObject);
begin
  inherited;
  wwLocateDialog1.Execute;
end;

procedure TfrmBom.dsBaseInfoDataChange(Sender: TObject; Field: TField);
begin
//  inherited;
  dsBaseInfoStateChange(nil);
end;

procedure TfrmBom.Button1Click(Sender: TObject);
begin
  inherited;
  with Qf_getChild do
  begin
    Close;
    sql.Clear;
    SQL.Add('select xh,sizes,level,ret,ret+xh+sizes myret from  dbo.f_getChild('''+QBaseInfo.fieldbyname('xh').asString+''','''+QBaseInfo.fieldbyname('sizes').asString+''')  ');
    Open;
  end;
end;

procedure TfrmBom.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if   (Shift>=[ssctrl])   and   (Key=70)   then
    wwLocateDialog1.Execute;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?