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

📄 bas_qry_allbomtreeview.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Bas_Qry_AllBomTreeview;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Panel, ActnList, Db, AdODB, ExtCtrls, ComCtrls, ToolWin, StdCtrls,
  jpeg;

Type
  TFrm_Bas_Qry_AllBomTreeview = Class(TFrm_Base_Panel)
    Treeview: TTreeview;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    AdoQry_Main: TAdoQuery;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    procedure TreeviewClick(Sender: TObject);
    procedure TreeviewEnter(Sender: TObject);
    procedure TreeviewKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TreeviewExpanded(Sender: TObject; Node: TTreeNode);
  private
    { Private declarations }
    function HaveSlave(r_Code:string):boolean;
    procedure InitTreeview;
    procedure Expand(node:TtreeNode);
    procedure ExpandNext(aNode:TtreeNode;MasterCode:string);
    procedure SetMasterPnl(ItemCode:string);
    procedure SetSlavePnl(ItemCode:string);
    procedure clearLabel;
  public
    { Public declarations }
    procedure InitForm(AdoConnection:TAdoConnection);
    //function haveslave(r_Code:string):boolean;
  end;

var
  Frm_Bas_Qry_AllBomTreeview: TFrm_Bas_Qry_AllBomTreeview;

implementation

{$R *.DFM}

{ TFrm_Base_BomTreeview }

procedure TFrm_Bas_Qry_AllBomTreeview.expandnext(aNode: Ttreenode;
  MasterCode: string);
var
  Mynode:Ttreenode;
  Icstring:string;
