416 lines
11 KiB
ObjectPascal
416 lines
11 KiB
ObjectPascal
![]() |
unit U_RhlHelp;
|
|||
|
|
|||
|
interface
|
|||
|
|
|||
|
uses
|
|||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|||
|
Dialogs, ComCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
|
|||
|
cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView,
|
|||
|
cxGridTableView, cxGridDBTableView, cxClasses, cxControls,
|
|||
|
cxGridCustomView, cxGrid, ADODB, ToolWin, Grids, DBGrids, StdCtrls,
|
|||
|
ExtCtrls, DBClient, ImgList;
|
|||
|
type
|
|||
|
PMyRec = ^TMyRec;
|
|||
|
TMyRec = record
|
|||
|
wbcode: string;
|
|||
|
Tvtem_str: string;
|
|||
|
end;
|
|||
|
type
|
|||
|
TfrmRhlHelp = class(TForm)
|
|||
|
TreeView1: TTreeView;
|
|||
|
cxGrid1: TcxGrid;
|
|||
|
tv1: TcxGridDBTableView;
|
|||
|
tv1dyeCode: TcxGridDBColumn;
|
|||
|
tv1chnName: TcxGridDBColumn;
|
|||
|
DBGrid1Level1: TcxGridLevel;
|
|||
|
tv1DyePropertyName: TcxGridDBColumn;
|
|||
|
ADOQueryTmp: TADOQuery;
|
|||
|
ADOConnection1: TADOConnection;
|
|||
|
Splitter1: TSplitter;
|
|||
|
Panel2: TPanel;
|
|||
|
Panel1: TPanel;
|
|||
|
Label1: TLabel;
|
|||
|
Label2: TLabel;
|
|||
|
Label4: TLabel;
|
|||
|
Edt_code: TEdit;
|
|||
|
Edt_Name: TEdit;
|
|||
|
Panel4: TPanel;
|
|||
|
Panel6: TPanel;
|
|||
|
Dg_Sub: TDBGrid;
|
|||
|
ToolBar1: TToolBar;
|
|||
|
BtnFind: TToolButton;
|
|||
|
BtnOk: TToolButton;
|
|||
|
BtnClose: TToolButton;
|
|||
|
ADOQueryChild: TADOQuery;
|
|||
|
ADOQueryRhl: TADOQuery;
|
|||
|
DataSource1: TDataSource;
|
|||
|
CDS_Sel: TClientDataSet;
|
|||
|
DataSource2: TDataSource;
|
|||
|
CDS_SelDyeCode: TStringField;
|
|||
|
CDS_SelDyeName: TStringField;
|
|||
|
CDS_SelDyeProperty: TStringField;
|
|||
|
CDS_SelDyePropertyName: TStringField;
|
|||
|
CDS_SelDyeUnit: TStringField;
|
|||
|
CDS_SelDyeUnitName: TStringField;
|
|||
|
CDS_SelRlUnit: TStringField;
|
|||
|
CDS_SelRlUnitName: TStringField;
|
|||
|
CDS_SelDyeCost: TFloatField;
|
|||
|
CDS_SelModel: TStringField;
|
|||
|
ImageList24: TImageList;
|
|||
|
tv1zjm: TcxGridDBColumn;
|
|||
|
CDS_SeldyeCraft: TStringField;
|
|||
|
tv1dyeCraft: TcxGridDBColumn;
|
|||
|
procedure FormCreate(Sender: TObject);
|
|||
|
procedure BtnCloseClick(Sender: TObject);
|
|||
|
procedure TreeView1Click(Sender: TObject);
|
|||
|
procedure tv1DblClick(Sender: TObject);
|
|||
|
procedure BtnOkClick(Sender: TObject);
|
|||
|
procedure BtnFindClick(Sender: TObject);
|
|||
|
procedure Edt_codeChange(Sender: TObject);
|
|||
|
procedure Edt_NameChange(Sender: TObject);
|
|||
|
procedure Dg_SubDblClick(Sender: TObject);
|
|||
|
procedure FormShow(Sender: TObject);
|
|||
|
private
|
|||
|
procedure InitTree();
|
|||
|
procedure AddChildNode(parentNode:TtreeNode;mNo:string);
|
|||
|
procedure InitGrid();
|
|||
|
procedure DoQuery();
|
|||
|
procedure DoFilter();
|
|||
|
public
|
|||
|
fRlType:string;
|
|||
|
end;
|
|||
|
|
|||
|
var
|
|||
|
frmRhlHelp: TfrmRhlHelp;
|
|||
|
|
|||
|
implementation
|
|||
|
uses
|
|||
|
U_global;
|
|||
|
{$R *.dfm}
|
|||
|
|
|||
|
procedure TfrmRhlHelp.InitTree();
|
|||
|
var
|
|||
|
MyRecPtr: PMyRec;
|
|||
|
tmpstr :string;
|
|||
|
NodeXX,CNode :TTreeNode;
|
|||
|
array_Node:array of TTreeNOde;
|
|||
|
i:integer;
|
|||
|
begin
|
|||
|
try
|
|||
|
New(MyRecPtr);
|
|||
|
MyRecPtr^.wbcode := 'ALL';
|
|||
|
MyRecPtr^.Tvtem_str := 'ȫ<><C8AB>';
|
|||
|
with TreeView1 do
|
|||
|
begin
|
|||
|
Items.Clear;
|
|||
|
CNode := Items.AddObject(nil, MyRecPtr^.Tvtem_str, MyRecPtr);
|
|||
|
CNode.ImageIndex := 1;
|
|||
|
CNode.SelectedIndex := 2;
|
|||
|
end;
|
|||
|
|
|||
|
with TreeView1 do
|
|||
|
begin
|
|||
|
Items.Clear;
|
|||
|
CNode := Items.AddObject(nil, MyRecPtr^.Tvtem_str, MyRecPtr);
|
|||
|
CNode.ImageIndex := 1;
|
|||
|
CNode.SelectedIndex := 2;
|
|||
|
end;
|
|||
|
with TreeView1,ADOQueryTmp do
|
|||
|
begin
|
|||
|
close;
|
|||
|
sql.clear;
|
|||
|
sql.Add('select code,name from xc_code');
|
|||
|
sql.Add('where flag = ''DYETYPE'' AND valid = ''Y''');
|
|||
|
if trim(fRlType)<>'' then
|
|||
|
sql.Add('and name='+quotedStr(fRlType));
|
|||
|
sql.Add('order by code');
|
|||
|
Open;
|
|||
|
if recordcount = 0 then
|
|||
|
begin
|
|||
|
application.MessageBox('<27>Բ<EFBFBD><D4B2><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>ϻ<EFBFBD><CFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:DYETYPE!','<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);
|
|||
|
NodeXX := Items.AddChildObject(TreeView1.Items[0], MyRecPtr^.Tvtem_str, MyRecPtr);
|
|||
|
NodeXX.ImageIndex := 1;
|
|||
|
NodeXX.SelectedIndex := 2;
|
|||
|
array_Node[i]:=NodeXX;
|
|||
|
INC(i);
|
|||
|
next;
|
|||
|
end;
|
|||
|
Close;
|
|||
|
end;
|
|||
|
|
|||
|
///////////////////////////////////////
|
|||
|
with ADOQueryChild do
|
|||
|
begin
|
|||
|
close;
|
|||
|
filtered:=false;
|
|||
|
sql.Clear ;
|
|||
|
sql.Add('select * from xc_code');
|
|||
|
sql.Add('where CLASSFLAG=''DYECLASS'' and 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].Expand(true);
|
|||
|
InitGrid();
|
|||
|
except
|
|||
|
;
|
|||
|
end;
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
procedure TfrmRhlHelp.FormCreate(Sender: TObject);
|
|||
|
begin
|
|||
|
panel2.Align :=alclient;
|
|||
|
CDS_sel.Close;
|
|||
|
CDS_Sel.CreateDataSet;
|
|||
|
with ADOConnection1 do
|
|||
|
begin
|
|||
|
Connected:=false;
|
|||
|
ConnectionString:=gConString;
|
|||
|
Connected:=true;
|
|||
|
end;
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmRhlHelp.BtnCloseClick(Sender: TObject);
|
|||
|
begin
|
|||
|
close;
|
|||
|
end;
|
|||
|
//////////////////////////////////////////////////////////////////
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
|
|||
|
//////////////////////////////////////////////////////////////////
|
|||
|
procedure TfrmRhlHelp.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 TfrmRhlHelp.InitGrid();
|
|||
|
var
|
|||
|
NodeXX:TTreeNode;
|
|||
|
mCode:string;
|
|||
|
begin
|
|||
|
NodeXX := TreeView1.Selected;
|
|||
|
mCode := trim(PMyRec(NodeXX.Data).wbcode);
|
|||
|
//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>Ʒ
|
|||
|
if (mCode <> 'ALL') then
|
|||
|
begin
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
|
|||
|
if (mCode = 'RL') or (mCode = 'ZJ') then
|
|||
|
begin
|
|||
|
with ADOQueryRhl do
|
|||
|
begin
|
|||
|
Close;
|
|||
|
SQL.Clear;
|
|||
|
filtered:=false;
|
|||
|
//A.dyeCode,A.chnname as dyeName,A.DyePro
|
|||
|
SQL.Add('select * from V_SC_dyeInfo A ' );
|
|||
|
sql.Add('where dyeProperty='''+mCode+'''');
|
|||
|
sql.Add('and dyeValid=''Y''');
|
|||
|
Open;
|
|||
|
end
|
|||
|
end
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
|
|||
|
else
|
|||
|
begin
|
|||
|
with ADOQueryRhl do
|
|||
|
begin
|
|||
|
Close;
|
|||
|
SQL.Clear;
|
|||
|
filtered:=false;
|
|||
|
SQL.Add('select * from V_SC_dyeInfo A ' );
|
|||
|
sql.Add('inner join md_class_type B on A.dyecode = B.datano');
|
|||
|
sql.Add('and A.dyeproperty IN( ''RL'',''ZJ'')');
|
|||
|
sql.Add('and B.typeNo='''+mCode+'''');
|
|||
|
sql.Add('and A.dyeValid=''Y''');
|
|||
|
Open;
|
|||
|
end
|
|||
|
end;
|
|||
|
end
|
|||
|
else
|
|||
|
begin
|
|||
|
with ADOQueryRhl do
|
|||
|
begin
|
|||
|
Close;
|
|||
|
SQL.Clear;
|
|||
|
filtered:=false;
|
|||
|
SQL.Add('select * from V_SC_dyeInfo A ' );
|
|||
|
sql.Add('where dyeValid=''Y''');
|
|||
|
if trim(fRlType)<>'' then
|
|||
|
sql.Add('and dyePropertyName='+quotedStr(fRlType));
|
|||
|
Open;
|
|||
|
end
|
|||
|
end;
|
|||
|
end;
|
|||
|
procedure TfrmRhlHelp.TreeView1Click(Sender: TObject);
|
|||
|
begin
|
|||
|
InitGrid();
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmRhlHelp.tv1DblClick(Sender: TObject);
|
|||
|
begin
|
|||
|
with CDS_Sel do
|
|||
|
begin
|
|||
|
Append;
|
|||
|
fieldByName('dyeCode').value:=trim(ADOQueryRhl.fieldByName('dyeCode').AsString);
|
|||
|
fieldByName('dyeName').value:=trim(ADOQueryRhl.fieldByName('chnName').AsString);
|
|||
|
fieldByName('dyeProperty').value:=trim(ADOQueryRhl.fieldByName('dyeProperty').AsString);
|
|||
|
fieldByName('dyePropertyName').value:=trim(ADOQueryRhl.fieldByName('dyePropertyName').AsString);
|
|||
|
fieldByName('dyeUnit').value:=trim(ADOQueryRhl.fieldByName('dyeUnit').AsString);
|
|||
|
fieldByName('dyeUnitName').value:=trim(ADOQueryRhl.fieldByName('dyeUnitName').AsString);
|
|||
|
fieldByName('RlUnit').value:=trim(ADOQueryRhl.fieldByName('RlUnit').AsString);
|
|||
|
fieldByName('RlUnitName').value:=trim(ADOQueryRhl.fieldByName('RlUnitName').AsString);
|
|||
|
fieldByName('dyeCost').value:=ADOQueryRhl.fieldByName('dyeCost').AsFloat;
|
|||
|
fieldByName('model').value:=trim(ADOQueryRhl.fieldByName('model').AsString);
|
|||
|
fieldByName('dyeCraft').value:=trim(ADOQueryRhl.fieldByName('dyeCraft').AsString);
|
|||
|
Post;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmRhlHelp.BtnOkClick(Sender: TObject);
|
|||
|
begin
|
|||
|
if CDS_sel.IsEmpty then
|
|||
|
ModalResult:=-1
|
|||
|
else
|
|||
|
ModalResult:=1;
|
|||
|
end;
|
|||
|
//////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
//////////////////////////////////////////////////////////////////
|
|||
|
procedure TfrmRhlHelp.DoQuery();
|
|||
|
var
|
|||
|
whereStr:string;
|
|||
|
begin
|
|||
|
if trim(Edt_code.Text)<>'' then
|
|||
|
whereStr:=' and dyeCode like '+quotedStr('%'+trim(Edt_code.Text)+'%');
|
|||
|
if trim(edt_Name.Text)<>'' then
|
|||
|
whereStr:=' and chnName like '+quotedStr('%'+trim(Edt_Name.Text)+'%');
|
|||
|
|
|||
|
try
|
|||
|
ADOQueryRhl.DisableControls ;
|
|||
|
with ADOQueryRhl do
|
|||
|
begin
|
|||
|
Close;
|
|||
|
SQL.Clear;
|
|||
|
filtered:=false;
|
|||
|
SQL.Add('select * from V_SC_dyeInfo A ' );
|
|||
|
sql.Add('where 1=1');
|
|||
|
sql.Add('and dyeValid=''Y''');
|
|||
|
sql.Add(whereStr);
|
|||
|
Open;
|
|||
|
end;
|
|||
|
finally
|
|||
|
ADOQueryRhl.EnableControls;
|
|||
|
end;
|
|||
|
|
|||
|
end;
|
|||
|
//////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
//////////////////////////////////////////////////////////////////
|
|||
|
procedure TfrmRhlHelp.DoFilter();
|
|||
|
var
|
|||
|
whereStr:string;
|
|||
|
begin
|
|||
|
if trim(Edt_code.Text)<>'' then
|
|||
|
whereStr:='dyeCode like '+quotedStr('%'+trim(Edt_code.Text)+'%');
|
|||
|
if trim(edt_Name.Text)<>'' then
|
|||
|
whereStr:='chnName like '+quotedStr('%'+trim(Edt_Name.Text)+'%');
|
|||
|
try
|
|||
|
ADOQueryRhl.DisableControls ;
|
|||
|
with ADOQueryRhl do
|
|||
|
begin
|
|||
|
filtered:=false;
|
|||
|
filter:= whereStr;
|
|||
|
filtered:=true;
|
|||
|
end;
|
|||
|
finally
|
|||
|
ADOQueryRhl.EnableControls;
|
|||
|
end;
|
|||
|
|
|||
|
end;
|
|||
|
procedure TfrmRhlHelp.BtnFindClick(Sender: TObject);
|
|||
|
begin
|
|||
|
DoQuery();
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmRhlHelp.Edt_codeChange(Sender: TObject);
|
|||
|
begin
|
|||
|
DoFilter();
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmRhlHelp.Edt_NameChange(Sender: TObject);
|
|||
|
begin
|
|||
|
DoFilter();
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmRhlHelp.Dg_SubDblClick(Sender: TObject);
|
|||
|
begin
|
|||
|
if CDS_sel.IsEmpty then exit;
|
|||
|
CDS_sel.Delete ;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmRhlHelp.FormShow(Sender: TObject);
|
|||
|
begin
|
|||
|
InitTree();
|
|||
|
end;
|
|||
|
|
|||
|
end.
|