bas_itemclass_qry.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 217 行

PAS
217
字号

unit Bas_ItemClass_Qry;

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

Type
  TFrm_Bas_ItemClass_Qry = Class(TFrm_Base_Panel)
    Treeview: TTreeview;
    AdoQry_Main: TAdoQuery;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    Action4: TAction;
    Panel1: TPanel;
    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);
  public
    { Public declarations }
    procedure InitForm(AdoConnection:TAdoConnection);
    //function haveslave(r_Code:string):boolean;
  end;

var
  Frm_Bas_ItemClass_Qry: TFrm_Bas_ItemClass_Qry;

implementation

uses Sys_Global;

{$R *.DFM}

{ TFrm_Base_BomTreeview }

procedure TFrm_Bas_ItemClass_Qry.expandnext(aNode: Ttreenode;
  MasterCode: string);
procedure expandnext1(node:ttreenode;s:string);
var
  Mynode:Ttreenode;
  Icstring:string;
  i:integer;
begin
    i:=0;
    with AdoQry_tmp do
    begin
      Close;
      sql.clear;
      sql.Add('select * '+
              'from ItemClass '+
              'where pClassCode='''+s+''' '+
              'Order by ClassCode ');
      open;
      while not eof do
      begin
        IcString:=fieldbyname('ClassCode').asstring+' '+fieldbyname('ClassName').asstring;
        MyNode:=Treeview.Items.AddChild(Node,IcString);
        next;
      end;
      for i:=0 to node.Count-1 do
      begin
        IcString:=getCode(node.Item[i].Text);
        if HaveSlave(Icstring) then
          expandnext1(node.Item[i],icstring);
      end;
    end;
end;

var
  Mynode:Ttreenode;
  Icstring:string;
  j:integer;
begin
  j:=0;
  try
    Screen.Cursor:=CrSQLWait;
    with AdoQry_Main do
    begin
      Close;
      if MasterCode<>'' then
      begin
        sql.clear;
        sql.Add('select * '+
                'from ItemClass '+
                'where pClassCode='''+MasterCode+''' '+
                'Order by ClassCode ');
      end
      else
      begin
        sql.clear;
        sql.Add('select * '+
                'from ItemClass '+
                'where pClassCode='''+''+''' '+
                'Order by ClassCode ');
      end;
      open;
      while not eof do
      begin
        IcString:=fieldbyname('ClassCode').asstring+' '+fieldbyname('ClassName').asstring;
        MyNode:=Treeview.Items.AddChild(aNode,IcString);
        IcString:=fieldbyname('ClassCode').asstring;
        if HaveSlave(Icstring) then
          expandnext1(mynode,icstring);
        next;
      end;
    end;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

procedure TFrm_Bas_ItemClass_Qry.initform(AdoConnection: TAdoConnection);
begin
  SetDBConnect(AdoConnection);
  AdoQry_Main.Connection:=AdoConnection;
  InitTreeview;
  Treeview.ReadOnly :=True;
  Treeview.FullExpand ;
end;

procedure TFrm_Bas_ItemClass_Qry.InitTreeview;
var
  LocalNode:TtreeNode;
  LocalString:string;
  T_Sql:string;
begin
  T_Sql:='';
  LocalNode:=nil;
  LocalString:='';
  ExpandNext(LocalNode,LocalString);
end;

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

procedure TFrm_Bas_ItemClass_Qry.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_ItemClass_Qry.TreeviewEnter(Sender: TObject);
begin
  inherited;
  Treeview.ReadOnly:=True;
end;

procedure TFrm_Bas_ItemClass_Qry.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:=Trim(Edt_ItemCode.text);

  end;
end;


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

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


end.

⌨️ 快捷键说明

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