unit U_ZDYHelp; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ToolWin, ComCtrls, U_BaseInput, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, ImgList, StdCtrls, ExtCtrls, cxTextEdit, cxGridCustomPopupMenu, cxGridPopupMenu, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges, dxScrollbarAnnotations, cxContainer, dxBarBuiltInMenu, cxImageList, System.ImageList, dxSkinsDefaultPainters; type TfrmZDYHelp = class(TfrmBaseInput) TV1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; V1Code: TcxGridDBColumn; V1Name: TcxGridDBColumn; ToolBar1: TToolBar; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; DataSource1: TDataSource; ClientDataSet1: TClientDataSet; TBAdd: TToolButton; TBSave: TToolButton; TBDel: TToolButton; TBClose: TToolButton; ToolButton1: TToolButton; TBEdit: TToolButton; V1Note: TcxGridDBColumn; V1OrderNo: TcxGridDBColumn; ADOConnection1: TADOConnection; Panel1: TPanel; Label1: TLabel; ZDYName: TcxTextEdit; ThreeImgList: TImageList; Label2: TLabel; cxGridPopupMenu1: TcxGridPopupMenu; V1ZdyFlag: TcxGridDBColumn; V1HelpType: TcxGridDBColumn; V1note1: TcxGridDBColumn; ImageList1: TImageList; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBAddClick(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TV1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure V1NamePropertiesEditValueChanged(Sender: TObject); procedure V1OrderNoPropertiesEditValueChanged(Sender: TObject); procedure V1NotePropertiesEditValueChanged(Sender: TObject); procedure V1Column1PropertiesEditValueChanged(Sender: TObject); procedure V1HelpTypePropertiesEditValueChanged(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ZDYNamePropertiesChange(Sender: TObject); private procedure InitGrid(); { Private declarations } public flag, flagname, snote, MainType: string; fnote, forderno, fZdyFlag, ViewFlag, fnote1, FHelpType: Boolean; PPSTE: integer; { Public declarations } end; var frmZDYHelp: TfrmZDYHelp; implementation uses U_DataLink, U_RTFun; {$R *.dfm} procedure TfrmZDYHelp.FormCreate(Sender: TObject); begin inherited; with ADOConnection1 do begin Connected := false; ConnectionString := DConString; Connected := true; end; ADOQueryBaseCmd.Connection := ADOConnection1; ADOQueryBaseTemp.Connection := ADOConnection1; end; procedure TfrmZDYHelp.FormClose(Sender: TObject; var Action: TCloseAction); begin ZDYName.SetFocus; Action := cahide; end; procedure TfrmZDYHelp.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; sql.Clear; sql.Add('select A.*,ZJM=dbo.getPinYin(A.ZdyName) from KH_ZDY A where A.Type=''' + flag + ''''); if Trim(MainType) <> '' then begin sql.Add(' and A.MainType=''' + Trim(MainType) + ''''); end; Open; end; SCreateCDS(ADOQueryMain, ClientDataSet1); SInitCDSData(ADOQueryMain, ClientDataSet1); finally ADOQueryMain.EnableControls; end; end; procedure TfrmZDYHelp.TBAddClick(Sender: TObject); var i: Integer; begin ZDYName.SetFocus; TV1.OptionsData.Editing := True; TV1.OptionsSelection.CellSelect := True; for i := 0 to 5 do begin with ClientDataSet1 do begin Append; Post; end; end; end; procedure TfrmZDYHelp.TBSaveClick(Sender: TObject); var maxno: string; begin if ClientDataSet1.IsEmpty then Exit; ZDYName.SetFocus; if ClientDataSet1.Locate('ZDYName', null, []) then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; if ClientDataSet1.Locate('ZDYName', '', []) then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from KH_ZDY where ZdyNo=''' + Trim(flag) + ''''); open; end; if ADOQueryTemp.IsEmpty then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from KH_ZDY where 1=2'); open; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(flag); ADOQueryCmd.FieldByName('ZDYName').Value := trim(flagname); ADOQueryCmd.FieldByName('Type').Value := 'Main'; ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType); ADOQueryCmd.Post; { sql.Add('insert into KH_ZDY(ZDYNo,ZDYName,Type,MainType) select :ZDYNo,:ZDYName,:Type,:MainType '); Parameters.ParamByName('ZDYNo').Value:=Trim(flag); Parameters.ParamByName('ZDYName').Value:=Trim(flagname); Parameters.ParamByName('Type').Value:='Main'; Parameters.ParamByName('MainType').Value:=Trim(MainType); ExecSQL; } end; end; with ADOQueryCmd do begin ClientDataSet1.DisableControls; with ClientDataSet1 do begin First; while not eof do begin if Trim(ClientDataSet1.FieldByName('ZDYNO').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxno, 'SY', 'KH_ZDY', 3, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; ClientDataSet1.EnableControls; Application.MessageBox('取最大编号失败!', '提示', 0); Exit; end; end else begin maxno := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; with ADOQueryTemp do begin Close; sql.Clear; sql.add('select * from KH_Zdy where Type=''' + Trim(flag) + ''''); if Trim(MainType) <> '' then SQL.Add(' and MainType=''' + Trim(MainType) + ''''); sql.Add(' and ZdyName=''' + Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) + ''''); Open; end; if ADOQueryTemp.IsEmpty = False then begin if ADOQueryTemp.RecordCount > 1 then begin ADOQueryCmd.Connection.RollbackTrans; ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end; if Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) = '' then begin ADOQueryCmd.Connection.RollbackTrans; ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end else begin if Trim(ADOQueryTemp.fieldbyname('ZdyNo').AsString) <> Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) then begin ADOQueryCmd.Connection.RollbackTrans; ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end; end; end; with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('delete KH_ZDY where ZDYNO=''' + Trim(ClientDataSet1.fieldbyname('ZDYNO').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from KH_ZDY where 1<>1'); Open; end; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(maxno); ADOQueryCmd.FieldByName('ZDYName').Value := ClientDataSet1.fieldbyname('ZDYName').Value; ADOQueryCmd.FieldByName('note').Value := Trim(snote); //ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString; ADOQueryCmd.FieldByName('Type').Value := flag; ADOQueryCmd.FieldByName('valid').Value := 'Y'; if Trim(MainType) <> '' then ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType); //ADOQueryCmd.FieldByName('sel').Value:=0; ADOQueryCmd.Post; ClientDataSet1.Edit; ClientDataSet1.FieldByName('ZDYNo').Value := Trim(maxno); ClientDataSet1.Post; Next; end; end; ClientDataSet1.EnableControls; end; ADOQueryCmd.Connection.CommitTrans; Application.MessageBox('保存成功!', '提示', 0); TV1.OptionsData.Editing := False; TV1.OptionsSelection.CellSelect := False; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmZDYHelp.TBDelClick(Sender: TObject); begin if ClientDataSet1.IsEmpty then Exit; if (Trim(ClientDataSet1.FieldByName('ZDYNo').AsString) <> '') or (Trim(ClientDataSet1.FieldByName('ZDYname').AsString) <> '') then begin if application.MessageBox('确定要删除吗?', '提示信息', 1) = 2 then exit; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete KH_ZDY where ZDYNo=''' + Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString) + ''''); SQL.Add(' and Type=''' + Trim(flag) + ''''); ExecSQL; end; end; ClientDataSet1.Delete; end; procedure TfrmZDYHelp.TBCloseClick(Sender: TObject); begin ModalResult := 2; ZDYName.SetFocus; Close; end; procedure TfrmZDYHelp.FormShow(Sender: TObject); var fsj, fsj1: string; begin // inherited; InitGrid(); fsj := Trim(flag) + '01'; fsj1 := Trim(flagname) + '01'; ReadCxGrid('自定义' + Trim(flag), TV1, '自定义数据'); frmZDYHelp.Caption := Trim(flagname); V1Note.Visible := fnote; V1ZdyFlag.Visible := fZdyFlag; V1OrderNo.Visible := forderno; v1note1.Visible := fnote1; V1HelpType.Visible := fhelpType; if ViewFlag = True then begin TBAdd.Visible := False; TBSave.Visible := False; TBDel.Visible := False; TBEdit.Visible := False; Label2.Visible := False; end; end; procedure TfrmZDYHelp.ToolButton1Click(Sender: TObject); begin ZDYName.SetFocus; // WriteCxGrid('自定义'+Trim(flag),TV1,'自定义数据'); ModalResult := 1; end; procedure TfrmZDYHelp.TBEditClick(Sender: TObject); begin TV1.OptionsData.Editing := True; TV1.OptionsSelection.CellSelect := True; end; procedure TfrmZDYHelp.TV1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if TV1.OptionsData.Editing = False then begin ModalResult := 1; end; end; procedure TfrmZDYHelp.ZDYNamePropertiesChange(Sender: TObject); var fsj: string; begin if Trim(ZDYName.Text) <> '' then begin fsj := ' zdyname like ''' + '%' + Trim(ZDYName.Text) + '%' + '''' + ' or Note like ''' + '%' + Trim(ZDYName.Text) + '%' + '''' + ' or ZJM like ''' + '%' + Trim(ZDYName.Text) + '%' + ''''; end; if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, fsj); SCreateCDS(ADOQueryMain, ClientDataSet1); SInitCDSData(ADOQueryMain, ClientDataSet1); end; end; procedure TfrmZDYHelp.V1NamePropertiesEditValueChanged(Sender: TObject); var maxno, mvalue: string; begin mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin //Application.MessageBox('名称不能为空!','提示',0); Exit; end; with ClientDataSet1 do begin Edit; FieldByName('ZdyName').Value := Trim(mvalue); //Post; end; try ADOQueryCmd.Connection.BeginTrans; with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from KH_ZDY where ZdyNo=''' + Trim(flag) + ''''); open; end; if ADOQueryTemp.IsEmpty then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from KH_ZDY where 1=2'); open; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(flag); ADOQueryCmd.FieldByName('ZDYName').Value := trim(flagname); ADOQueryCmd.FieldByName('Type').Value := 'Main'; ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType); ADOQueryCmd.Post; end; end; with ADOQueryCmd do begin //ClientDataSet1.DisableControls; //with ClientDataSet1 do //begin //First; //while not eof do //begin if Trim(ClientDataSet1.FieldByName('ZDYNO').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxno, 'SY', 'KH_ZDY', 3, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; //ClientDataSet1.EnableControls; Application.MessageBox('取最大编号失败!', '提示', 0); Exit; end; end else begin maxno := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; with ADOQueryTemp do begin Close; sql.Clear; sql.add('select * from KH_Zdy where Type=''' + Trim(flag) + ''''); if Trim(MainType) <> '' then SQL.Add(' and MainType=''' + Trim(MainType) + ''''); sql.Add(' and ZdyName=''' + Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) + ''''); sql.Add(' and note=''' + Trim(ClientDataSet1.fieldbyname('note').AsString) + ''''); Open; end; if ADOQueryTemp.IsEmpty = False then begin if ADOQueryTemp.RecordCount > 1 then begin ADOQueryCmd.Connection.RollbackTrans; //ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end; if Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) = '' then begin ADOQueryCmd.Connection.RollbackTrans; //ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end else begin if Trim(ADOQueryTemp.fieldbyname('ZdyNo').AsString) <> Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) then begin ADOQueryCmd.Connection.RollbackTrans; //ClientDataSet1.EnableControls; Application.MessageBox('名称重复!', '提示', 0); Exit; end; end; end; with ADOQueryCmd do begin Close; sql.Clear; SQL.Add('delete KH_ZDY where ZDYNO=''' + Trim(ClientDataSet1.fieldbyname('ZDYNO').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from KH_ZDY where 1<>1'); Open; end; ADOQueryCmd.Append; ADOQueryCmd.FieldByName('ZDYNo').Value := Trim(maxno); ADOQueryCmd.FieldByName('ZDYName').Value := ClientDataSet1.fieldbyname('ZDYName').AsString; ADOQueryCmd.FieldByName('note').Value := Trim(snote); //ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString; ADOQueryCmd.FieldByName('Type').Value := flag; ADOQueryCmd.FieldByName('valid').Value := 'Y'; if Trim(MainType) <> '' then ADOQueryCmd.FieldByName('MainType').Value := Trim(MainType); //ADOQueryCmd.FieldByName('sel').Value:=0; ADOQueryCmd.Post; ClientDataSet1.Edit; ClientDataSet1.FieldByName('ZDYNo').Value := Trim(maxno); //ClientDataSet1.Post; // Next; //end; //end; // ClientDataSet1.EnableControls; end; ADOQueryCmd.Connection.CommitTrans; //Application.MessageBox('保存成功!','提示',0); //TV1.OptionsData.Editing:=False; //TV1.OptionsSelection.CellSelect:=False; except ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmZDYHelp.V1OrderNoPropertiesEditValueChanged(Sender: TObject); var mvalue: string; begin if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with ClientDataSet1 do begin Edit; FieldByName('OrderNo').Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set OrderNo=' + mvalue); sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmZDYHelp.V1NotePropertiesEditValueChanged(Sender: TObject); var mvalue: string; begin if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := ''; end; with ClientDataSet1 do begin Edit; FieldByName('Note').Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set Note=''' + Trim(mvalue) + ''''); sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmZDYHelp.V1Column1PropertiesEditValueChanged(Sender: TObject); var mvalue: string; fieldname: string; begin fieldname := Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName; if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; with ClientDataSet1 do begin Edit; FieldByName(fieldname).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set ' + fieldname + '=''' + Trim(mvalue) + ''' '); sql.Add('where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmZDYHelp.V1HelpTypePropertiesEditValueChanged(Sender: TObject); var mvalue: string; begin if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString) = '' then begin Application.MessageBox('名称不能为空!', '提示', 0); Exit; end; mvalue := TcxTextEdit(Sender).EditingText; if Trim(mvalue) = '' then begin mvalue := '0'; end; with ClientDataSet1 do begin Edit; FieldByName('HelpType').Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('Update KH_Zdy Set HelpType=''' + Trim(mvalue) + ''''); sql.Add(' where ZdyNo=''' + Trim(ClientDataSet1.fieldbyname('ZdyNo').AsString) + ''''); ExecSQL; end; end; procedure TfrmZDYHelp.FormDestroy(Sender: TObject); begin inherited; WriteCxGrid('自定义' + Trim(flag), TV1, '自定义数据'); frmZDYHelp := nil; end; end.