394 lines
10 KiB
ObjectPascal
394 lines
10 KiB
ObjectPascal
unit U_PbProductHelp;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, ComCtrls, ImgList, ToolWin,
|
||
StdCtrls, cxControls, cxPC,StrUtils, cxStyles, cxCustomData, cxGraphics,
|
||
cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridLevel,
|
||
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
|
||
cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu,
|
||
cxSplitter;
|
||
|
||
type
|
||
PMyRec = ^TMyRec;
|
||
TMyRec = record
|
||
wbcode: string;
|
||
Tvtem_str: string;
|
||
end;
|
||
type
|
||
TfrmPbProductHelp = class(TForm)
|
||
Panel1: TPanel;
|
||
Label1: TLabel;
|
||
ImageList24: TImageList;
|
||
DataSource1: TDataSource;
|
||
ADOQueryTmp: TADOQuery;
|
||
ADOQueryHelp: TADOQuery;
|
||
ToolBar2: TToolBar;
|
||
ToolButton1: TToolButton;
|
||
ToolButton2: TToolButton;
|
||
cxTabControl1: TcxTabControl;
|
||
Edit2: TEdit;
|
||
cxGrid1: TcxGrid;
|
||
tv1: TcxGridDBTableView;
|
||
tv1p_Code: TcxGridDBColumn;
|
||
tv1P_chnName: TcxGridDBColumn;
|
||
tv1P_engName: TcxGridDBColumn;
|
||
tv1P_spec: TcxGridDBColumn;
|
||
tv1P_gram: TcxGridDBColumn;
|
||
tv1P_Breadth: TcxGridDBColumn;
|
||
tv1P_upBreadth: TcxGridDBColumn;
|
||
tv1P_typeName: TcxGridDBColumn;
|
||
cxGridLevel1: TcxGridLevel;
|
||
tv1Quantity: TcxGridDBColumn;
|
||
tv1P_Breadthp: TcxGridDBColumn;
|
||
tv1P_upBreadthp: TcxGridDBColumn;
|
||
tv1rollUnit: TcxGridDBColumn;
|
||
tv1RollNum: TcxGridDBColumn;
|
||
cxGridPopupMenu1: TcxGridPopupMenu;
|
||
TreeView1: TTreeView;
|
||
cxSplitter1: TcxSplitter;
|
||
ADOQueryChild: TADOQuery;
|
||
AD_Rhl_Fllb: TADODataSet;
|
||
ADOConnection1: TADOConnection;
|
||
Label2: TLabel;
|
||
edt_spec: TEdit;
|
||
tv1store: TcxGridDBColumn;
|
||
cxStyleRepository1: TcxStyleRepository;
|
||
cxStyle1: TcxStyle;
|
||
cxStyle2: TcxStyle;
|
||
cxStyle_gridRow: TcxStyle;
|
||
cxStyle_gridFoot: TcxStyle;
|
||
cxStyle_gridHead: TcxStyle;
|
||
cxStyle_gridGroupBox: TcxStyle;
|
||
cxStyle_yellow: TcxStyle;
|
||
cxStyle_Red: TcxStyle;
|
||
cxStyle_fontBlack: TcxStyle;
|
||
cxStyle_clFuchsia: TcxStyle;
|
||
cxStyle_fontclPurple: TcxStyle;
|
||
cxStyle_fontclGreen: TcxStyle;
|
||
cxStyle_fontclBlue: TcxStyle;
|
||
tv1Packs: TcxGridDBColumn;
|
||
tv1packUnit: TcxGridDBColumn;
|
||
tv1UnitName: TcxGridDBColumn;
|
||
tv1Column1: TcxGridDBColumn;
|
||
procedure BtnOkClick(Sender: TObject);
|
||
procedure BtnCancelClick(Sender: TObject);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure FormShow(Sender: TObject);
|
||
procedure cxTabControl1Change(Sender: TObject);
|
||
procedure tv1DblClick(Sender: TObject);
|
||
procedure TreeView1Click(Sender: TObject);
|
||
procedure Edit2Change(Sender: TObject);
|
||
private
|
||
|
||
fClassType:string;
|
||
LoadFlag:boolean;
|
||
SortID: Integer;
|
||
SortCaption, SortField, SortOrder: String;
|
||
procedure DoQuery();
|
||
procedure Dofilter();
|
||
procedure InitTree();
|
||
procedure AddChildNode(parentNode:TtreeNode;mNo:string);
|
||
public
|
||
fCustomNo:string;
|
||
fSysCode:string;
|
||
fPbCtrl:integer;
|
||
fBaseNode:integer;
|
||
end;
|
||
|
||
var
|
||
frmPbProductHelp: TfrmPbProductHelp;
|
||
|
||
implementation
|
||
uses
|
||
U_global,U_cxGridSet;
|
||
{$R *.dfm}
|
||
|
||
procedure TfrmPbProductHelp.BtnOkClick(Sender: TObject);
|
||
begin
|
||
if ADOQueryHelp.IsEmpty then exit;
|
||
ModalResult := 1;
|
||
end;
|
||
|
||
procedure TfrmPbProductHelp.BtnCancelClick(Sender: TObject);
|
||
begin
|
||
if trim(self.Caption)='' then
|
||
WriteCxGrid(trim(self.Name),tv1,'<27><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>')
|
||
else
|
||
WriteCxGrid(trim(self.Caption),tv1,'<27><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||
ModalResult := -1;
|
||
end;
|
||
|
||
///////////////////////////////////////////
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
///////////////////////////////////////////
|
||
procedure TfrmPbProductHelp.DoQuery();
|
||
var
|
||
mstore:string;
|
||
begin
|
||
//<2F><><EFBFBD><EFBFBD>
|
||
try
|
||
LoadFlag:=false;
|
||
if trim(fSysCode)='RZ' then
|
||
mstore:= 'JRPC'
|
||
else if trim(fSysCode)='ZR' then
|
||
mstore:= 'GRPC'
|
||
else if (trim(fSysCode)='YH') or (trim(fSysCode)='YR') then
|
||
mstore:= 'YHPC';
|
||
|
||
ADOQueryHelp.DisableControls ;
|
||
with ADOQueryHelp Do
|
||
Begin
|
||
close;
|
||
filtered:=false;
|
||
SQL.Clear;
|
||
sql.Add('exec P_Calc_PBKC_CHANGE');
|
||
sql.Add(quotedStr(fSysCode));
|
||
sql.Add(','+QuotedStr(mstore)); //<2F>ֿ<EFBFBD>
|
||
sql.Add(','+QuotedStr(fCustomNo));
|
||
sql.Add(','+intTostr(fPbCtrl));
|
||
sql.Add(','+intTostr(fBaseNode));
|
||
sql.Add(','+quotedStr(fClassType));
|
||
Open;
|
||
end;
|
||
finally
|
||
LoadFlag:=true;
|
||
ADOQueryHelp.EnableControls ;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrmPbProductHelp.FormCreate(Sender: TObject);
|
||
begin
|
||
cxgrid1.Align:=alClient;
|
||
with ADOConnection1 do
|
||
begin
|
||
Connected:=false;
|
||
ConnectionString:=gConString;
|
||
Connected:=true;
|
||
end;
|
||
InitTree();
|
||
end;
|
||
|
||
procedure TfrmPbProductHelp.FormShow(Sender: TObject);
|
||
begin
|
||
if fpbCtrl>0 then tv1store.Visible :=true
|
||
else tv1store.Visible :=false;
|
||
if trim(self.Caption)='' then
|
||
ReadCxGrid(trim(self.Name),tv1,'<27><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>')
|
||
else
|
||
ReadCxGrid(trim(self.Caption),tv1,'<27><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||
DoQuery();
|
||
Edit2.SetFocus;
|
||
end;
|
||
|
||
procedure TfrmPbProductHelp.cxTabControl1Change(Sender: TObject);
|
||
begin
|
||
DoQuery();
|
||
end;
|
||
|
||
procedure TfrmPbProductHelp.tv1DblClick(Sender: TObject);
|
||
begin
|
||
if ADOQueryHelp.IsEmpty then exit;
|
||
ModalResult := 1;
|
||
end;
|
||
/////////////////////////////////////////////////////////
|
||
//
|
||
/////////////////////////////////////////////////////////
|
||
procedure TfrmPbProductHelp.Dofilter();
|
||
var
|
||
filterStr:string;
|
||
begin
|
||
filterStr:='';
|
||
if trim(edit2.Text)<>'' then
|
||
begin
|
||
filterStr:=' and (P_code like '+quotedStr('%'+trim(edit2.text)+'%')
|
||
+' or P_chnName like '+quotedStr('%'+trim(edit2.text)+'%')
|
||
+' or P_spec like '+quotedStr('%'+trim(edit2.text)+'%')
|
||
+')';
|
||
end;
|
||
////////////////////////
|
||
if trim(edt_spec.Text)<>'' then
|
||
begin
|
||
filterStr:=' or P_spec like '+quotedStr('%'+trim(edt_spec.text)+'%');
|
||
end;
|
||
try
|
||
|
||
ADOQueryHelp.DisableControls ;
|
||
if trim(filterStr)='' then
|
||
begin
|
||
ADOQueryHelp.Filtered:=false;
|
||
ADOQueryHelp.EnableControls;
|
||
exit;
|
||
end;
|
||
filterStr:=trim(RightBStr(filterStr,length(filterStr)-4));
|
||
with ADOQueryHelp do
|
||
begin
|
||
filtered:=false;
|
||
filter:=filterStr;
|
||
filtered:=true;
|
||
end;
|
||
finally
|
||
ADOQueryHelp.EnableControls;
|
||
end;
|
||
|
||
end;
|
||
////////////////////////////////////////////////////////
|
||
procedure TfrmPbProductHelp.InitTree();
|
||
var
|
||
MyRecPtr: PMyRec;
|
||
tmpstr :string;
|
||
i:integer;
|
||
mNode,RootNode :TTreeNode;
|
||
array_Node:array of TTreeNOde;
|
||
begin
|
||
try
|
||
New(MyRecPtr);
|
||
MyRecPtr^.wbcode := 'ALL';
|
||
MyRecPtr^.Tvtem_str := 'ȫ<><C8AB><EFBFBD><EFBFBD>Ʒ';
|
||
//treetop := 'ALL';
|
||
with TreeView1 do
|
||
begin
|
||
Items.Clear;
|
||
RootNode := Items.AddObject(nil, MyRecPtr^.Tvtem_str, MyRecPtr);
|
||
RootNode.ImageIndex := 1;
|
||
RootNode.SelectedIndex := 2;
|
||
end;
|
||
|
||
with TreeView1,AD_Rhl_Fllb do
|
||
begin
|
||
tmpstr := 'select code,name from xc_code where flag = ''CATLOGTYPE'' and valid = ''Y''';
|
||
tmpstr := tmpstr +' order by code';
|
||
active := false;
|
||
CommandText := tmpstr;
|
||
active := true;
|
||
if recordcount = 0 then
|
||
begin
|
||
application.MessageBox('<27>Բ<EFBFBD><D4B2><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:CATLOGTYPE!','<27><>ʾ<EFBFBD><CABE>Ϣ',0);
|
||
exit;
|
||
end;
|
||
setLength(array_Node, RecordCount);
|
||
i:=0;
|
||
while not Eof do
|
||
begin
|
||
New(MyRecPtr);
|
||
MyRecPtr^.wbcode := trim(fieldbyname('code').Asstring);
|
||
MyRecPtr^.Tvtem_str := trim(fieldbyname('name').Asstring)
|
||
+'('+trim(fieldbyname('code').Asstring)+')';
|
||
mNode := Items.AddChildObject(RootNode, MyRecPtr^.Tvtem_str, MyRecPtr);
|
||
mNode.ImageIndex := 1;
|
||
mNode.SelectedIndex := 2;
|
||
array_Node[i]:=mNode;
|
||
INC(i);
|
||
Next;
|
||
end;
|
||
Close;
|
||
end;
|
||
///////////////////////////////////////
|
||
with ADOQueryChild do
|
||
begin
|
||
close;
|
||
filtered:=false;
|
||
sql.Clear ;
|
||
sql.Add('select * from xc_code');
|
||
sql.Add('where valid=''Y''');
|
||
Open;
|
||
end;
|
||
for i:=0 to Length(array_Node)-1 do
|
||
begin
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䷽
|
||
AddChildNode(array_Node[i],PMyRec(array_Node[i].Data)^.wbcode);
|
||
end;
|
||
TreeView1.Items[0].Selected := True;
|
||
TreeView1.Items[0].Expanded:=true;
|
||
except
|
||
end;
|
||
end;
|
||
//////////////////////////////////////////////////////////////////
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
|
||
//////////////////////////////////////////////////////////////////
|
||
procedure TfrmPbProductHelp.AddChildNode(parentNode:TtreeNode;mNo:string);
|
||
var
|
||
NodeInfo: PMyRec;
|
||
mNode:TtreeNode;
|
||
i:integer;
|
||
array_Node:array of TTreeNOde;
|
||
begin
|
||
with ADOQueryChild do
|
||
begin
|
||
|
||
filtered:=false;
|
||
filter:='flag ='''+PMyRec(parentNode.Data)^.wbcode+'''';
|
||
filtered:=true;
|
||
Open;
|
||
|
||
if RecordCount<=0 then exit;
|
||
//////////////////////
|
||
setLength(array_Node, RecordCount);
|
||
i:=0;
|
||
while not Eof do
|
||
begin
|
||
with treeView1 do
|
||
begin
|
||
New(NodeInfo);
|
||
|
||
//<2F><><EFBFBD><EFBFBD>
|
||
NodeInfo^.wbcode:=trim(fieldByName('code').AsString);
|
||
//<2F><><EFBFBD><EFBFBD>
|
||
NodeInfo^.Tvtem_str :=fieldByName('Name').AsString
|
||
+'('+trim(fieldByName('code').AsString)+')';
|
||
mNode:=Items.AddChildObject(parentNode, NodeInfo^.Tvtem_str, NodeInfo);
|
||
array_Node[i]:=mNode;
|
||
INC(i);
|
||
end;
|
||
Next;
|
||
end;
|
||
|
||
for i:=0 to Length(array_Node)-1 do
|
||
begin
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
AddChildNode(array_Node[i],PMyRec(array_Node[i].Data)^.wbcode);
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TfrmPbProductHelp.TreeView1Click(Sender: TObject);
|
||
var
|
||
NodeXX:TTreeNode;
|
||
begin
|
||
if not LoadFlag then exit;
|
||
NodeXX := TreeView1.Selected;
|
||
fClassType := trim(PMyRec(NodeXX.Data).wbcode);
|
||
fBaseNode:=0;
|
||
if (fClassType <> 'ALL') then //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>Ʒ
|
||
begin
|
||
with ADOQueryTmp do
|
||
begin
|
||
Close;
|
||
SQL.Clear;
|
||
SQL.Add('select flag from xc_code where code = '''+fClassType+''' and valid = ''Y'' ' );
|
||
Open;
|
||
if trim(fieldbyname('flag').asstring) = 'CATLOGTYPE' then //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
|
||
begin
|
||
fBaseNode:=1;
|
||
end
|
||
else //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
|
||
begin
|
||
fBaseNode:=2;
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
fClassType:='';
|
||
DoQuery();
|
||
end;
|
||
|
||
procedure TfrmPbProductHelp.Edit2Change(Sender: TObject);
|
||
begin
|
||
Dofilter();
|
||
end;
|
||
|
||
end.
|