unit U_GetGlide; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid,StrUtils; type TfrmGetGlide = class(TForm) ADOQuery1: TADOQuery; DataSource1: TDataSource; ADOQuery1GlideNo: TStringField; ADOQuery1GlideName: TStringField; ADOQuery1GlidePara: TStringField; ADOQuery1GlideNote: TStringField; AD_sub: TADODataSet; Ds_sub: TDataSource; AD_GY_Fllb: TADODataSet; Ds_Gy_Fllb: TDataSource; Splitter2: TSplitter; Panel1: TPanel; Label1: TLabel; Edit1: TEdit; ToolBar1: TToolBar; BtnFind: TToolButton; BtnOk: TToolButton; BtnClose: TToolButton; TreeView1: TTreeView; Panel2: TPanel; Splitter1: TSplitter; Panel5: TPanel; dbGrid1: TcxGrid; tv1: TcxGridDBTableView; dbGrid1Level1: TcxGridLevel; tv1glideNo: TcxGridDBColumn; tv1glideName: TcxGridDBColumn; tv1glidePara: TcxGridDBColumn; tv1glideNote: TcxGridDBColumn; Panel3: TPanel; Panel6: TPanel; DG_Sub: TDBGrid; ADOConnection1: TADOConnection; procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure BtnCloseClick(Sender: TObject); procedure BtnOkClick(Sender: TObject); procedure BtnFindClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure DBGrid1DblClick(Sender: TObject); procedure DG_SubDblClick(Sender: TObject); procedure TreeView1Click(Sender: TObject); procedure tv1DblClick(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } load_flag :Boolean; this_code :string; procedure DoQuery(); procedure IntiTree(); procedure DoFilter(mDept:string); public strGlideNameList:string; fISGlideGroup:Boolean; { Public declarations } end; var frmGetGlide: TfrmGetGlide; implementation {$R *.dfm} uses U_adodbmd,U_global; type PMyRec = ^TMyRec; TMyRec = record wbcode: string; Tvtem_str: string; end; procedure TfrmGetGlide.FormCreate(Sender: TObject); begin load_flag := False; with ADOConnection1 do begin Connected:=false; ConnectionString:=gConString; Connected:=true; end; //inti_node(); IntiTree(); load_flag := True; Panel2.Align := AlClient; DoQuery(); end; procedure TfrmGetGlide.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then BtnFindClick(Sender); end; procedure TfrmGetGlide.BtnCloseClick(Sender: TObject); begin Close; end; procedure TfrmGetGlide.BtnOkClick(Sender: TObject); var i :integer; begin if AD_sub.IsEmpty then begin application.MessageBox('请选择您要的工序!','提示信息',0); exit; end; ModalResult:=1; end; procedure TfrmGetGlide.BtnFindClick(Sender: TObject); begin DoFilter(''); end; procedure TfrmGetGlide.DBGrid1DblClick(Sender: TObject); var i :integer; begin if not ADOQuery1.Active then exit; if ADOQuery1.RecordCount = 0 then exit; with Ad_Sub,dg_Sub do begin DisableControls; SetFocus; append; for i := 0 to Columns.Count -1 do begin Columns[i].Field.ReadOnly := False; Fieldvalues[Columns[i].FieldName] := ADOQuery1.Fieldbyname(Columns[i].FieldName).Value; end; SelectedField.FocusControl; update(); EnableControls; end; Ad_Sub.Post; dg_Sub.Refresh; end; procedure TfrmGetGlide.DG_SubDblClick(Sender: TObject); begin if Ad_Sub.IsEmpty then exit; try dg_Sub.SetFocus; Ad_Sub.Delete; except // end; end; procedure TfrmGetGlide.IntiTree(); var MyRecPtr: PMyRec; tmpstr :string; begin try New(MyRecPtr); MyRecPtr^.wbcode := 'R'; MyRecPtr^.Tvtem_str := '全部'; with TreeView1 do begin Items.Clear; Items.AddObject(nil, MyRecPtr^.Tvtem_str, MyRecPtr); end; with TreeView1,AD_GY_Fllb do begin tmpstr := 'select distinct isnull(glideDept,''其它'') as glideDept,'+ 'isnull(glideDeptName,''其它'') as glideDeptName from V_MC_glide'; tmpstr := tmpstr +' order by glidedept'; active := false; CommandText := tmpstr; active := true; if recordcount = 0 then exit; first; while not Eof do begin New(MyRecPtr); MyRecPtr^.wbcode := trim(fieldbyname('glidedept').Asstring); MyRecPtr^.Tvtem_str := trim(fieldbyname('glideDeptName').Asstring); Items.AddChildObject(Items[0],MyRecPtr^.Tvtem_str, MyRecPtr); Next; end; close; Items[0].Selected := True; Items[0].Expand(true); end; except // end; end; procedure TfrmGetGlide.TreeView1Click(Sender: TObject); begin try this_code := trim(PMyRec(TreeView1.Selected.Data).wbcode); Dofilter(this_code); except // end; end; procedure TfrmGetGlide.tv1DblClick(Sender: TObject); var i :integer; begin if ADOQuery1.IsEmpty then exit; with Ad_Sub,dg_Sub do begin DisableControls; SetFocus; append; for i := 0 to Columns.Count -1 do begin Columns[i].Field.ReadOnly := False; Fieldvalues[Columns[i].FieldName] := ADOQuery1.Fieldbyname(Columns[i].FieldName).Value; end; SelectedField.FocusControl; update(); EnableControls; end; Ad_Sub.Post; dg_Sub.Refresh; end; //////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////// procedure TfrmGetGlide.DoQuery(); begin try ADOQuery1.DisableControls ; with ADOQuery1 do begin close; sql.clear; filtered:=false; sql.Add('select *,isnull(glideDept,''其它'') as dept from V_MC_glide'); sql.Add('order By glideNo'); Open; end; finally ADOQuery1.EnableControls ; end; end; ///////////////////////////////////////// procedure TfrmGetGlide.DoFilter(mDept:string); var filterStr:string; begin if mDept<>'R' then filterStr:=' and Dept= '+quotedStr(trim(mDept)); if trim(edit1.Text)<>'' then filterStr:=filterStr+' and glideName like '+quotedStr('%'+trim(edit1.Text)+'%'); try ADOQuery1.DisableControls ; filterStr:=trim(RightBStr(filterStr,length(filterStr)-4)); with ADOQuery1 do begin filtered:=false; if trim(filterStr)<>'' then begin filter:=filterStr; filtered:=true; end; end; finally ADOQuery1.EnableControls ; end; end; procedure TfrmGetGlide.FormShow(Sender: TObject); var strsql:string; begin strsql:=' SELECT * FROM MC_Glide WHERE 1 = 1 '; if trim(strGlideNameList)<>'' then strsql:=strsql+trim(strGlideNameList) else strsql:=strsql+' and 1=2 '; AD_Sub.CommandText:=strsql; with AD_Sub do begin Disablecontrols; Active:=False; Active:=True; Enablecontrols; end; end; end.