D7myYunxiang/Z99Dependency/ThreeFun/helpForm/U_PbProductHelp.pas
DESKTOP-E401PHE\Administrator 914ef198d5 Apply new .gitignore
2025-07-19 16:54:23 +08:00

394 lines
10 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.