📄 bas_qry_allbomtreeview.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 + -