RtTool/Delphi7/开发档案/马国钢开发代码/ThreeFun/helpForm/U_RhlHelp.pas

416 lines
11 KiB
ObjectPascal
Raw Normal View History

2025-01-08 11:55:07 +08:00
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.