unit U_Fun10; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, BtnEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit,DBGrids, DB, cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView, ADODB,StrUtils, Midas,cxGridCustomTableView, cxGridTableView, cxGridDBTableView,cxTimeEdit, cxTreeView, cxGrid,cxDBLookupComboBox,cxCalendar, cxCurrencyEdit,cxGridExportLink, ExtCtrls, Buttons,DBClient,RTComboBox,cxDropDownEdit,cxGridBandedTableView, cxGridDBBandedTableView,cxRichEdit,cxButtonEdit,IniFiles,WinSock; //Function sendarp(ipaddr:ulong;temp:dword;ulmacaddr:pointer;ulmacaddrleng:pointer) : DWord; StdCall; External 'Iphlpapi.dll' Name 'SendARP'; type TA = class(TComponent) public S:string; end; function SGetMaxId(AdoQueryTemp:TADOQuery;MyTable:string;MyField:string;Var MaxId:Integer):Boolean; function SIsRepeated(AdoQueryTemp:TADOQuery;MyTable:string;MyField:string;MyCode:String):Boolean; function SSetSaveDataCDS(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; function SSetSaveDataCDS10(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBBandedTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; function SGetServerDate(ADOQueryTmp:TADOQuery):TdateTime; procedure SSetsavedata(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); procedure SSetWinData(ADOQueryTmp:TADOQuery;mParent:TWinControl); function SDelData(ADOQueryCmd:TADOQuery;mDelStr:String):Boolean; function SGetFilters(TMPanel:TPanel;EquTag,LikeTag:Integer):string; function SGetFiltersHint(TMPanel:TPanel;EquTag,LikeTag:Integer):string; procedure SDofilter(ADOQry:TADOQuery;FilterStr:string); function SGetMaxNo(MyAdoQuery:TADOQuery;MyTable:string;MyField:string;MyFlag:string):String; procedure SCreateCDS20(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); procedure SInitCDSData20(fromADO:TADOQuery;toCDS:TclientDataSet); procedure SInitFtComBoxBySql(ADOQueryTmp:TADOQuery; cb: TRTComboBox;FlagType:string; Boxtype:integer; showMsg:string; emptyFlag:Boolean; mSql:string ); procedure SInitComBoxBySql(ADOQueryTmp:TADOQuery; cb: TComboBox; emptyFlag:Boolean; mSql:string ); procedure SInitComBoxByCustCode(ADOQueryTmp:TADOQuery; cb: TComboBox;FlagType:string; Boxtype:integer; showMsg:string; emptyFlag:Boolean ); procedure SInitCxGridComboBoxByCustCode(ADOQueryTmp:TADOQuery;c3:TcxGriddbColumn; FlagType:string;PState:Integer;IsNull:Boolean;Shmeg:string); procedure SSetsavedata10(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); procedure SSetWinData10(ADOQueryTmp:TADOQuery;mParent:TWinControl); procedure SInitCxGridComboBoxBySql(ADOQueryTmp:TADOQuery;c3:TcxGriddbColumn;FSql:string; PState:Integer;IsNull:Boolean;Shmeg:string); function SSWR(s: real): real; procedure SSetWinData20(ADOQueryTmp:TADOQuery;mParent:TWinControl); procedure SSetWinData30(ADOQueryTmp:TADOQuery;mParent:TWinControl;FTag:Integer); procedure SCSHData(ADOQueryTmp:TADOQuery;mParent:TWinControl;FTag:Integer); procedure SSetsavedataNew(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); function SGetServerDate10(ADOQueryTmp:TADOQuery):TDateTime; function SGetServerDateTime(ADOQueryTmp:TADOQuery):TDateTime; procedure SCreateCDSSel(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); procedure SInitCDSDataSel(fromADO:TADOQuery;toCDS:TclientDataSet); procedure CopyAddRow(Tv1:TcxGridDBTableView;CDS_Sub:TClientDataSet); //复制增行。(groupformat标记值) procedure CopyAddRowBand(Tv1:TcxGridDBBandedTableView;CDS_Sub:TClientDataSet); procedure OneKeyPost(Tv1:TcxGridDBTableView;CDS_Sub:TClientDataSet); //一键替换粘贴 procedure CopyAddRowCDS(CDS_Sub:TClientDataSet); function SSetSaveDataCDSNew(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; function SGetFinds(TMPanel:TPanel;EquTag,LikeTag:Integer):string; function SSetSaveDataCDSBandNew(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBBandedTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; function GetLSNo(ADOQueryTmp:TADOQuery; var mMaxNo:string; mFlag:string; mTable:string; mlen:integer; mtype:integer=0):Boolean; procedure SSetsaveSql(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); procedure ReadCxGrid(fileName:string;cxgrid:TcxGridDBTableView;filePack:string='公用'); procedure ReadCxBandedGrid(fileName:string;cxgrid:TcxGridDBBandedTableView;filePack:string='公用'); procedure WriteCxGrid(fileName:string;cxgrid:TcxGridDBTableView;filePack:string='公用'); procedure WriteCxBandedGrid(fileName:string;cxgrid:TcxGridDBBandedTableView;filePack:string='公用'); procedure CreateGroupSummarry(tv1:TcxGridDBTableView); procedure TcxGridToExcel(mfileName:string;gridName:TcxGrid); function ReadINIFileStr(ininame,TypeName:string;ValueName,ValueMR:String):string; procedure SClearData(mParent:TWinControl;FTag:Integer); // procedure SelExportData(FTv:TcxGridDBTableView;FAdoQry:TADOQuery;FTile:string); procedure SDofilter10(cds_Main:TClientDataSet;FilterStr:string); procedure SInitCxBandGridComboBoxBySql(ADOQueryTmp:TADOQuery;c3:TcxGridDBBandedColumn;FSql:string; PState:Integer;IsNull:Boolean;Shmeg:string); procedure ColumnView(AdoQueryTemp:TADOQuery;Tv1:TcxGridDBTableView;MKName10:string); // procedure ColumnSet(TV10:TcxGridDBTableView;MKName10:String); // procedure ColumnBandSet(TV10:TcxGridDBBandedTableView;MKName10:String); procedure ColumnBandView(AdoQueryTemp:TADOQuery;Tv1:TcxGridDBBandedTableView;MKName10:string); procedure SCSHDataWTag(ADOQueryTmp:TADOQuery;mParent:TWinControl); procedure GetSWLDZ(IPStr:string); procedure SCSHDataCDS(CDS_Main:TClientDataSet;mParent:TWinControl;FTag:Integer); // procedure SelPrintData(FTv:TcxGridDBTableView;FAdoQry:TADOQuery;FTitle:string;FLTitle:string;FRTile:string); // procedure SelPrintDataMore(FTv:TcxGridDBTableView;FAdoQry:TADOQuery;FTitle:string;FLTitle:string;FRTile:string;FKK:Integer;FiniName:string); // procedure SelExportDataBand(FTv:TcxGridDBBandedTableView;FAdoQry:TADOQuery;FTile:string); procedure SSetsaveSqlNew(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); procedure SCSHDataNew(ADOQueryTmp:TADOQuery;mParent:TWinControl;FTag:Integer); function RTSetSaveDataCDS(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; function RTSetSaveDataCDSBand(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBBandedTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; procedure SCreateCDSOnly(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); procedure SInitCDSDataOnly(fromADO:TADOQuery;toCDS:TclientDataSet); procedure SelOKNo(CDS_MainSel:TClientDataSet;FSel:Boolean); function num2cengnum(strArabic:string):string; function num2ceng(strArabic:string):string; procedure RTSetsavedata(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); procedure InitOrderColor(OrdMainId:string;Combox:TComboBox;FAdoQry:TADOQuery); procedure InitBCGangNo(OrdSubId:string;Combox:TComboBox;FAdoQry:TADOQuery); procedure InitRCGangNo(OrdSubId:string;Combox:TComboBox;FAdoQry:TADOQuery); procedure InitCDSToCDS(fromADO:TclientDataSet;toCDS:TclientDataSet); procedure clearControl(Myparent:TWinControl;MyTag:integer); procedure InitDllEvt(FromFile:String;FormID:Integer;Para:String;FormType:Integer; Title: String; Def1: String; Def2: String; Def3: String; Def4: String; Def5: String; Def6: String; Def7: String; Def8: String; Def9: String; Def10: string); type TMyF = function( App: TApplication; //主应用程序 (对Delphi而言) FormH: HWND; //创建窗口的父窗口句柄 (对PB而言) FormID: Integer; //要调用dll中功能窗体的Id号; 如果只有一个功能窗口,FormID默认为0 Language: Integer; //0=Delphi; 1=PB WinStyle: Integer; //0=子窗口; 1:普通窗口 (PB中都为普通窗口) UID: PChar; //用户Id UName: PChar; //用户名 Para: PChar; Title: PChar; Defstr1: PChar; Defstr2: PChar; Defstr3: PChar; Defstr4: PChar; Defstr5: PChar; Defstr6: PChar; Defstr7: PChar; Defstr8: PChar; Defstr9: PChar; Defstr10: PChar; Datalink: PChar ): HWND; stdcall; var TP: FARPROC; Tf: TMyF; implementation uses U_DataLink; procedure InitDllEvt(FromFile:String;FormID:Integer;Para:String;FormType:Integer; Title: String; Def1: String; Def2: String; Def3: String; Def4: String; Def5: String; Def6: String; Def7: String; Def8: String; Def9: String; Def10: string); var Th: HMODULE; begin Th := LoadLibrary(PChar(FromFile)); if Th > 0 then begin TP := GetProcAddress(Th, 'GetDllForm'); if TP <> nil then begin Tf := TMyF(Tp); Tf(Application, 0, FormID, 0, FormType, PChar(DCode), PChar(DName), PChar(Para), PChar(Title), PChar(Def1), PChar(Def2),PChar(Def3),PChar(Def4),PChar(Def5), PChar(Def6),PChar(Def7),PChar(Def8),PChar(Def9),PChar(Def10), pchar(DConString)); end; end else begin Application.MessageBox(PChar('打不开文件' + FromFile + '!'), '错误', MB_ICONERROR); end; end; procedure clearControl(Myparent:TWinControl;MyTag:integer); var i:Integer; MCode:String; begin with Myparent do begin for i:=0 to ControlCount-1 do begin if Controls[i].Tag=MyTag then begin if Controls[i] is TEdit then begin TEdit(Controls[i]).Text:=''; end; if Controls[i] is TMemo then begin TMemo(Controls[i]).Lines.Text:=''; end; if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=''; end; if Controls[i] is TComboBox then begin TComboBox(Controls[i]).ItemIndex:=0; end; if Controls[i] is TDateTimePicker then begin TDateTimePicker(Controls[i]).Date:=date(); end; if Controls[i] is TBtnEditA then begin TBtnEditA(Controls[i]).text:=''; end; end; end; end; end; ///////////////////取表中Int型字段最大值/////////////////////////////////////// function SGetMaxId(AdoQueryTemp:TADOQuery;MyTable:string;MyField:string;Var MaxId:Integer):Boolean; begin try with AdoQueryTemp do begin Close; SQL.Clear; SQL.Add('select Max('+MyField+')+1 MaxId from '+MyTable); Open; end; with AdoQueryTemp do begin if (Trim(FieldByName('MaxId').AsString)='') or (Trim(FieldByName('MaxId').AsString)=NULL) then MaxId:=1 else MaxId:=(fieldbyname('MaxId').AsInteger); Close; SQL.Clear; end; Result:=True; except Result:=False; Application.MessageBox('取最大值失败!','提示',0); end; end; procedure InitBCGangNo(OrdSubId:string;Combox:TComboBox;FAdoQry:TADOQuery); var fsj:string; begin fsj:='select distinct(AOrdDefStr1) Code from JYOrder_Sub_AnPai '+ ' where Subid='''+Trim(OrdSubId)+''''; with FAdoQry do begin Close; sql.Clear; sql.Add(fsj); Open; end; Combox.Clear; with FAdoQry do begin First; while not Eof do begin Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString)); Next; end; end; Combox.Items.Add(''); end; procedure InitRCGangNo(OrdSubId:string;Combox:TComboBox;FAdoQry:TADOQuery); var fsj:string; begin fsj:='select distinct(gangno) Code from JYOrder_Sub_AnPai '+ ' where Subid='''+Trim(OrdSubId)+''''; with FAdoQry do begin Close; sql.Clear; sql.Add(fsj); Open; end; Combox.Clear; with FAdoQry do begin First; while not Eof do begin Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString)); Next; end; end; Combox.Items.Add(''); end; procedure InitOrderColor(OrdMainId:string;Combox:TComboBox;FAdoQry:TADOQuery); var fsj:string; begin fsj:='select distinct(PRTColor) Code from JYOrder_Sub '+ ' where Mainid='''+Trim(OrdMainId)+''''; with FAdoQry do begin Close; sql.Clear; sql.Add(fsj); Open; end; Combox.Clear; with FAdoQry do begin First; while not Eof do begin Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString)); Next; end; end; Combox.Items.Add(''); end; ///////////////////////判断表中数据是否重复/////////////////////////////////// function SIsRepeated(AdoQueryTemp:TADOQuery;MyTable:string;MyField:string;MyCode:String):Boolean; begin try Result:=False; with AdoQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from '+MyTable+' where '+MyField+'='''+Trim(MyCode)+''''); Open; if IsEmpty then Result:=True; Close; SQL.Clear; end; except Result:=False; Application.MessageBox('表名或字段名错误!','提示',0); end; end; ////////////////////设置ClientDataSet的保存信息///////////////////////////// function SSetSaveDataCDS(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; var i:Integer; begin try Result:=False; for i:=0 to Tv1.ColumnCount-1 do begin if Tv1.Columns[i].Tag=MyTag then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString)<>'' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:= CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end; end; end; Result:=True; except Result:=False; Application.MessageBox('设置Cds保存信息失败!','提示',0); end; end; ////////////////////设置ClientDataSet的保存信息///////////////////////////// function SSetSaveDataCDSNew(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; var i:Integer; begin try Result:=False; for i:=0 to Tv1.ColumnCount-1 do begin if Tv1.Columns[i].Tag=MyTag then begin if Trim(Tv1.Columns[i].Summary.GroupFooterFormat)<>'1' then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString)<>'' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:= CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end{ else begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:=null; end}; end; if Trim(Tv1.Columns[i].Summary.GroupFormat)<>'' then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].Summary.GroupFormat).AsString)<>'' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].Summary.GroupFormat).Value:= CDS_Sub.fieldbyname(Tv1.Columns[i].Summary.GroupFormat).Value; end;{ else begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:=null; end; } end; end; end; Result:=True; except Result:=False; Application.MessageBox('设置Cds保存信息失败!','提示',0); end; end; function RTSetSaveDataCDS(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; var i:Integer; begin try Result:=False; for i:=0 to Tv1.ColumnCount-1 do begin if Tv1.Columns[i].Tag=MyTag then begin begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString)<>'' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:= CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end else begin if Trim(Tv1.Columns[i].Summary.GroupFooterFormat)='0' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:=0; end else begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:=null; end; end; end; end; end; Result:=True; except Result:=False; Application.MessageBox('设置Cds保存信息失败!','提示',0); end; end; function RTSetSaveDataCDSBand(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBBandedTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; var i:Integer; begin try Result:=False; for i:=0 to Tv1.ColumnCount-1 do begin if Tv1.Columns[i].Tag=MyTag then begin begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString)<>'' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:= CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end else begin if Trim(Tv1.Columns[i].Summary.GroupFooterFormat)<>'' then AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:=0 else AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:=null; end; end; end; end; Result:=True; except Result:=False; Application.MessageBox('设置Cds保存信息失败!','提示',0); end; end; function SSetSaveDataCDSBandNew(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBBandedTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; var i:Integer; begin try Result:=False; for i:=0 to Tv1.ColumnCount-1 do begin if Tv1.Columns[i].Tag=MyTag then begin if Trim(Tv1.Columns[i].Summary.GroupFooterFormat)<>'1' then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString)<>'' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:= CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end; end; if Trim(Tv1.Columns[i].Summary.GroupFormat)<>'' then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].Summary.GroupFormat).AsString)<>'' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].Summary.GroupFormat).Value:= CDS_Sub.fieldbyname(Tv1.Columns[i].Summary.GroupFormat).Value; end; end; end; end; Result:=True; except Result:=False; Application.MessageBox('设置Cds保存信息失败!','提示',0); end; end; ////////////////////设置ClientDataSet的保存信息///////////////////////////// function SSetSaveDataCDS10(AdoQueryCmd:TADOQuery;Tv1:TcxGridDBBandedTableView; CDS_Sub:TClientDataSet;MyTable:string;MyTag:Integer):Boolean; var i:Integer; begin try Result:=False; for i:=0 to Tv1.ColumnCount-1 do begin if Tv1.Columns[i].Tag=MyTag then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString)<>'' then AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:= CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end; end; Result:=True; except Result:=False; Application.MessageBox('设置Cds保存信息失败!','提示',0); end; end; ///////////////////////////服务器日期////////////////////////////////////// function SGetServerDate(ADOQueryTmp:TADOQuery):TdateTime; begin try with ADOQueryTmp do begin close; sql.Clear; sql.Add('select getDate()as dt'); open; result:=StrToDate(formatdatetime('yyyy-MM-dd',fieldByName('dt').AsDatetime)); close; SQL.Clear; end; except application.MessageBox('获取当前日期发生错误!','提示信息',0); end; end; function SGetServerDateTime(ADOQueryTmp:TADOQuery):TdateTime; begin try with ADOQueryTmp do begin close; sql.Clear; sql.Add('select getDate()as dt'); open; result:=fieldByName('dt').AsDatetime; close; SQL.Clear; end; except application.MessageBox('获取当前日期发生错误!','提示信息',0); end; end; function SGetServerDate10(ADOQueryTmp:TADOQuery):TdateTime; begin try with ADOQueryTmp do begin close; sql.Clear; sql.Add('select getDate()as dt'); open; result:=StrToDate(formatdatetime('yyyy-MM-dd',fieldByName('dt').AsDatetime)); close; SQL.Clear; end; except application.MessageBox('获取当前日期发生错误!','提示信息',0); end; end; ///////////////////////////////////////////////////// //保存数据时字段赋值 ///////////////////////////////////////////////////// procedure SSetsavedata(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); var i:Integer; begin with Myparent do begin for i:=0 to ControlCount-1 do begin if Controls[i].Tag=MyTag then begin if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TEdit(Controls[i]).Text); end else if Controls[i] is TRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TRichEdit(Controls[i]).Text; end else if Controls[i] is TcxRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TcxRichEdit(Controls[i]).Text; end else if Controls[i] is TMemo then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TMemo(Controls[i]).Text; end; if Controls[i] is TRTComboBox then begin if (TRTComboBox(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TRTComboBox(Controls[i]).Item2); end else if Controls[i] is TComboBox then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TComboBox(Controls[i]).Text); end else if Controls[i] is TCheckBox then begin if TCheckBox(Controls[i]).Checked=True then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=1 else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=0; end else if Controls[i] is TDateTimePicker then begin if TDateTimePicker(Controls[i]).ShowCheckbox then begin if TDateTimePicker(Controls[i]).Checked then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else if Controls[i] is TBtnEditA then begin if TBtnEditA(Controls[i]).Hint='名称' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditA(Controls[i]).Text) else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditA(Controls[i]).TxtCode); end else if Controls[i] is TBtnEditC then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditC(Controls[i]).TxtCode); end else if Controls[i] is TcxTimeEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TcxTimeEdit(Controls[i]).Text); end; end; end; end; end; procedure SSetsavedataNew(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); var i:Integer; begin with Myparent do begin for i:=0 to ControlCount-1 do begin if Controls[i].Tag=MyTag then begin if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TEdit(Controls[i]).Text); end else if Controls[i] is TRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TRichEdit(Controls[i]).Text; end else if Controls[i] is TMemo then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TMemo(Controls[i]).Text; end; if Controls[i] is TRTComboBox then begin if (TRTComboBox(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TRTComboBox(Controls[i]).Item2); end else if Controls[i] is TComboBox then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TComboBox(Controls[i]).Text); end else if Controls[i] is TDateTimePicker then begin if TDateTimePicker(Controls[i]).ShowCheckbox then begin if TDateTimePicker(Controls[i]).Checked then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else if Controls[i] is TBtnEditA then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditA(Controls[i]).TxtCode); if (TBtnEditA(Controls[i]).Hint<>'') and (TBtnEditA(Controls[i]).ParentCtl3D=True) then ADOQueryCmd.FieldByName(Trim(TBtnEditA(Controls[i]).Hint)).Value:=Trim(TBtnEditA(Controls[i]).Text); end else if Controls[i] is TBtnEditC then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditC(Controls[i]).TxtCode); //if (TBtnEditC(Controls[i]).Hint<>'') and (TBtnEditC(Controls[i]).ParentCtl3D=True)then //ADOQueryCmd.FieldByName(Trim(TBtnEditC(Controls[i]).Hint)).Value:=Trim(TBtnEditC(Controls[i]).Text); end else if Controls[i] is TcxTimeEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TcxTimeEdit(Controls[i]).Text); end; end; end; end; end; procedure RTSetsavedata(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); var i:Integer; begin with Myparent do begin for i:=0 to ControlCount-1 do begin if Controls[i].Tag=MyTag then begin if Controls[i] is TEdit then begin // if Trim(TEdit(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TEdit(Controls[i]).Text); end else if Controls[i] is TRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TRichEdit(Controls[i]).Text; end else if Controls[i] is TMemo then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TMemo(Controls[i]).Text; end; if Controls[i] is TRTComboBox then begin if (TRTComboBox(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TRTComboBox(Controls[i]).Item2); end else if Controls[i] is TComboBox then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TComboBox(Controls[i]).Text); end else if Controls[i] is TDateTimePicker then begin if TDateTimePicker(Controls[i]).ShowCheckbox then begin if TDateTimePicker(Controls[i]).Checked then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else if Controls[i] is TBtnEditA then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditA(Controls[i]).Text); if (TBtnEditA(Controls[i]).Hint<>'') then ADOQueryCmd.FieldByName(Trim(TBtnEditA(Controls[i]).Hint)).Value:=Trim(TBtnEditA(Controls[i]).TxtCode); end else if Controls[i] is TBtnEditC then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditC(Controls[i]).Text); if (TBtnEditC(Controls[i]).Hint<>'') then ADOQueryCmd.FieldByName(Trim(TBtnEditC(Controls[i]).Hint)).Value:=Trim(TBtnEditC(Controls[i]).TxtCode); end else if Controls[i] is TcxTimeEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TcxTimeEdit(Controls[i]).Text); end; end; end; end; end; procedure SSetsaveSql(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); var i:Integer; MCode:String; begin with Myparent do begin for i:=0 to ControlCount-1 do begin if Controls[i].Tag=MyTag then begin if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TEdit(Controls[i]).Text); end else if Controls[i] is TRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TRichEdit(Controls[i]).Text; end else if Controls[i] is TcxRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TcxRichEdit(Controls[i]).Text; end else if Controls[i] is TMemo then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TMemo(Controls[i]).Text; end else if Controls[i] is TRTComboBox then begin if (TRTComboBox(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TRTComboBox(Controls[i]).Item2); end else if Controls[i] is TComboBox then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TComboBox(Controls[i]).Text); end else if Controls[i] is TDateTimePicker then begin if TDateTimePicker(Controls[i]).ShowCheckbox then begin if TDateTimePicker(Controls[i]).Checked then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else if Controls[i] is TBtnEditA then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditA(Controls[i]).TxtCode); if (TBtnEditA(Controls[i]).Hint<>'') and (TBtnEditA(Controls[i]).ParentCtl3D=True) then ADOQueryCmd.FieldByName(Trim(TBtnEditA(Controls[i]).Hint)).Value:=Trim(TBtnEditA(Controls[i]).Text); end else if Controls[i] is TBtnEditC then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditC(Controls[i]).TxtCode); //if (TBtnEditC(Controls[i]).Hint<>'') and (TBtnEditC(Controls[i]).ParentCtl3D=True)then //ADOQueryCmd.FieldByName(Trim(TBtnEditC(Controls[i]).Hint)).Value:=Trim(TBtnEditC(Controls[i]).Text); end else if Controls[i] is TcxTimeEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TcxTimeEdit(Controls[i]).Text); end else if Controls[i] is TcxButtonEdit then begin if (TcxButtonEdit(Controls[i]).BeepOnEnter=True) or (TcxButtonEdit(Controls[i]).ParentShowHint=True) then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TcxButtonEdit(Controls[i]).Text); if TcxButtonEdit(Controls[i]).ParentShowHint=False then begin MCode:=Copy(Trim(Controls[i].Name),1,Length(Trim(Controls[i].Name))-4); ADOQueryCmd.FieldByName(MCode).Value:=Trim(TcxButtonEdit(Controls[i]).Hint); end; end; end; end; end; end; procedure SSetsaveSqlNew(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); var i:Integer; MCode:String; begin with Myparent do begin for i:=0 to ControlCount-1 do begin if Controls[i].Tag=MyTag then begin if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TEdit(Controls[i]).Text) else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Null; end else if Controls[i] is TRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TRichEdit(Controls[i]).Text; end else if Controls[i] is TCheckBox then begin if TCheckBox(Controls[i]).Checked=True then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=1 else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=0; end else if Controls[i] is TcxRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TcxRichEdit(Controls[i]).Text; end else if Controls[i] is TMemo then begin IF Trim(TMemo(Controls[i]).Hint)<>'' then ADOQueryCmd.FieldByName(Trim(TMemo(Controls[i]).Hint)).Value:=Trim(TMemo(Controls[i]).Text) else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TMemo(Controls[i]).Text; end else if Controls[i] is TRTComboBox then begin if (TRTComboBox(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TRTComboBox(Controls[i]).Item2); end else if Controls[i] is TComboBox then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TComboBox(Controls[i]).Text); end else if Controls[i] is TDateTimePicker then begin if TDateTimePicker(Controls[i]).ShowCheckbox then begin if TDateTimePicker(Controls[i]).Checked then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=null; end else ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TDateTimePicker(Controls[i]).DateTime; end else if Controls[i] is TBtnEditA then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditA(Controls[i]).Text); if (TBtnEditA(Controls[i]).Hint<>'') then begin if Pos('/',TBtnEditA(Controls[i]).Hint)>0 then begin end else ADOQueryCmd.FieldByName(Trim(TBtnEditA(Controls[i]).Hint)).Value:=Trim(TBtnEditA(Controls[i]).TxtCode); end; end else if Controls[i] is TBtnEditC then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TBtnEditC(Controls[i]).Text); if (TBtnEditC(Controls[i]).Hint<>'') then begin if Pos('/',TBtnEditC(Controls[i]).Hint)>0 then begin end else ADOQueryCmd.FieldByName(Trim(TBtnEditC(Controls[i]).Hint)).Value:=Trim(TBtnEditC(Controls[i]).TxtCode); end; end else if Controls[i] is TcxCurrencyEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TcxCurrencyEdit(Controls[i]).Value; end else if Controls[i] is TcxTimeEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TcxTimeEdit(Controls[i]).Text); end else if Controls[i] is TcxButtonEdit then begin if (TcxButtonEdit(Controls[i]).BeepOnEnter=True) or (TcxButtonEdit(Controls[i]).ParentShowHint=True) then ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TcxButtonEdit(Controls[i]).Text); if TcxButtonEdit(Controls[i]).ParentShowHint=False then begin MCode:=Copy(Trim(Controls[i].Name),1,Length(Trim(Controls[i].Name))-4); ADOQueryCmd.FieldByName(MCode).Value:=Trim(TcxButtonEdit(Controls[i]).Hint); end; end; end; end; end; end; procedure SSetsavedata10(ADOQueryCmd:TADOQuery;MyTable:string; Myparent:TWinControl;MyTag:integer); var i:Integer; FFName:string; begin with Myparent do begin for i:=0 to ControlCount-1 do begin FFName:=Trim(Copy(Controls[i].Name,1,(Length(Controls[i].Name)-1))); if Controls[i].Tag=MyTag then begin if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(FFName).Value:=Trim(TEdit(Controls[i]).Text); end else if Controls[i] is TRichEdit then begin ADOQueryCmd.FieldByName(FFName).Value:=TRichEdit(Controls[i]).Text; end else if Controls[i] is TMemo then begin ADOQueryCmd.FieldByName(FFName).Value:=TMemo(Controls[i]).Text; end; if Controls[i] is TRTComboBox then begin if (TRTComboBox(Controls[i]).Text)<>'' then ADOQueryCmd.FieldByName(FFName).Value:=Trim(TRTComboBox(Controls[i]).Item2); end else if Controls[i] is TComboBox then begin ADOQueryCmd.FieldByName(FFName).Value:=Trim(TComboBox(Controls[i]).Text); end else if Controls[i] is TDateTimePicker then begin if TDateTimePicker(Controls[i]).ShowCheckbox then begin if TDateTimePicker(Controls[i]).Checked then ADOQueryCmd.FieldByName(FFName).Value:=TDateTimePicker(Controls[i]).DateTime; end else ADOQueryCmd.FieldByName(FFName).Value:=TDateTimePicker(Controls[i]).DateTime; end else if Controls[i] is TBtnEditA then begin ADOQueryCmd.FieldByName(FFName).Value:=Trim(TBtnEditA(Controls[i]).TxtCode); end else if Controls[i] is TBtnEditC then begin ADOQueryCmd.FieldByName(FFName).Value:=Trim(TBtnEditC(Controls[i]).TxtCode); end; end; end; end; end; ///////////////////////////////////////////////////// //函数功能:初始化窗口数据 ///////////////////////////////////////////////////// procedure SSetWinData(ADOQueryTmp:TADOQuery;mParent:TWinControl); var i,idx:integer; mfield:string; ma:TA; begin with ADOQueryTmp do begin if isEmpty then exit; with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; if Controls[i].Tag >=999 then continue; mfield:=Controls[i].Name; /////////////////////////// //EDIT if Controls[i] is TEdit then begin { if Trim(Controls[i].Hint)='数值' then continue else } if Trim(fieldByName(mfield).AsString)<>'' then TEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end else if Controls[i] is TRichEdit then begin { if Trim(Controls[i].Hint)='数值' then continue else } if Trim(fieldByName(mfield).AsString)<>'' then TRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //ftcombobox else if Controls[i] is TRTComboBox then begin if Controls[i].Tag =99 then begin idx:=TRTComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end else begin idx:=TRTComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end; end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Items.Count>0 then begin //idx:=getCombIdx(TComboBox(Controls[i]),i,trim(fieldByName(mfield).AsString)); idx:=TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); end else idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TBtnEditA then begin if TBtnEditA(Controls[i]).Tag=1 then begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditA(Controls[i]).text:= trim(fieldByName(mfield+'Name').AsString); end else begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditA(Controls[i]).text:= trim(fieldByName(mfield).AsString); end; end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditC(Controls[i]).text:= trim(fieldByName(mfield+'Name').AsString); end else if Controls[i] is TDateTimePicker then begin if IsEmpty or fieldByName(mfield).IsNull then begin if TDateTimePicker(Controls[i]).Checked then TDateTimePicker(Controls[i]).Date:=strToDate('1990-01-01'); end else TDateTimePicker(Controls[i]).Date:=fieldByName(mfield).AsDateTime; end else if Controls[i] is Tmemo then begin Tmemo(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxRichEdit then begin TcxRichEdit(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxDateEdit then begin if not IsEmpty and not fieldByName(mfield).IsNull then TcxDateEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxTimeEdit then begin if not IsEmpty and ( fieldByName(mfield).AsString<>'') then TcxTimeEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=fieldByName(mfield).AsString; end else if Controls[i] is TcheckBox then begin TcheckBox(Controls[i]).Checked:=fieldByName(mfield).asBoolean; end; end; // end for end; // end with end; //end for with end; procedure SSetWinData30(ADOQueryTmp:TADOQuery;mParent:TWinControl;FTag:Integer); var i,idx:integer; mfield:string; ma:TA; begin with ADOQueryTmp do begin if isEmpty then exit; with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; if Controls[i].Tag<>FTag then continue; mfield:=Controls[i].Name; /////////////////////////// //EDIT if Controls[i] is TEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //ftcombobox else if Controls[i] is TRTComboBox then begin idx:=TRTComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TcxRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Items.Count>0 then begin idx:=TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); end else idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TBtnEditA then begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); if Trim(TBtnEditA(Controls[i]).Hint)<>'' then TBtnEditA(Controls[i]).text:= trim(fieldByName(Trim(TBtnEditA(Controls[i]).Hint)).AsString); end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); if Trim(TBtnEditC(Controls[i]).Hint)<>'' then TBtnEditC(Controls[i]).text:= trim(fieldByName(Trim(TBtnEditC(Controls[i]).Hint)).AsString); end else if Controls[i] is TDateTimePicker then begin if IsEmpty or fieldByName(mfield).IsNull then begin if TDateTimePicker(Controls[i]).Checked then TDateTimePicker(Controls[i]).Date:=strToDate('1990-01-01'); end else TDateTimePicker(Controls[i]).DateTime:=fieldByName(mfield).AsDateTime; end else if Controls[i] is Tmemo then begin Tmemo(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxDateEdit then begin if not IsEmpty and not fieldByName(mfield).IsNull then TcxDateEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxTimeEdit then begin if not IsEmpty and ( fieldByName(mfield).AsString<>'') then TcxTimeEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=fieldByName(mfield).AsString; end else if Controls[i] is TcheckBox then begin TcheckBox(Controls[i]).Checked:=fieldByName(mfield).asBoolean; end else if Controls[i] is TRichEdit then begin TRichEdit(Controls[i]).Text:=fieldbyname(mfield).AsString; end; end; // end for end; // end with end; //end for with end; procedure SClearData(mParent:TWinControl;FTag:Integer); var i,idx:integer; begin with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; if Controls[i].Tag<>FTag then continue; if Controls[i] is TEdit then begin TEdit(Controls[i]).Text:=''; end else if Controls[i] is TRichEdit then begin TRichEdit(Controls[i]).Text:=''; end else if Controls[i] is TcxRichEdit then begin TcxRichEdit(Controls[i]).Text:=''; end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).Text:=''; TBtnEditC(Controls[i]).TxtCode:=''; end else if Controls[i] is TBtnEditA then begin TBtnEditA(Controls[i]).Text:=''; TBtnEditA(Controls[i]).TxtCode:=''; end else if Controls[i] is TComboBox then begin idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end end; end; end; procedure SCSHData(ADOQueryTmp:TADOQuery;mParent:TWinControl;FTag:Integer); var i,idx:integer; mfield,mfieldCode:string; ma:TA; begin with ADOQueryTmp do begin if isEmpty then exit; with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; if Controls[i].Tag<>FTag then continue; mfield:=Controls[i].Name; /////////////////////////// //EDIT if Controls[i] is TEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //ftcombobox else if Controls[i] is TRTComboBox then begin idx:=TRTComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TcxRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Items.Count>0 then begin idx:=TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); end else idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TBtnEditA then begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); if Trim(TBtnEditA(Controls[i]).Hint)<>'' then TBtnEditA(Controls[i]).text:= trim(fieldByName(Trim(TBtnEditA(Controls[i]).Hint)).AsString); end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); if Trim(TBtnEditC(Controls[i]).Hint)<>'' then TBtnEditC(Controls[i]).text:= trim(fieldByName(Trim(TBtnEditC(Controls[i]).Hint)).AsString); end else if Controls[i] is TDateTimePicker then begin if Trim(fieldByName(mfield).AsString)='' then begin TDateTimePicker(Controls[i]).Checked:=False; end else TDateTimePicker(Controls[i]).DateTime:=fieldByName(mfield).AsDateTime; end else if Controls[i] is Tmemo then begin Tmemo(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxDateEdit then begin if not IsEmpty and not fieldByName(mfield).IsNull then TcxDateEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxTimeEdit then begin if not IsEmpty and ( fieldByName(mfield).AsString<>'') then TcxTimeEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=fieldByName(mfield).AsString; end else if Controls[i] is TcheckBox then begin TcheckBox(Controls[i]).Checked:=fieldByName(mfield).asBoolean; end else if Controls[i] is TcxButtonEdit then begin TcxButtonEdit(Controls[i]).Text:=Trim(fieldbyname(mfield).AsString); if TcxButtonEdit(Controls[i]).ParentShowHint=False then begin mfieldCode:=Trim(Copy(mfield,1,Length(mfield)-4)); TcxButtonEdit(Controls[i]).Hint:=Trim(fieldbyname(mfieldCode).AsString); end; end; end; // end for end; // end with end; //end for with end; procedure SCSHDataNew(ADOQueryTmp:TADOQuery;mParent:TWinControl;FTag:Integer); var i,idx:integer; mfield,mfieldCode:string; ma:TA; begin with ADOQueryTmp do begin if isEmpty then exit; with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; if Controls[i].Tag<>FTag then continue; mfield:=Controls[i].Name; /////////////////////////// //EDIT if Controls[i] is TEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString) else TEdit(Controls[i]).Text:=''; end //ftcombobox else if Controls[i] is TRTComboBox then begin idx:=TRTComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TcxRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Items.Count>0 then begin idx:=TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); end else idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TBtnEditA then begin TBtnEditA(Controls[i]).Text := trim(fieldByName(mfield).AsString); if Trim(TBtnEditA(Controls[i]).Hint)<>'' then begin if Pos('/',TBtnEditA(Controls[i]).Hint)>0 then begin end else TBtnEditA(Controls[i]).TxtCode:= trim(fieldByName(Trim(TBtnEditA(Controls[i]).Hint)).AsString); end; end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).Text := trim(fieldByName(mfield).AsString); if Trim(TBtnEditC(Controls[i]).Hint)<>'' then begin if Pos('/',TBtnEditC(Controls[i]).Hint)>0 then begin end else TBtnEditC(Controls[i]).TxtCode:= trim(fieldByName(Trim(TBtnEditC(Controls[i]).Hint)).AsString); end; end else if Controls[i] is TDateTimePicker then begin if Trim(fieldByName(mfield).AsString)='' then begin TDateTimePicker(Controls[i]).Checked:=False; end else TDateTimePicker(Controls[i]).DateTime:=fieldByName(mfield).AsDateTime; end else if Controls[i] is Tmemo then begin Tmemo(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxDateEdit then begin if not IsEmpty and not fieldByName(mfield).IsNull then TcxDateEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxTimeEdit then begin if not IsEmpty and ( fieldByName(mfield).AsString<>'') then TcxTimeEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=fieldByName(mfield).AsString; end else if Controls[i] is TcheckBox then begin if FieldByName(mfield).Value=null then TcheckBox(Controls[i]).Checked:=False else TcheckBox(Controls[i]).Checked:=fieldByName(mfield).asBoolean; end else if Controls[i] is TcxButtonEdit then begin TcxButtonEdit(Controls[i]).Text:=Trim(fieldbyname(mfield).AsString); if TcxButtonEdit(Controls[i]).ParentShowHint=False then begin mfieldCode:=Trim(Copy(mfield,1,Length(mfield)-4)); TcxButtonEdit(Controls[i]).Hint:=Trim(fieldbyname(mfieldCode).AsString); end; end; end; // end for end; // end with end; //end for with end; procedure SCSHDataCDS(CDS_Main:TClientDataSet;mParent:TWinControl;FTag:Integer); var i,idx:integer; mfield,mfieldCode:string; ma:TA; begin with CDS_Main do begin if isEmpty then exit; with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; if Controls[i].Tag<>FTag then continue; mfield:=Controls[i].Name; /////////////////////////// //EDIT if Controls[i] is TEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //ftcombobox else if Controls[i] is TRTComboBox then begin idx:=TRTComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TcxRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Items.Count>0 then begin idx:=TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); end else idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TBtnEditA then begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); if Trim(TBtnEditA(Controls[i]).Hint)<>'' then TBtnEditA(Controls[i]).text:= trim(fieldByName(Trim(TBtnEditA(Controls[i]).Hint)).AsString); end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); if Trim(TBtnEditC(Controls[i]).Hint)<>'' then TBtnEditC(Controls[i]).text:= trim(fieldByName(Trim(TBtnEditC(Controls[i]).Hint)).AsString); end else if Controls[i] is TDateTimePicker then begin if Trim(fieldByName(mfield).AsString)='' then begin TDateTimePicker(Controls[i]).Checked:=False; end else TDateTimePicker(Controls[i]).DateTime:=fieldByName(mfield).AsDateTime; end else if Controls[i] is Tmemo then begin Tmemo(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxDateEdit then begin if not IsEmpty and not fieldByName(mfield).IsNull then TcxDateEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxTimeEdit then begin if not IsEmpty and ( fieldByName(mfield).AsString<>'') then TcxTimeEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=fieldByName(mfield).AsString; end else if Controls[i] is TcheckBox then begin TcheckBox(Controls[i]).Checked:=fieldByName(mfield).asBoolean; end else if Controls[i] is TcxButtonEdit then begin TcxButtonEdit(Controls[i]).Text:=Trim(fieldbyname(mfield).AsString); if TcxButtonEdit(Controls[i]).ParentShowHint=False then begin mfieldCode:=Trim(Copy(mfield,1,Length(mfield)-4)); TcxButtonEdit(Controls[i]).Hint:=Trim(fieldbyname(mfieldCode).AsString); end; end; end; // end for end; // end with end; //end for with end; procedure SCSHDataWTag(ADOQueryTmp:TADOQuery;mParent:TWinControl); var i,idx:integer; mfield,mfieldCode:string; ma:TA; begin with ADOQueryTmp do begin if isEmpty then exit; with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; //if Controls[i].Tag<>FTag then continue; mfield:=Controls[i].Name; /////////////////////////// //EDIT if Controls[i] is TEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //ftcombobox else if Controls[i] is TRTComboBox then begin idx:=TRTComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxRichEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TcxRichEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Items.Count>0 then begin idx:=TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); end else idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TBtnEditA then begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); if Trim(TBtnEditA(Controls[i]).Hint)<>'' then TBtnEditA(Controls[i]).text:= trim(fieldByName(Trim(TBtnEditA(Controls[i]).Hint)).AsString); end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); if Trim(TBtnEditC(Controls[i]).Hint)<>'' then TBtnEditC(Controls[i]).text:= trim(fieldByName(Trim(TBtnEditC(Controls[i]).Hint)).AsString); end else if Controls[i] is TDateTimePicker then begin if Trim(fieldByName(mfield).AsString)='' then begin TDateTimePicker(Controls[i]).Checked:=False; end else TDateTimePicker(Controls[i]).DateTime:=fieldByName(mfield).AsDateTime; end else if Controls[i] is Tmemo then begin Tmemo(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxDateEdit then begin if not IsEmpty and not fieldByName(mfield).IsNull then TcxDateEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxTimeEdit then begin if not IsEmpty and ( fieldByName(mfield).AsString<>'') then TcxTimeEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=fieldByName(mfield).AsString; end else if Controls[i] is TcheckBox then begin TcheckBox(Controls[i]).Checked:=fieldByName(mfield).asBoolean; end else if Controls[i] is TcxButtonEdit then begin TcxButtonEdit(Controls[i]).Text:=Trim(fieldbyname(mfield).AsString); if TcxButtonEdit(Controls[i]).ParentShowHint=False then begin mfieldCode:=Trim(Copy(mfield,1,Length(mfield)-4)); TcxButtonEdit(Controls[i]).Hint:=Trim(fieldbyname(mfieldCode).AsString); end; end; end; // end for end; // end with end; //end for with end; procedure SSetWinData10(ADOQueryTmp:TADOQuery;mParent:TWinControl); var i,idx:integer; mfield:string; ma:TA; begin with ADOQueryTmp do begin if isEmpty then exit; with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; if Controls[i].Tag >=999 then continue; //mfield:=Copy(Trim(Controls[i].Name),1,(Length(Trim(Controls[i].Name))-1)); mfield:=Trim(Controls[i].Name); if Controls[i] is TEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //ftcombobox else if Controls[i] is TRTComboBox then begin if Controls[i].Tag =99 then begin idx:=TRTComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end else begin idx:=TRTComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end; end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Items.Count>0 then begin idx:=TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); end else idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TBtnEditA then begin if TBtnEditA(Controls[i]).Tag=1 then begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditA(Controls[i]).text:= trim(fieldByName(mfield+'Name').AsString); end else begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditA(Controls[i]).text:= trim(fieldByName(mfield).AsString); end; end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditC(Controls[i]).text:= trim(fieldByName(mfield+'Name').AsString); end else if Controls[i] is TDateTimePicker then begin if IsEmpty or fieldByName(mfield).IsNull then begin if TDateTimePicker(Controls[i]).Checked then TDateTimePicker(Controls[i]).Date:=strToDate('1990-01-01'); end else TDateTimePicker(Controls[i]).Date:=fieldByName(mfield).AsDateTime; end else if Controls[i] is Tmemo then begin Tmemo(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxDateEdit then begin if not IsEmpty and not fieldByName(mfield).IsNull then TcxDateEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxTimeEdit then begin if not IsEmpty and ( fieldByName(mfield).AsString<>'') then TcxTimeEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=fieldByName(mfield).AsString; end else if Controls[i] is TcheckBox then begin TcheckBox(Controls[i]).Checked:=fieldByName(mfield).asBoolean; end {else if Controls[i] is TcxLookupComboBox then begin TcxLookupComboBox(Controls[i]).EditValue:=fieldByName(mfield).AsString; TcxLookupComboBox(Controls[i]).EditingText:=fieldByName(mfield+'name').AsString; end}; end; // end for end; // end with end; //end for with end; procedure SSetWinData20(ADOQueryTmp:TADOQuery;mParent:TWinControl); var i,idx:integer; mfield:string; ma:TA; begin with ADOQueryTmp do begin if isEmpty then exit; with mParent do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then continue; if Controls[i].Tag >=999 then continue; mfield:=Copy(Trim(Controls[i].Name),1,(Length(Trim(Controls[i].Name))-1)); //mfield:=Trim(Controls[i].Name); if Controls[i] is TEdit then begin if Trim(fieldByName(mfield).AsString)<>'' then TEdit(Controls[i]).Text:=trim(fieldByName(mfield).AsString); end //ftcombobox else if Controls[i] is TRTComboBox then begin if Controls[i].Tag =99 then begin idx:=TRTComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end else begin idx:=TRTComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString)); TComboBox(Controls[i]).ItemIndex:=idx; end; end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Items.Count>0 then begin idx:=TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); end else idx:=-1; TComboBox(Controls[i]).ItemIndex:=idx; end else if Controls[i] is TBtnEditA then begin if TBtnEditA(Controls[i]).Tag=1 then begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditA(Controls[i]).text:= trim(fieldByName(mfield+'Name').AsString); end else begin TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditA(Controls[i]).text:= trim(fieldByName(mfield).AsString); end; end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString); TBtnEditC(Controls[i]).text:= trim(fieldByName(mfield+'Name').AsString); end else if Controls[i] is TDateTimePicker then begin if IsEmpty or fieldByName(mfield).IsNull then begin if TDateTimePicker(Controls[i]).Checked then TDateTimePicker(Controls[i]).Date:=strToDate('1990-01-01'); end else TDateTimePicker(Controls[i]).Date:=fieldByName(mfield).AsDateTime; end else if Controls[i] is Tmemo then begin Tmemo(Controls[i]).Text :=trim(fieldByName(mfield).AsString); end else if Controls[i] is TcxDateEdit then begin if not IsEmpty and not fieldByName(mfield).IsNull then TcxDateEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxTimeEdit then begin if not IsEmpty and ( fieldByName(mfield).AsString<>'') then TcxTimeEdit(Controls[i]).text :=fieldByName(mfield).AsString; end else if Controls[i] is TcxCurrencyEdit then begin TcxCurrencyEdit(Controls[i]).Text:=fieldByName(mfield).AsString; end else if Controls[i] is TcheckBox then begin TcheckBox(Controls[i]).Checked:=fieldByName(mfield).asBoolean; end {else if Controls[i] is TcxLookupComboBox then begin TcxLookupComboBox(Controls[i]).EditValue:=fieldByName(mfield).AsString; TcxLookupComboBox(Controls[i]).EditingText:=fieldByName(mfield+'name').AsString; end}; end; // end for end; // end with end; //end for with end; ////////////////////////////////////////////// //////函数功能:根据SQL语句删除数据 ////////////////////////////////////////////// function SDelData(ADOQueryCmd:TADOQuery;mDelStr:String):Boolean; begin try result:=False; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add(mDelStr); ExecSQL; end; result:=True; except result:=False; Application.MessageBox('数据删除失败!','提示',0); end; end; //////////////////////////////////////////// ////************获取过滤条件***********///// //////////////////////////////////////////// function SGetFilters(TMPanel:TPanel;EquTag,LikeTag:Integer):string; var i,j,k:Integer; fsj,fsj1:String; begin Result:=''; with TMPanel do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then Continue; if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text)<>'' then begin if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TEdit(Controls[i]).Text)) else if Controls[i].Tag=LikeTag then begin j:=Pos(' ',Trim(TEdit(Controls[i]).Text)); if j>0 then begin Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Copy(Trim(TEdit(Controls[i]).Text),1,j-1 )+'%'); fsj1:=Copy(Trim(TEdit(Controls[i]).Text),j+1,Length(Trim(TEdit(Controls[i]).Text))); while Trim(fsj1)<>'' do begin j:=Pos(' ',Trim(fsj1)); if j>0 then begin Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Copy(Trim(fsj1),1,j-1 )+'%'); fsj1:=Copy(Trim(fsj1),j+1,Length(Trim(fsj1))); end else begin Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(fsj1)+'%'); fsj1:=''; end; end; end else Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(TEdit(Controls[i]).Text)+'%'); end; end; end else if Controls[i] is TBtnEditA then begin if Trim(TBtnEditA(Controls[i]).Text)<>'' then begin if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TBtnEditA(Controls[i]).TxtCode)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+'Name'+' like '+QuotedStr('%'+Trim(TBtnEditA(Controls[i]).Text)+'%') else if Controls[i].Tag=99 then Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr(Trim(TBtnEditA(Controls[i]).Text)+'%'); end; end else if Controls[i] is TBtnEditC then begin if Trim(TBtnEditC(Controls[i]).TxtCode)<>'' then begin if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TBtnEditC(Controls[i]).TxtCode)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+'Name'+' like '+QuotedStr('%'+Trim(TBtnEditC(Controls[i]).Text)+'%'); end; end else if Controls[i] is TRTComboBox then begin if Trim(TRTComboBox(Controls[i]).Text)<>'' then if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TRTComboBox(Controls[i]).Item2)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(TRTComboBox(Controls[i]).Item2)+'%'); end else if Controls[i] is TComboBox then begin if Trim(TComboBox(Controls[i]).Text)<>'' then if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TComboBox(Controls[i]).Text)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(TComboBox(Controls[i]).Text)+'%'); end; end; end; if Trim(Result)<>'' then Result:=Trim(RightBStr(Result,Length(Result)-4)); end; function SGetFiltersHint(TMPanel:TPanel;EquTag,LikeTag:Integer):string; var i,j,k:Integer; fsj,fsj1:String; begin Result:=''; with TMPanel do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then Continue; if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text)<>'' then begin if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Hint+'='+QuotedStr(Trim(TEdit(Controls[i]).Text)) else if Controls[i].Tag=LikeTag then begin j:=Pos(' ',Trim(TEdit(Controls[i]).Text)); if j>0 then begin Result:=Result+'and '+Controls[i].Hint+' like '+QuotedStr('%'+Copy(Trim(TEdit(Controls[i]).Text),1,j-1 )+'%'); fsj1:=Copy(Trim(TEdit(Controls[i]).Text),j+1,Length(Trim(TEdit(Controls[i]).Text))); while Trim(fsj1)<>'' do begin j:=Pos(' ',Trim(fsj1)); if j>0 then begin Result:=Result+'and '+Controls[i].Hint+' like '+QuotedStr('%'+Copy(Trim(fsj1),1,j-1 )+'%'); fsj1:=Copy(Trim(fsj1),j+1,Length(Trim(fsj1))); end else begin Result:=Result+'and '+Controls[i].Hint+' like '+QuotedStr('%'+Trim(fsj1)+'%'); fsj1:=''; end; end; end else Result:=Result+'and '+Controls[i].Hint+' like '+QuotedStr('%'+Trim(TEdit(Controls[i]).Text)+'%'); end; end; end; end; end; if Trim(Result)<>'' then Result:=Trim(RightBStr(Result,Length(Result)-4)); end; function SGetFinds(TMPanel:TPanel;EquTag,LikeTag:Integer):string; var i:Integer; begin Result:=''; with TMPanel do begin for i:=0 to ControlCount-1 do begin if Controls[i] is TLabel then Continue; if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text)<>'' then begin if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TEdit(Controls[i]).Text)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(TEdit(Controls[i]).Text)+'%'); end; end else if Controls[i] is TBtnEditA then begin if Trim(TBtnEditA(Controls[i]).Text)<>'' then begin if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TBtnEditA(Controls[i]).TxtCode)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+'Name'+' like '+QuotedStr('%'+Trim(TBtnEditA(Controls[i]).Text)+'%'); end; end else if Controls[i] is TBtnEditC then begin if Trim(TBtnEditC(Controls[i]).TxtCode)<>'' then begin if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TBtnEditC(Controls[i]).TxtCode)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+'Name'+' like '+QuotedStr('%'+Trim(TBtnEditC(Controls[i]).Text)+'%'); end; end else if Controls[i] is TRTComboBox then begin if Trim(TRTComboBox(Controls[i]).Text)<>'' then if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TRTComboBox(Controls[i]).Item2)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(TRTComboBox(Controls[i]).Item2)+'%'); end else if Controls[i] is TComboBox then begin if Trim(TComboBox(Controls[i]).Text)<>'' then if Controls[i].Tag=EquTag then Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TComboBox(Controls[i]).Text)) else if Controls[i].Tag=LikeTag then Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(TComboBox(Controls[i]).Text)+'%'); end; end; end; end; //////////////////////////////////////////////////////////// //公用过滤函数 //////////////////////////////////////////////////////////// procedure SDofilter(ADOQry:TADOQuery;FilterStr:string); begin try ADOQry.DisableControls; with ADOQry do begin if Trim(FilterStr)='' then begin Filtered:=False; end else begin Filtered:=False; Filter:=FilterStr; Filtered:=True; end; end; finally ADOQry.EnableControls; end; end; procedure SDofilter10(cds_Main:TClientDataSet;FilterStr:string); begin try cds_Main.DisableControls; with cds_Main do begin if Trim(FilterStr)='' then begin Filtered:=False; end else begin Filtered:=False; Filter:=FilterStr; Filtered:=True; end; end; finally cds_Main.EnableControls; end; end; function SGetMaxNo(MyAdoQuery:TADOQuery;MyTable:string;MyField:string;MyFlag:string):String; var fsj:string; i:Integer; begin try result:=''; fsj:=Trim(Formatdatetime('yyyyMMdd',Now)); i:=Length(Trim(MyFlag)); with MyAdoQuery do begin Close; SQL.Clear; sql.Add('select Max('+MyField+') MaxNo from '+MyTable); SQL.Add('where '+MyField+' like '+QuotedStr('%'+fsj+'%')); Open; end; with MyAdoQuery do begin if Trim(fieldbyname('MaxNo').AsString)='' then begin Result:=Trim(MyFlag)+Trim(Formatdatetime('yyyyMMdd',Now))+'1001'; Exit; end; end; {fsj:=Trim(MyAdoQuery.fieldbyname('MaxNo').AsString); with MyAdoQuery1 do begin Close; SQL.Clear; SQL.Add('select Max('+MyField+') MaxNo from '+MyTable); SQL.Add('where '+MyField+' like '+QuotedStr('%'+copy(fsj,3,8)+'%')); Open; ShowMessage(copy(fsj,3,8)); if Trim(fieldbyname('MaxNo').AsString)='' then begin Result:=Trim(MyFlag)+Trim(Formatdatetime('yyyyMMdd',Now))+'1001'; Exit; end; end;} fsj:=Trim(MyAdoQuery.fieldbyname('MaxNo').AsString); result:=Trim(MyFlag)+Trim(Formatdatetime('yyyyMMdd',Now))+IntToStr(StrtoInt(Copy(fsj,i+9,Length(fsj)-i-8))+1); except Result:=''; Application.MessageBox(PChar('字段取值MaxNo有误,查看表<'+Trim(MyTable)+'>及表字段<'+MyField+'>'),'提示',0); end; end; procedure SCreateCDS20(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); var i:integer; mfieldName:string; mSize:integer; begin mfieldName:=''; mClientDataset.FieldDefs.Clear; with SADOQry do begin for i:=0 to fieldCount-1 do // begin if (Fields[i].DataType=ftString) and (Fields[i].Size=0) then begin msize:=1; end else msize:=Fields[i].Size; mfieldName:=trim(fields[i].FieldName); mClientDataset.FieldDefs.Add(mfieldName, Fields[i].DataType,msize); end; end; mClientDataset.FieldDefs.Add('Sflag',ftString,1); mClientDataset.FieldDefs.Add('Sindex',ftInteger,0); mClientDataset.FieldDefs.Add('Ssel',ftBoolean,0); mClientDataset.FieldDefs.Add('SDefNote',ftString,100); mClientDataset.Close; mClientDataset.CreateDataSet; end; procedure SCreateCDSOnly(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); var i:integer; mfieldName:string; mSize:integer; begin mfieldName:=''; mClientDataset.FieldDefs.Clear; with SADOQry do begin for i:=0 to fieldCount-1 do // begin if (Fields[i].DataType=ftString) and (Fields[i].Size=0) then begin msize:=1; end else msize:=Fields[i].Size; mfieldName:=trim(fields[i].FieldName); mClientDataset.FieldDefs.Add(mfieldName, Fields[i].DataType,msize); end; end; mClientDataset.Close; mClientDataset.CreateDataSet; end; procedure InitCDSToCDS(fromADO:TclientDataSet;toCDS:TclientDataSet); var i:integer; begin try with toCDS do begin Append; for i:=0 to fromADO.FieldCount-1 do begin fields[i].value:=fromADO.Fields[i].Value ; end; Post; end; finally end; end; procedure SInitCDSData20(fromADO:TADOQuery;toCDS:TclientDataSet); var i:integer; k:integer; begin if fromADO.IsEmpty then exit; fromADO.first; K:=1; try toCDS.DisableControls; toCDS.Filtered:=false; while not fromADO.Eof do begin with toCDS do begin Append; for i:=0 to fromADO.FieldCount-1 do begin fields[i].value:=fromADO.Fields[i].Value ; end; fieldByName('Sflag').AsString :='1'; fieldByName('Sindex').value :=k; fieldByName('Ssel').value :=false; fieldByName('SDefNote').value :=''; inc(k); Post; end; fromADO.Next; end; if not toCDS.IsEmpty then begin toCDS.First ; end; finally toCDS.EnableControls; end; end; procedure SInitCDSDataOnly(fromADO:TADOQuery;toCDS:TclientDataSet); var i:integer; k:integer; begin if fromADO.IsEmpty then exit; fromADO.first; K:=1; try toCDS.DisableControls; toCDS.Filtered:=false; while not fromADO.Eof do begin with toCDS do begin Append; for i:=0 to fromADO.FieldCount-1 do begin fields[i].value:=fromADO.Fields[i].Value ; end; inc(k); Post; end; fromADO.Next; end; if not toCDS.IsEmpty then begin toCDS.First ; end; finally toCDS.EnableControls; end; end; procedure SInitFtComBoxBySql(ADOQueryTmp:TADOQuery; cb: TRTComboBox;FlagType:string; Boxtype:integer; showMsg:string; emptyFlag:Boolean; mSql:string ); begin with ADOQueryTmp do begin close; sql.clear; sql.Add(mSql); Open; if isEmpty then begin application.MessageBox(pChar(showMsg),'',0); exit; end; cb.Clear; while not EOF do begin if Boxtype=0 then begin cb.Items.Add(trim(fieldByName('Name').AsString)); end else begin cb.AddItem2(trim(fieldByName('Name').AsString),nil,trim(fieldByName('code').AsString)); end; next; end; if not emptyFlag then cb.Items.Add(''); if emptyFlag and (cb.Items.Count >0) then cb.ItemIndex :=0; end; end; procedure SInitComBoxBySql(ADOQueryTmp:TADOQuery; cb: TComboBox; emptyFlag:Boolean; mSql:string ); begin with ADOQueryTmp do begin close; sql.clear; sql.Add(mSql); Open; if isEmpty then begin //plication.MessageBox(pChar(showMsg),'',0); exit; end; cb.Clear; if not emptyFlag then cb.Items.Add(''); while not EOF do begin cb.Items.Add(trim(fieldByName('Name').AsString)); next; end; if emptyFlag and (cb.Items.Count >0) then cb.ItemIndex :=0; end; end; ////////////////////////////////////////////// //函数:初试化combox中的数据 //从XC_CustCode表中取定义数据 //Boxtype:0; 带编号:1; ////////////////////////////////////////////// procedure SInitComBoxByCustCode(ADOQueryTmp:TADOQuery; cb: TComboBox;FlagType:string; Boxtype:integer; showMsg:string; emptyFlag:Boolean ); var A:TA; begin cb.Items.Clear ; with ADOQueryTmp do begin close; sql.clear; sql.Add('exec P_Get_XC_Custcode'); sql.Add(quotedStr(trim(flagType))); Open; if isEmpty then begin application.MessageBox(pChar('客户基础信息维护模块中未找到:'+showMsg),'',0); exit; end; while not EOF do begin if Boxtype=0 then begin cb.Items.Add(trim(fieldByName('name').AsString)); end else begin A := TA.Create(Nil); A.s:= trim(fieldByName('code').AsString); cb.Items.AddObject(trim(fieldByName('name').AsString),TObject(a)); end; next; end; if not emptyFlag then cb.Items.Add(''); if emptyFlag and (cb.Items.Count >0) then cb.ItemIndex :=0; end; end; procedure SInitCxGridComboBoxByCustCode(ADOQueryTmp:TADOQuery;c3:TcxGriddbColumn; FlagType:string;PState:Integer;IsNull:Boolean;Shmeg:string); var A:TA; begin (c3.Properties as TcxComboBoxProperties).Items.Clear ; with ADOQueryTmp do begin close; sql.clear; sql.Add(' select * from XC_CustCode '+ ' where Flag='''+trim(FlagType)+''' '+ ' order by orderno '); Open; if isEmpty then begin Application.MessageBox(PChar('客户基础信息维护模块中未找到:'+shmeg),'',0); exit; end; while not EOF do begin A := TA.Create(Nil); A.s:= trim(fieldByName('Code').AsString); if PState=1 then (c3.Properties as TcxComboBoxProperties).Items.AddObject(trim(fieldByName('name').AsString),TObject(A)) else if PState=0 then begin (c3.Properties as TcxComboBoxProperties).Items.Add(trim(fieldByName('name').AsString)); end; next; end; if not IsNull then (c3.Properties as TcxComboBoxProperties).Items.Add(''); end; end; procedure SInitCxGridComboBoxBySql(ADOQueryTmp:TADOQuery;c3:TcxGriddbColumn;FSql:string; PState:Integer;IsNull:Boolean;Shmeg:string); var A:TA; begin (c3.Properties as TcxComboBoxProperties).Items.Clear ; with ADOQueryTmp do begin close; sql.clear; sql.Add(FSql); Open; if isEmpty then begin //Application.MessageBox(PChar('未找到:'+shmeg),'',0); exit; end; while not EOF do begin A := TA.Create(Nil); A.s:= trim(fieldByName('Code').AsString); if PState=1 then (c3.Properties as TcxComboBoxProperties).Items.AddObject(trim(fieldByName('name').AsString),TObject(A)) else if PState=0 then begin (c3.Properties as TcxComboBoxProperties).Items.Add(trim(fieldByName('name').AsString)); end; next; end; if not IsNull then begin (c3.Properties as TcxComboBoxProperties).Items.Add(''); end; end; end; procedure SInitCxBandGridComboBoxBySql(ADOQueryTmp:TADOQuery;c3:TcxGridDBBandedColumn;FSql:string; PState:Integer;IsNull:Boolean;Shmeg:string); var A:TA; begin (c3.Properties as TcxComboBoxProperties).Items.Clear ; with ADOQueryTmp do begin close; sql.clear; sql.Add(FSql); Open; if isEmpty then begin Application.MessageBox(PChar('未找到:'+shmeg),'',0); exit; end; while not EOF do begin A := TA.Create(Nil); A.s:= trim(fieldByName('Code').AsString); if PState=1 then (c3.Properties as TcxComboBoxProperties).Items.AddObject(trim(fieldByName('name').AsString),TObject(A)) else if PState=0 then begin (c3.Properties as TcxComboBoxProperties).Items.Add(trim(fieldByName('name').AsString)); end; next; end; if not IsNull then begin (c3.Properties as TcxComboBoxProperties).Items.Add(''); end; end; end; /////////////////////////////////////////////////// //*****四舍五入 ***** // ///////////////////////////////////////////////// function SSWR(s: real): real; var r1, r2: real; s1, s2: string; begin r1:= int(s); r2:= frac(s); s1:= copy(floattostr(r1), 1, length(floattostr(r1))); if length(floattostr(r2)) >= 5 then begin if strtoint(copy((floattostr(r2)), 5, 1)) >= 5 then if strtoint(copy((floattostr(r2)), 4, 1)) = 9 then if strtoint(copy((floattostr(r2)), 3, 1)) = 9 then begin s1:= inttostr(strtoint(s1) + 1); s2:= ''; end else S2:= inttostr(strtoint(copy((floattostr(r2)), 3, 1)) + 1) else if copy((floattostr(r2)), 3, 1) = '0' then S2:= '0' + inttostr(strtoint(copy(floattostr(r2), 3, 2)) + 1) else s2:= inttostr(strtoint(copy(floattostr(r2), 3, 2)) + 1) else s2:= copy(floattostr(r2), 3, 2); end else s2:= copy(floattostr(r2), 3, 2); result := strtofloat(s1 + '.' + s2); end; procedure SInitCDSDataSel(fromADO:TADOQuery;toCDS:TclientDataSet); var i:integer; k:integer; begin if fromADO.IsEmpty then exit; fromADO.first; K:=1; try toCDS.DisableControls; toCDS.Filtered:=false; while not fromADO.Eof do begin with toCDS do begin Append; for i:=0 to fromADO.FieldCount-1 do begin fields[i].value:=fromADO.Fields[i].Value ; end; //fieldByName('Sflag').AsString :='1'; //fieldByName('Sindex').value :=k; fieldByName('Ssel').value :=false; inc(k); Post; end; fromADO.Next; end; if not toCDS.IsEmpty then begin toCDS.First ; end; finally toCDS.EnableControls; end; end; procedure SCreateCDSSel(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); var i:integer; mfieldName:string; mSize:integer; begin mfieldName:=''; mClientDataset.FieldDefs.Clear; with SADOQry do begin for i:=0 to fieldCount-1 do // begin if (Fields[i].DataType=ftString) and (Fields[i].Size=0) then begin msize:=1; end else msize:=Fields[i].Size; mfieldName:=trim(fields[i].FieldName); mClientDataset.FieldDefs.Add(mfieldName, Fields[i].DataType,msize); end; end; mClientDataset.FieldDefs.Add('Sflag',ftString,1); mClientDataset.FieldDefs.Add('Sindex',ftInteger,0); mClientDataset.FieldDefs.Add('Ssel',ftBoolean,0); mClientDataset.FieldDefs.Add('SDefNote',ftString,10); mClientDataset.Close; mClientDataset.CreateDataSet; end; //复制增行 procedure CopyAddRow(Tv1:TcxGridDBTableView;CDS_Sub:TClientDataSet); var AA:array[0..50] of string; i,j:Integer; begin if CDS_Sub.IsEmpty then begin CDS_Sub.Append; CDS_Sub.Post; Exit; end; for i:=0 to Tv1.ColumnCount-1 do begin AA[i]:=Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString); end; with CDS_Sub do begin Append; for i:=0 to Tv1.ColumnCount-1 do begin if AA[i]<>'' then begin CDS_Sub.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:=AA[i]; end; end; Post; end; end; procedure CopyAddRowBand(Tv1:TcxGridDBBandedTableView;CDS_Sub:TClientDataSet); var AA:array[0..50] of string; i,j:Integer; begin if CDS_Sub.IsEmpty then begin CDS_Sub.Append; CDS_Sub.Post; Exit; end; for i:=0 to Tv1.ColumnCount-1 do begin AA[i]:=Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString); end; with CDS_Sub do begin Append; for i:=0 to Tv1.ColumnCount-1 do begin if AA[i]<>'' then begin CDS_Sub.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value:=AA[i]; end; end; Post; end; end; //复制增行 procedure CopyAddRowCDS(CDS_Sub:TClientDataSet); var AA:array[0..100] of string; i,j:Integer; begin if CDS_Sub.IsEmpty then Exit; for i:=0 to CDS_Sub.FieldCount-1 do begin AA[i]:=Trim(CDS_Sub.fieldbyname(CDS_Sub.Fields[i].FieldName).AsString); end; with CDS_Sub do begin Append; for i:=0 to CDS_Sub.FieldCount-1 do begin if AA[i]<>'' then begin CDS_Sub.FieldByName(CDS_Sub.Fields[i].FieldName).Value:=AA[i]; end; end; Post; end; end; procedure OneKeyPost(Tv1:TcxGridDBTableView;CDS_Sub:TClientDataSet); var FValue,FFValue,FColumn,FFColumn:String; begin //FColumn:=tv1.Columns[Tv1.Controller.FocusedColumnIndex].DataBinding.FieldName; //FFColumn:=Tv1.Columns[Tv1.Controller.FocusedColumnIndex].Summary.GroupFormat; FColumn:=Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName; FFColumn:=Tv1.Controller.FocusedColumn.Summary.GroupFormat; FValue:=Trim(CDS_Sub.fieldbyname(FColumn).AsString); if Trim(FFColumn)<>'' then begin FFValue:=Trim(CDS_Sub.fieldbyname(FFColumn).AsString); end; with CDS_Sub do begin DisableControls; First; while not Eof do begin Edit; if FValue='' then begin CDS_Sub.FieldByName(FColumn).Value:=null; end else begin CDS_Sub.FieldByName(FColumn).Value:=FValue; end; if Trim(FFColumn)<>'' then begin if FFValue='' then begin CDS_Sub.FieldByName(FFColumn).Value:=null; end else begin CDS_Sub.FieldByName(FFColumn).Value:=FFValue; end; end; Post; Next; end; EnableControls; end; end; /////////////////////////////////////////////////// //函数功能:取流水号 //mFlag:前缀;mTable:表名 //mlen:流水号长度; mtype:是否带日期 1:带 0 不带 /////////////////////////////////////////////////// function GetLSNo(ADOQueryTmp:TADOQuery; var mMaxNo:string; mFlag:string; mTable:string; mlen:integer; mtype:integer=0):Boolean; begin try with ADOQueryTmp do begin Close; sql.Clear ; sql.Add('exec Get_SY_MaxBH '); sql.Add(' '+quotedStr(mFlag)); sql.Add(','+quotedStr(mTable)); sql.Add(','+intTostr(mlen)); sql.Add(','+intTostr(mtype)); //ShowMessage(SQL.Text); Open; if RecordCount>0 then begin mMaxNo:=trim(fieldByName('MaxBH').AsString) ; if mMaxNo<>'' then result:=true else Result:=false; end else begin result:=false; end; end; if not Result then application.MessageBox(Pchar('无法生成流水号('+mflag+')'),'提示信息',MB_ICONINFORMATION); Except result:=false; application.MessageBox(Pchar('无法生成流水号('+mflag+')'),'提示信息',MB_ICONINFORMATION); end; end; procedure ReadCxGrid(fileName:string;cxgrid:TcxGridDBTableView;filePack:string='公用'); var mFileName:string; begin mFileName := ExtractFilePath(Application.ExeName)+'Layout\' +filePack+'\'+trim(fileName)+ '.dbg'; //从布局文件中恢复 if FileExists(mFileName) then cxgrid.RestoreFromIniFile(mFileName,false,false); CreateGroupSummarry(cxgrid); end; /////////////////////////////////////////////////////////////// //函数功能:从文件中读取cxGridCol设置 //fileName 推荐为窗口的caption名字caption名字 /////////////////////////////////////////////////////////////// procedure ReadCxBandedGrid(fileName:string;cxgrid:TcxGridDBBandedTableView;filePack:string='公用'); var mFileName:string; begin mFileName := ExtractFilePath(Application.ExeName)+'Layout\' +filePack+'\'+trim(fileName)+ '.dbg'; //从布局文件中恢复 if FileExists(mFileName) then cxgrid.RestoreFromIniFile(mFileName,false,false); end; /////////////////////////////////////////////////////////////// //函数功能:写cxGridCol设置到.dbg文件中 //默认推荐为窗口的caption名字 /////////////////////////////////////////////////////////////// procedure WriteCxGrid(fileName:string;cxgrid:TcxGridDBTableView;filePack:string='公用'); var mFileName:string; begin mFileName := ExtractFilePath(Application.ExeName)+'Layout\' +filePack+'\'+trim(fileName)+ '.dbg'; if not DirectoryExists(ExtractFileDir(mFileName)) then CreateDir(ExtractFileDir(mFileName)); //保存为布局文件 cxgrid.StoreToIniFile(mFileName); end; /////////////////////////////////////////////////////////////// //函数功能:写cxGridCol设置到.dbg文件中 //默认推荐为窗口的caption名字 /////////////////////////////////////////////////////////////// procedure WriteCxBandedGrid(fileName:string;cxgrid:TcxGridDBBandedTableView;filePack:string='公用'); var mFileName:string; begin mFileName := ExtractFilePath(Application.ExeName)+'Layout\' +filePack+'\'+trim(fileName)+ '.dbg'; if not DirectoryExists(ExtractFileDir(mFileName)) then CreateDir(ExtractFileDir(mFileName)); //保存为布局文件 cxgrid.StoreToIniFile(mFileName); end; procedure CreateGroupSummarry(tv1:TcxGridDBTableView); var csg : TcxDataSummaryGroup; csglink : TcxDataSummaryGroupItemLink; csgItem : TcxDataSummaryItem; i:integer; mFieldName:string; begin ///创建汇总列 with tv1.DataController.Summary do begin try csg := DataController.Summary.SummaryGroups.Add; //创建汇总项 csg.Links.Clear; for i:= 0 to tv1.ColumnCount -1 do begin if not tv1.Columns[i].Visible then continue; mFieldName:=tv1.Columns[i].DataBinding.FieldName; if tv1.Columns[i].Summary.FooterKind=skSum then begin // (tv1.DataController.DataSet.Fields[i] as TNumericField).DisplayFormat := '#,0.00;-#,0.00;#'; //tv1.Columns[i].Summary.FooterFormat:='0.0'; //tv1.Columns[i].Summary.FooterKind := skSum; //这个与Group Row上的汇总同时使用时好象只能有一个有效 //创建行分组行上的汇总项 csgitem := csg.SummaryItems.Add; csgitem.ItemLink := tv1.Columns[i]; //汇总字段1 csgitem.Position :=spGroup; csgitem.Kind := skSum; csgItem.Format := trim(tv1.Columns[i].Caption) +'小计=#,0.0'; tv1.Columns[i].Summary.GroupFooterKind := skSum; tv1.Columns[i].Summary.GroupFooterFormat := '#,0.00'; end else if tv1.Columns[i].Summary.FooterKind=skCount then begin // (tv1.DataController.DataSet.Fields[i] as TNumericField).DisplayFormat := '#,0.00;-#,0.00;#'; //tv1.Columns[i].Summary.FooterFormat:='0.0'; tv1.Columns[i].Summary.FooterKind := skCount; tv1.Columns[i].Summary.GroupFooterKind := skCount; //tv1.Columns[i].Summary.GroupFooterFormat := '#,0.00'; //这个与Group Row上的汇总同时使用时好象只能有一个有效 //创建行分组行上的汇总项 csgitem := csg.SummaryItems.Add; csgitem.ItemLink := tv1.Columns[i]; //汇总字段1 csgitem.Kind := skCount; //csgItem.Format := '小计=#,0.0'; end else begin csglink := csg.Links.Add; csglink.ItemLink := tv1.Columns[i]; //分类字段 //所有不参与汇总的列都有可能用来分组,必须将这些列加入到 //SummaryGroupItemLink中,没有加入该连接的列用来分组时 //汇总值不会显示 end; end; finally end; end; end; procedure TcxGridToExcel(mfileName:string;gridName:TcxGrid); var saveDialog:TSaveDialog; begin try saveDialog:=TSaveDialog.Create(nil); saveDialog.Filter:='xls(*.xls)|*.xls|全部(*.*)|*.*'; saveDialog.Options:=[ofOverwritePrompt]; saveDialog.FileName:=mfileName; if saveDialog.Execute then if Assigned(gridName) then begin try ExportGridToExcel(saveDialog.FileName,gridName,false); except application.MessageBox('创建失败,源文件可能处于编辑状态!','提示信息',0); exit; end; application.MessageBox('成功导出!','提示信息',0); end else application.MessageBox('导出失败!','提示信息',0); finally saveDialog.Free; end; end; function ReadINIFileStr(ininame,TypeName:string;ValueName,ValueMR:String):string; var programIni:Tinifile; //配置文件名 FileName,ValueZS:string; begin FileName:=ExtractFilePath(Paramstr(0))+ininame; programIni:=Tinifile.create(FileName); ValueZS:=programIni.ReadString(TypeName,ValueName,ValueMR); Result:=ValueZS; programIni.Free; end; procedure ColumnView(AdoQueryTemp:TADOQuery;Tv1:TcxGridDBTableView;MKName10:string); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from Table_Column where CxTabName='''+Trim(MKName10)+''' and Owner='''+Trim(DCode)+''''); sql.Add(' and TCNotVisble=1 '); open; end; if ADOQueryTemp.IsEmpty=False then begin with ADOQueryTemp do begin First; while not eof do begin TV1.GetColumnByFieldName(ADOQueryTemp.fieldbyname('ColName').AsString).Visible:=False; TV1.GetColumnByFieldName(ADOQueryTemp.fieldbyname('ColName').AsString).Hidden:=True; Next; end; end; end; end; procedure ColumnBandView(AdoQueryTemp:TADOQuery;Tv1:TcxGridDBBandedTableView;MKName10:string); var fsj:string; begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from Table_Column where CxTabName='''+Trim(MKName10)+''' and Owner='''+Trim(DCode)+''''); sql.Add(' and TCNotVisble=1 '); open; end; if ADOQueryTemp.IsEmpty=False then begin with ADOQueryTemp do begin First; while not eof do begin fsj:=Trim(ADOQueryTemp.fieldbyname('ColName').AsString); // Tv1.Controller.ge Tv1.GetColumnByFieldName(fsj).Visible:=False; Tv1.GetColumnByFieldName(fsj).Hidden:=True; Next; end; end; end; end; procedure GetSWLDZ(IPStr:string); var myip:ulong; mymac:array[0..5] of byte; mymaclength:ulong; r:integer; begin {myip:=inet_addr(PChar(Trim(IPStr))); mymaclength:=length(mymac); r:=sendarp(myip,0,@mymac,@mymaclength); IpCall:=r; IpWLDZStr:=format('%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x',[mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]]);} end; procedure SelOKNo(CDS_MainSel:TClientDataSet;FSel:Boolean); begin if CDS_MainSel.IsEmpty then Exit; CDS_MainSel.DisableControls; with CDS_MainSel do begin First; while not Eof do begin if FieldByName('SSel').AsBoolean=not FSel then begin Edit; FieldByName('SSel').Value:=FSel; Post; end; Next; end; end; CDS_MainSel.EnableControls; end; function num2ceng(strArabic:String):String;//不带小数点数字转换英文 const sw:array[2..9]of string=('twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety'); gw:array[1..19] of string=('one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen'); exp:array[1..4] of string=('','thousand','million','billion'); var t,j,glb,t1 :integer; ts:string; tmp1:AnsiString; rtnStr:AnsiString; function readu1000(ss:string):string; var t,code:integer; rtvStr:AnsiString ; begin rtvStr := ''; while ss[1]='0' do begin delete(ss,1,1); if length(ss)=0 then exit;//控制全是0情况 end; if length(ss)=3 then begin tmp1:= gw[ord(ss[1])-ord('0')]; appendstr(rtvStr ,tmp1); //appendstr(result,' hundred '); appendstr(rtvStr,' hundred '); delete(ss,1,1); end; while ss[1]='0' do begin delete(ss,1,1); if length(ss)=0 then exit; end; if length(ss)<>0 then if rtvStr <> '' then appendstr(AnsiString(rtvStr),AnsiString('and ')); if (glb = 1) and (t1<>1) then //超过百位时候处理最后3位 if rtvStr='' then appendstr(rtvStr,'and '); begin val(ss,t,code); if t<20 then rtvStr :=rtvStr+gw[t] else if t mod 10=0 then rtvStr:=rtvStr+sw[t div 10] else //result := result+sw[trunc(t/10)]+'-'+gw[t mod 10]; rtvStr := rtvStr+sw[trunc(t/10)]+' '+gw[t mod 10]; end; result:=rtvStr; end; begin rtnStr :=''; t := pos('.',strArabic); if t=0 then t:=length(strArabic)+1; while (t mod 3<>1)do begin t:=t+1; strArabic:='0'+ strArabic; end; t1:=(t-1) div 3; for glb:=t1 downto 1 do begin ts:=''; for j:=1 to 3 do begin ts:=ts+ strArabic[1]; delete(strArabic,1,1); end; result := rtnStr + readu1000(ts); if ts<>'000' then rtnStr := rtnStr+' '+exp[glb]+' '; end; if length(strArabic)<>0 then begin delete(strArabic,1,1); appendstr(rtnStr,'and '); rtnStr :=rtnStr + readu1000(strArabic); end; end; function num2cengnum(strArabic:string):string; const gw:array[1..10] of string =('0','one','two','three','four','five','six','seven','eight','nine'); var p,i,j,x:integer; s:string; begin result := ''; s := strarabic; p := pos('.',strarabic); if p = 0 then begin result := num2ceng(strarabic)+'Only'; exit; end else begin i := length(s)-p;//计算小数点后面有几位 delete(strarabic,p,i+1);//删除小数点后面数字 result := num2ceng(strarabic)+'Point'; end; for x:=1 to i do //转换小数点后面数字 begin j:= strtoint(copy(s,p+x,1)); case j of 0: result := result +' '+gw[1]; 1: result := result +' '+gw[2]; 2: result := result +' '+gw[3]; 3: result := result +' '+gw[4]; 4: result := result +' '+gw[5]; 5: result := result +' '+gw[6]; 6: result := result +' '+gw[7]; 7: result := result +' '+gw[8]; 8: result := result +' '+gw[9]; 9: result := result +' '+gw[10]; end; end; end; end.