begin
  with AdoQry_Main do
  begin
    Close;
    if MasterCode<>'' then
    begin
      sql.clear;
      sql.Add('select Item.ItemCode,'+
          ' Item.ItemName '+
          ' from Bom left join (select ItemCode,ItemName from Item where ItemUsable=1) Item '+
          ' on Bom.ItemCode=Item.ItemCode '+
          'where Bom.ite_ItemCode='''+MasterCode+'''');
    end
    else
    begin
      sql.clear;
      sql.Add('select Item.ItemCode,'+
          ' Item.ItemName '+
          ' from Bom left join (select ItemCode,ItemName from Item where ItemUsable=1) Item '+
          ' on Bom.ItemCode=Item.ItemCode '+
          'where Bom.ite_ItemCode is null');
      end;
      open;
      while not eof do
      begin
        IcString:=fieldbyname('ItemCode').asstring+' '+fieldbyname('ItemName').asstring;
        MyNode:=Treeview.Items.Addchild(aNode,IcString);
        IcString:=fieldbyname('ItemCode').asstring;
        if HaveSlave(Icstring) then
          Treeview.Items.Addchild(MyNode,'');
        next;
      end;
  end;
end;

procedure TFrm_Bas_Qry_AllBomTreeview.initform(AdoConnection: TAdoConnection);
begin
  SetDBConnect(AdoConnection);
  AdoQry_Main.Connection:=AdoConnection;
  InitTreeview;
  clearLabel;
end;

procedure TFrm_Bas_Qry_AllBomTreeview.InitTreeview;
var
  LocalNode:TtreeNode;
  LocalString:string;
  T_Sql:string;

begin
  Screen.Cursor :=crSQLwait;
  T_Sql:='';
  LocalNode:=nil;
  LocalString:='';
  ExpandNext(LocalNode,LocalString);
  Screen.Cursor :=crDefault	;
end;

procedure TFrm_Bas_Qry_AllBomTreeview.SetMasterPnl(ItemCode: string);
begin
  if ItemCode='' then
  begin
    Label2.Caption:='';
    Label4.Caption:='';
    Label6.Caption:='';
  end
  else
  begin
    with AdoQry_Tmp do
    begin
      Close;
      sql.clear;
      sql.Add('select Item.ItemCode,'+
          ' Item.ItemName, '+
          ' Uom.UomName '+
          'from Item left join Uom '+
          ' on Item.UomCode=Uom.UomCode '+
          'where Item.ItemCode='''+ItemCode+'''');
      open;
      label2.Caption:=fieldbyname('ItemCode').asstring;
      label4.Caption:=fieldbyname('ItemName').asstring;
      label6.Caption:=fieldbyname('UomName').asstring;
    end;
  end;
end;

procedure TFrm_Bas_Qry_AllBomTreeview.setSlavePnl(ItemCode:string);
var
  s:integer;
  str:string;
begin
  with AdoQry_Tmp do
  begin
    Close;
    sql.clear;
    sql.Add('select Item.ItemCode,'+
        ' Item.ItemName, '+
        ' Uom.UomName ,'+
        ' Bom.BomItemType ,'+
        ' Bom.Bomqty ,'+
        ' Bom.BomScrAp_Percent ,'+
        ' Bom.Bomstatus '+
       ' from Item left join Uom '+
        ' on Item.UomCode=Uom.UomCode '+
        ' left join Bom '+
        ' on Item.ItemCode=Bom.ItemCode '+
        ' where Item.ItemCode='''+ItemCode+'''');
    open;
    Label8.Caption:=fieldbyname('ItemCode').asstring;
    Label10.Caption:=fieldbyname('ItemName').asstring;
    Label12.Caption:=fieldbyname('UomName').asstring;
    //Label14.Caption:=fieldbyname('BomItemType').asstring;
    s:=fieldbyname('BomItemType').asinteger;
    case s of
      0: str:='普通物料';
      1: str:='资源';
      2: str:='工具';
      3: str:='虚项';
      4: str:='副产品';
      5: str:='成本';
    end;
    Label14.Caption:=str;
    Label16.Caption:=floattostr(fieldbyname('BomQty').asfloat);
    Label18.Caption:=floattostr(fieldbyname('BomScrAp_Percent').asfloat)+'%';
    s:=fieldbyname('Bomstatus').asinteger;
    case s of
      0: str:='正常';
      1: str:='未生效';
      2: str:='暂定';
      3: str:='暂停使用';
    end;
    Label20.Caption:=str;
end;

end;

procedure TFrm_Bas_Qry_AllBomTreeview.TreeviewClick(Sender: TObject);
var
  SelNode: TTreeNode;
  ParentNode: TTreeNode;
  SlaveCode,MasterCode:string;
begin
  inherited;
  SelNode:=Treeview.selected ;
  if SelNode<>nil then
  begin
    SlaveCode:=Trim(copy(SelNode.text,1,pos(' ',SelNode.text)-1));
    ParentNode :=SelNode.Parent;
    if ParentNode<>nil then
      MasterCode:=Trim(copy(ParentNode.text,1,pos(' ',ParentNode.text)-1))
    else
      MasterCode:='';
    SetMasterPnl(MasterCode);
    SetSlavePnl(SlaveCode);
  end;
end;

function TFrm_Bas_Qry_AllBomTreeview.haveslave( r_Code: string): boolean;
begin
  with AdoQry_Tmp do
   begin
     Close;
     sql.clear;
     sql.Add('select Count(*) as a'+
        ' from Bom '+
        ' where ite_ItemCode='''+r_Code+'''');
     open;
     if fieldbyname('a').Value>0 then
       Result:=True
     else
       Result:=False;
   end;
end;

procedure TFrm_Bas_Qry_AllBomTreeview.Expand(Node: TTreeNode);
var
  S:string;
begin
  if (node.haSchildren) and (node.Item[0].text='') then
  begin
    node.Item[0].Delete;
    s:=Trim(copy(node.text,1,pos(' ',node.text)-1));
    Expandnext(Node,S);
  end;
end;

procedure TFrm_Bas_Qry_AllBomTreeview.clearLabel;
begin
  Label2.Caption:='';
  Label4.Caption:='';
  Label6.Caption:='';
  Label8.Caption:='';
  Label10.Caption:='';
  Label12.Caption:='';
  Label14.Caption:='';
  Label16.Caption:='';
  Label18.Caption:='';
  Label20.Caption:='';
end;
procedure TFrm_Bas_Qry_AllBomTreeview.TreeviewEnter(Sender: TObject);
begin
  inherited;
  Treeview.ReadOnly:=True;
end;

procedure TFrm_Bas_Qry_AllBomTreeview.TreeviewKeyUp(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var
  SelNode: TTreeNode;
  ParentNode: TTreeNode;
  SlaveCode,MasterCode:string;
begin
  inherited;
  SelNode:=Treeview.selected ;
  if SelNode<>nil then
  begin
    SlaveCode:=Trim(copy(SelNode.text,1,pos(' ',SelNode.text)-1));
    ParentNode :=SelNode.Parent;
    if ParentNode<>nil then
      MasterCode:=Trim(copy(ParentNode.text,1,pos(' ',ParentNode.text)-1))
    else
      MasterCode:='';
    SetMasterPnl(MasterCode);
    SetSlavePnl(SlaveCode);
  end;
end;


procedure TFrm_Bas_Qry_AllBomTreeview.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  Action:=CaFree;
end;

procedure TFrm_Bas_Qry_AllBomTreeview.TreeviewExpanded(Sender: TObject;
  Node: TTreeNode);
begin
  inherited;
  Expand(Node);
end;

end.

⌨️ 快捷键说明

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