RtTool/Delphi7/开发档案/马国钢开发代码/ThreeFun/helpForm/U_JwlKcWlHelp.pas
2025-01-08 11:55:07 +08:00

365 lines
9.4 KiB
ObjectPascal
Raw Permalink 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_JwlKcWlHelp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, DB, cxDBData, cxTextEdit, cxGridLevel,strUtils,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
cxControls, cxGridCustomView, cxGrid, StdCtrls, ComCtrls, ToolWin,
ImgList, DBClient, ADODB;
type
PMyRec = ^TMyRec;
TMyRec = record
wbcode: string;
Tvtem_str: string;
end;
type
TfrmJwlKcWlHelp = class(TForm)
ToolBar1: TToolBar;
Tok: TToolButton;
Tclose: TToolButton;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
edttj: TEdit;
edtSpec: TEdit;
CheckBox1: TCheckBox;
dbGrid1: TcxGrid;
tv1: TcxGridDBTableView;
tv1mnumber1: TcxGridDBColumn;
tv1mname1: TcxGridDBColumn;
tv1model1: TcxGridDBColumn;
tv1mareaname1: TcxGridDBColumn;
tv1batchnum1: TcxGridDBColumn;
tv1caizhi1: TcxGridDBColumn;
tv1factoryName: TcxGridDBColumn;
tv1endquan1: TcxGridDBColumn;
tv1primaryunitname1: TcxGridDBColumn;
dbGrid1Level1: TcxGridLevel;
GroupBox1: TGroupBox;
cxGrid2: TcxGrid;
Tv2: TcxGridDBTableView;
Tv2mnumber1: TcxGridDBColumn;
Tv2mname1: TcxGridDBColumn;
Tv2model1: TcxGridDBColumn;
Tv2mareaname1: TcxGridDBColumn;
Tv2batchnum1: TcxGridDBColumn;
Tv2caizhi1: TcxGridDBColumn;
Tv2factoryName: TcxGridDBColumn;
Tv2primaryunitname1: TcxGridDBColumn;
Tv2endquan1: TcxGridDBColumn;
cxGrid2Level1: TcxGridLevel;
ImageList24: TImageList;
DataSource1: TDataSource;
ADOQueryHelp: TADOQuery;
CDS_sel: TClientDataSet;
DataSourceSel: TDataSource;
ADOConnection1: TADOConnection;
Label3: TLabel;
edt_zjm: TEdit;
TreeView1: TTreeView;
ADOQueryTmp: TADOQuery;
ADOQueryChild: TADOQuery;
procedure TokClick(Sender: TObject);
procedure TcloseClick(Sender: TObject);
procedure tv1DblClick(Sender: TObject);
procedure Tv2DblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure edttjChange(Sender: TObject);
private
procedure DoQuery();
procedure DoFilter();
procedure AddSelRow();
procedure InitTree();
procedure AddChildNode(parentNode:TtreeNode;mNo:string);
public
FStoreCode:string;
fIsRhl:Boolean;
end;
var
frmJwlKcWlHelp: TfrmJwlKcWlHelp;
implementation
uses
U_formPas,U_global;
{$R *.dfm}
//////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////
procedure TfrmJwlKcWlHelp.DoQuery();
begin
try
adoqueryHelp.DisableControls ;
with adoqueryHelp do
begin
close;
sql.Clear;
sql.Add('select distinct A.factory,A.factoryName,B.mNumber,B.mName,');
sql.Add(''''' as BatchNum,C.zjm,');
sql.Add('B.Model,B.primaryUnit,B.primaryUnitName');
sql.Add('from kf_nowQuan A');
sql.Add('inner join gy_material B on A.mNumber=B.mNumber');
if fIsRhl then
sql.Add('inner join sc_dyeInfo C on A.mNumber=C.dyeCode');
if trim(FStoreCode)<>'' then
sql.Add('where A.whcode='+quotedStr(trim(FStoreCode)));
if not CheckBox1.Checked then
sql.Add('and A.endQuan>0');
//sql.Add('order by A.Mnumber');
open;
end;
CreateCDS(adoqueryHelp,cds_sel);
finally
adoqueryHelp.EnableControls ;
end;
end;
////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////////////////////////////////////////////////////
procedure TfrmJwlKcWlHelp.DoFilter();
var
filterStr:string;
begin
filterStr:='';
//
if trim(edttj.Text) <>'' then
filterStr:=filterStr+' and mName like '+quotedStr('%'+trim(edttj.Text)+'%');
//<2F><><EFBFBD><EFBFBD>
if trim(edtSpec.Text)<>'' then
filterStr:=filterStr+' and model like '+quotedStr('%'+trim(edtSpec.Text)+'%');
//xjm
if trim(edt_zjm.Text)<>'' then
filterStr:=filterStr+' and zjm like '+quotedStr('%'+trim(edt_zjm.Text)+'%');
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;
/////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>ļ<EFBFBD>¼
////////////////////////////////////////////////////
procedure TfrmJwlKcWlHelp.AddSelRow();
var
i:integer;
begin
if CDS_Sel.Locate('mNumber;factory',VarArrayOf([trim(ADOQueryHelp.fieldbyname('mNumber').AsString),
// trim(ADOQueryHelp.fieldbyname('BatchNum').AsString),
trim(ADOQueryHelp.fieldbyname('factory').AsString)]),
[]) then
begin
application.MessageBox(pchar('<27>Ѵ<EFBFBD><D1B4><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>εġ<CEB5>'+trim(ADOQueryHelp.fieldbyname('mname').AsString)+'<27><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>¼!'),'<27><>ʾ<EFBFBD><CABE>Ϣ',0);
exit;
end;
with CDS_Sel do
begin
CDS_Sel.append;
for i:=0 to ADOQueryHelp.FieldCount-1 do
begin
fields[i].Value:=ADOQueryHelp.Fields[i].Value;
end;
CDS_Sel.Post;
end;
end;
procedure TfrmJwlKcWlHelp.TokClick(Sender: TObject);
begin
if adoqueryHelp.IsEmpty then
ModalResult:=-1
else
modalResult:=1;
end;
procedure TfrmJwlKcWlHelp.TcloseClick(Sender: TObject);
begin
close;
end;
procedure TfrmJwlKcWlHelp.tv1DblClick(Sender: TObject);
begin
AddSelRow();
end;
procedure TfrmJwlKcWlHelp.Tv2DblClick(Sender: TObject);
begin
if CDS_Sel.IsEmpty then exit;
CDS_sel.Delete;
end;
procedure TfrmJwlKcWlHelp.FormCreate(Sender: TObject);
begin
groupBox1.Align :=alClient;
CDS_Sel.Close;
with ADOConnection1 do
begin
Connected:=false;
ConnectionString:=gConString;
Connected:=true;
end;
end;
procedure TfrmJwlKcWlHelp.FormShow(Sender: TObject);
begin
DoQuery();
edttj.SetFocus ;
end;
procedure TfrmJwlKcWlHelp.edttjChange(Sender: TObject);
begin
Dofilter();
end;
procedure TfrmJwlKcWlHelp.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''');
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;
//////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
//////////////////////////////////////////////////////////////////
procedure TfrmJwlKcWlHelp.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;
end.