diff --git a/Delphi7/开发档案/马国钢开发代码/ThreeFun/Fun/U_Fun.pas b/Delphi7/开发档案/马国钢开发代码/ThreeFun/Fun/U_Fun.pas index f58edd9..415904a 100644 --- a/Delphi7/开发档案/马国钢开发代码/ThreeFun/Fun/U_Fun.pas +++ b/Delphi7/开发档案/马国钢开发代码/ThreeFun/Fun/U_Fun.pas @@ -1,4243 +1,4421 @@ -unit U_Fun; - -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,FTComboBox,cxDropDownEdit,cxGridBandedTableView, - cxGridDBBandedTableView,cxRichEdit,cxButtonEdit,IniFiles,WinSock,dxCore,ActiveX; -//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 SCreateCDSYS(SADOQry:TADOQuery; mClientDataset:TclientDataSet ); - procedure SInitCDSDataYS(fromADO:TADOQuery;toCDS:TclientDataSet); - procedure SInitFtComBoxBySql(ADOQueryTmp:TADOQuery; - cb: TFtComboBox;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); - procedure TcxGridToExcelEng(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); - procedure SelOKNoAdo(CDS_MainSel:TADOQuery;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 DelCDS(ClientDataSet1:TClientDataSet;ADOCmd:TADOQuery;DelSql:string); - procedure SInitComBoxByTvColumns(cb:TComboBox; - Tv1:TcxGridDBTableView; - ColumnTag:Integer; - TowFlag:Boolean; - emptyFlag:Boolean); - procedure HJ(mClientDataset:TclientDataSet;Label1:TLabel;mfieldName:double); - function num2cengnumZS(strArabic:string):string; - - function CovFileDate(Fd:_FileTime):TDateTime; - procedure GetFileEditTime(mFile:string;var editTime:tdatetime); - procedure GetFileInfo(mFile:string;var mfileSize:integer;var CreationTime:tdatetime;var WriteTime:tdatetime); - function ExportFtErpFile(mFileName:string;ADORead:TADOQuery):boolean; - function ExportFtErpFile10(mFileName:string;ADORead:TADOQuery):boolean; - procedure UpdateFileTime(FileName:string; CreationTime, LastAccessTime, LastWriteTime:TDateTime); - - procedure ClearOrHideControls(TMPanel: TPanel; HintValue: string; IsClear: Boolean; IsHide: Boolean); - procedure AssignmentControls(TMPanel: TPanel; TMClientDataset: TclientDataSet; Hintvalue: string); - procedure IsVisibleTV(TMPanel: TPanel; MTV: TcxGridDBTableView; Hintvalue: string; IsVisible: Boolean); - function RoundFloat(f: double; i: integer): double; - -implementation -uses U_DataLink,U_SelExportField,U_ColumnSet,U_ColumnBandSet,U_SelPrintFieldNew; - - function RoundFloat(f: double; i: integer): double; -var - s: string; - ef: Extended; -begin - if f = 0 then begin - Result := 0; - Exit; - end; - s := '#.' + StringOfChar('0', i); - if s = '#.' then s := '#'; - ef := StrToFloat(FloatToStr(f)); //ֹ - result := StrToFloat(FormatFloat(s, ef)); -end; - function ExportFtErpFile(mFileName:string;ADORead:TADOQuery):boolean; -var - Stream : TMemoryStream; - ff:TADOBlobstream; - mfileSize:integer; - mCreationTime:TdateTime; - mWriteTime:TdateTime; - IsFileHas:boolean; - mChildPath:string; - mFilePath:string; -begin - try - result:=false; - mChildPath:=''; - /////////////////////////////////////////////// - //ȡļص· - with ADORead do - begin - close; - sql.Clear ; - sql.Add('select FilePath '); - sql.Add('from RT_FileUpdate'); - sql.Add('where FileName='+quotedStr(mFileName)); - Open; - if RecordCount>0 then - begin - // if not fieldByName('valid').AsBoolean then exit; - if trim(fieldByName('FilePath').AsString)<>'' then - mChildPath:=trim(fieldByName('FilePath').AsString)+'\'; - end; - end; - //Ʒ - mFilePath:= ExtractFilePath(Paramstr(0))+mChildPath; - IsFileHas:= FileExists(mFilePath+mFileName); - if IsFileHas then - begin - ////////////////////////// - //ȡļϢ - GetFileInfo(mFilePath+mFileName,mfileSize,mCreationTime,mWriteTime); - end; - ////////////////////////////////////////// - //ļ - if IsFileHas then - begin - with ADORead do - begin - close; - sql.Clear ; - sql.Add('select count(FileName) as cnt '); - sql.Add('from RT_FileUpdate'); - sql.Add('where FileName='+quotedStr(mFileName)); - // sql.Add('and fileEditDate>'''+formatDateTime('yyyy-MM-dd hh:mm',mWriteTime)+''''); - sql.Add(' and DATEDIFF(minute,'+ quotedStr(formatDateTime('yyyy-MM-dd hh:mm',mWriteTime))+',fileEditDate)>0'); - Open; - - - //Ƿµļ - if fieldByName('cnt').AsInteger>0 then - begin - close; - sql.Clear ; - sql.Add('select * '); - sql.Add('from RT_FileUpdate'); - sql.Add('where FileName='+quotedStr(mFileName)); - - Open; - - ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead); - end - else - begin - exit; - end; - - if trim(fieldByName('FilePath').AsString)<>'' then - mChildPath:=trim(fieldByName('FilePath').AsString)+'\'; - end; - end - ////////////////////////////////////// - // - else - begin - with ADORead do - begin - close; - sql.Clear ; - sql.Add('select * '); - sql.Add('from RT_FileUpdate'); - sql.Add('where FileName='+quotedStr(mFileName)); - Open; - - if recordCount>0 then - begin - ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead); - end - else - begin - exit; - end; - - if trim(fieldByName('FilePath').AsString)<>'' then - mChildPath:=trim(fieldByName('FilePath').AsString)+'\'; - end; - - end; - - if ff<>nil then - begin - try - mfileName:=trim(ADORead.fieldByName('FileName').asString); - if not DirectoryExists(ExtractFileDir(mFilePath+mfileName)) then - ForceDirectories(ExtractFileDir(mFilePath+mfileName)); - Stream:= TMemoryStream.Create ; - //OleContainer1.SaveToStream(Stream); - //ADOQuery1FileContent.SaveToFile('tmp'); //ݴʱļ - //OleContainer1.LoadFromFile('tmp'); //ʱļжȡOLE - ff.SaveToStream(Stream); - //OleContainer1.SaveToFile(ExtractFilePath(Paramstr(0))+mfielName) - Stream.SaveToFile(mFilePath+mfileName); //+'\tmpFile\' - - //OleContainer1.SaveToFile('tmp'); - finally - Stream.Free ; - end; - end; - UpdateFileTime(mFilePath+mfileName,ADORead.fieldByName('FileCreateDate').AsDateTime,ADORead.fieldByName('FileEditDate').AsDateTime,ADORead.fieldByName('FileEditDate').AsDateTime); - Result:=true; - except - application.MessageBox(pchar('ȡļ'+mfileName+'ʧ!'),'ʾϢ',0); - end; -end; -function ExportFtErpFile10(mFileName:string;ADORead:TADOQuery):boolean; -var - Stream : TMemoryStream; - ff:TADOBlobstream; - mfileSize:integer; - mCreationTime:TdateTime; - mWriteTime:TdateTime; - IsFileHas:boolean; - mChildPath:string; - mFilePath:string; -begin - try - result:=false; - mChildPath:=''; - /////////////////////////////////////////////// - //ȡļص· - with ADORead do - begin - close; - sql.Clear ; - sql.Add('select FilePath '); - sql.Add('from RT_FileUpdate'); - sql.Add('where FileName='+quotedStr(mFileName)); - Open; - if RecordCount>0 then - begin - // if not fieldByName('valid').AsBoolean then exit; - if trim(fieldByName('FilePath').AsString)<>'' then - mChildPath:='report10\'; - end; - end; - //Ʒ - mFilePath:= ExtractFilePath(Paramstr(0))+mChildPath; - IsFileHas:= FileExists(mFilePath+mFileName); - if IsFileHas then - begin - ////////////////////////// - //ȡļϢ - GetFileInfo(mFilePath+mFileName,mfileSize,mCreationTime,mWriteTime); - end; - ////////////////////////////////////////// - //ļ - if IsFileHas then - begin - with ADORead do - begin - close; - sql.Clear ; - sql.Add('select count(FileName) as cnt '); - sql.Add('from RT_FileUpdate'); - sql.Add('where FileName='+quotedStr(mFileName)); - // sql.Add('and fileEditDate>'''+formatDateTime('yyyy-MM-dd hh:mm',mWriteTime)+''''); - sql.Add(' and DATEDIFF(minute,'+ quotedStr(formatDateTime('yyyy-MM-dd hh:mm',mWriteTime))+',fileEditDate)>0'); - Open; - - - //Ƿµļ - if fieldByName('cnt').AsInteger>0 then - begin - close; - sql.Clear ; - sql.Add('select * '); - sql.Add('from RT_FileUpdate'); - sql.Add('where FileName='+quotedStr(mFileName)); - - Open; - - ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead); - end - else - begin - exit; - end; - - if trim(fieldByName('FilePath').AsString)<>'' then - mChildPath:=trim(fieldByName('FilePath').AsString)+'\'; - end; - end - ////////////////////////////////////// - // - else - begin - with ADORead do - begin - close; - sql.Clear ; - sql.Add('select * '); - sql.Add('from RT_FileUpdate'); - sql.Add('where FileName='+quotedStr(mFileName)); - Open; - - if recordCount>0 then - begin - ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead); - end - else - begin - exit; - end; - - if trim(fieldByName('FilePath').AsString)<>'' then - mChildPath:=trim(fieldByName('FilePath').AsString)+'\'; - end; - - end; - - if ff<>nil then - begin - try - mfileName:=trim(ADORead.fieldByName('FileName').asString); - if not DirectoryExists(ExtractFileDir(mFilePath+mfileName)) then - ForceDirectories(ExtractFileDir(mFilePath+mfileName)); - Stream:= TMemoryStream.Create ; - //OleContainer1.SaveToStream(Stream); - //ADOQuery1FileContent.SaveToFile('tmp'); //ݴʱļ - //OleContainer1.LoadFromFile('tmp'); //ʱļжȡOLE - ff.SaveToStream(Stream); - //OleContainer1.SaveToFile(ExtractFilePath(Paramstr(0))+mfielName) - Stream.SaveToFile(mFilePath+mfileName); //+'\tmpFile\' - - //OleContainer1.SaveToFile('tmp'); - finally - Stream.Free ; - end; - end; - UpdateFileTime(mFilePath+mfileName,ADORead.fieldByName('FileCreateDate').AsDateTime,ADORead.fieldByName('FileEditDate').AsDateTime,ADORead.fieldByName('FileEditDate').AsDateTime); - Result:=true; - except - application.MessageBox(pchar('ȡļ'+mfileName+'ʧ!'),'ʾϢ',0); - end; -end; -procedure UpdateFileTime(FileName:string; CreationTime, LastAccessTime, LastWriteTime:TDateTime); -var - FileHnd : Integer; - SysTime : TSystemTime; - tTzi: TTimezoneInformation; - FCreationTime, FLastAccessTime, FLastWriteTime: TFileTime; -begin - GetTimezoneInformation(tTzi) ; - CreationTime := CreationTime+Ttzi.Bias/1440; - DateTimeToSystemTime(CreationTime,SysTime); - SystemTimeToFileTime(SysTime,FCreationTime); - //LastAccessTime := LastAccessTime + Ttzi.Bias/1440; - //DateTimeToSystemTime(LastAccessTime,SysTime); - //SystemTimeToFileTime(SysTime,FLastAccessTime); - LastWriteTime := LastWriteTime + Ttzi.Bias/1440; - DateTimeToSystemTime(LastWriteTime,SysTime); - SystemTimeToFileTime(SysTime,FLastWriteTime); - try - FileHnd := FileOpen(FileName, fmOpenWrite or fmShareDenyNone); - SetFileTime(FileHnd, @FCreationTime, nil, @FLastWriteTime); - finally - FileClose(FileHnd); - end; -end; -//////////////////////////////////////////////////////// - // -/////////////////////////////////////////////////////// - -procedure GetFileInfo(mFile:string;var mfileSize:integer;var CreationTime:tdatetime;var WriteTime:tdatetime); -var - vSearchRec: TSearchRec; -begin - FindFirst(mFile,faAnyFile,vSearchRec); - mfileSize:=vSearchRec.Size; - CreationTime:=CovFileDate(vSearchRec.FindData.ftCreationTime);//ʱ - //vSearchRec.FindData.ftLastAccessTime//ʱ - WriteTime:=CovFileDate(vSearchRec.FindData.ftLastWriteTime);//޸ʱ - FindClose(vSearchRec); -end; - -procedure GetFileEditTime(mFile:string;var editTime:tdatetime); -var - vSearchRec: TSearchRec; -begin - FindFirst(mFile,faAnyFile,vSearchRec); - //mfileSize:=vSearchRec.Size; - // CreationTime:=CovFileDate(vSearchRec.FindData.ftCreationTime);//ʱ - //vSearchRec.FindData.ftLastAccessTime//ʱ - editTime:=CovFileDate(vSearchRec.FindData.ftLastWriteTime);//޸ʱ - FindClose(vSearchRec); -end; -/////////////////////////////////////////////// - // -///////////////////////////////////////////// -function CovFileDate(Fd:_FileTime):TDateTime; -var - Tct:_SystemTime; - Temp:_FileTime; -begin - FileTimeToLocalFileTime(Fd,Temp); - FileTimeToSystemTime(Temp,Tct); - CovFileDate:=SystemTimeToDateTime(Tct); -end; -/////////////////////////////////////////////////////// - //ر -/////////////////////////////////////////////////////// - -procedure IsVisibleTV(TMPanel: TPanel; MTV: TcxGridDBTableView; Hintvalue: string; IsVisible: Boolean); -var - i, j: integer; -begin - - with TMPanel do - begin - for j := 0 to TMPanel.ControlCount - 1 do - begin - if TMPanel.Controls[j] is TEdit then - begin - if Trim(TEdit(TMPanel.Controls[j]).Hint) = Hintvalue then - begin - with MTV do - begin - for i := 0 to MTV.ColumnCount - 1 do - begin - if Trim(TEdit(TMPanel.Controls[j]).Name) = Trim(MTV.Columns[i].DataBinding.FieldName) then - begin - MTV.Columns[i].Visible := IsVisible; - Continue; - end; - end; - end; - end; - end; - if TMPanel.Controls[j] is TComboBox then - begin - if Trim(TComboBox(TMPanel.Controls[j]).Hint) = Hintvalue then - begin - with MTV do - begin - for i := 0 to MTV.ColumnCount - 1 do - begin - if Trim(TComboBox(TMPanel.Controls[j]).Name) = Trim(MTV.Columns[i].DataBinding.FieldName) then - begin - MTV.Columns[i].Visible := IsVisible; - Continue; - end; - end; - end; - end; - end; - end; - end; -end; -/////////////////////////////////////////////////////// - // -/////////////////////////////////////////////////////// - -procedure AssignmentControls(TMPanel: TPanel; TMClientDataset: TclientDataSet; Hintvalue: string); -var - i: integer; -begin - with TMPanel do - begin - for i := 0 to ControlCount - 1 do - begin - if Controls[i] is TEdit then - begin - if Trim(TEdit(Controls[i]).Hint) = Hintvalue then - begin - TEdit(Controls[i]).Text := Trim(TMClientDataset.FieldByName(TEdit(Controls[i]).Name).AsString); - end; - end; - if Controls[i] is TComboBox then - begin - if Trim(TEdit(Controls[i]).Hint) = Hintvalue then - begin - TComboBox(Controls[i]).ItemIndex := TComboBox(Controls[i]).Items.IndexOf(Trim(TMClientDataset.FieldByName(TComboBox(Controls[i]).Name).AsString)); - end; - end; - end; - end; -end; -/////////////////////////////////////////////////////// - // -/////////////////////////////////////////////////////// - -procedure ClearOrHideControls(TMPanel: TPanel; HintValue: string; IsClear: Boolean; IsHide: Boolean); -var - i: Integer; -begin - with TMPanel do - begin - for i := 0 to ControlCount - 1 do - begin - if Controls[i] is TCheckBox then - begin - if TCheckBox(Controls[i]).Hint = HintValue then - begin - TCheckBox(Controls[i]).Visible := IsHide; - end; - end; - if Controls[i] is TLabel then - begin - if TLabel(Controls[i]).Hint = HintValue then - begin - TLabel(Controls[i]).Visible := IsHide; - end; - end; - if Controls[i] is TComboBox then - begin - if TComboBox(Controls[i]).Hint = HintValue then - begin - TComboBox(Controls[i]).Visible := IsHide; - if IsClear then - TComboBox(Controls[i]).ItemIndex := -1; - end; - end; - if Controls[i] is TEdit then - begin - - if Trim(TEdit(Controls[i]).Hint) = HintValue then - begin - TEdit(Controls[i]).Visible := IsHide; - if IsClear then - TEdit(Controls[i]).Text := ''; - end; - end; - end; - end; -end; -function num2cengnumZS(strArabic:string):string; -var - p,i,j,x:integer; - s,Y: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)+'DOLLORS'; - end; - Y:= copy(s,p,i+1); - result :=result +' '+num2ceng(Y)+' CENTS'; -end; - -procedure HJ(mClientDataset:TclientDataSet;Label1:TLabel;mfieldName:double); +unit U_Fun; + +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, FTComboBox, cxDropDownEdit, + cxGridBandedTableView, cxGridDBBandedTableView, cxRichEdit, cxButtonEdit, + IniFiles, WinSock, dxCore, ActiveX, IdHTTP; +//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 SCreateCDSYS(SADOQry: TADOQuery; mClientDataset: TclientDataSet); + +procedure SInitCDSDataYS(fromADO: TADOQuery; toCDS: TclientDataSet); + +procedure SInitFtComBoxBySql(ADOQueryTmp: TADOQuery; cb: TFtComboBox; 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); + +procedure TcxGridToExcelEng(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 GetHTTP(IdHttp: TIdHTTP; FUrl: 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); + +procedure SelOKNoAdo(CDS_MainSel: TADOQuery; 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 DelCDS(ClientDataSet1: TClientDataSet; ADOCmd: TADOQuery; DelSql: string); + +procedure SInitComBoxByTvColumns(cb: TComboBox; Tv1: TcxGridDBTableView; ColumnTag: Integer; TowFlag: Boolean; emptyFlag: Boolean); + +procedure HJ(mClientDataset: TclientDataSet; Label1: TLabel; mfieldName: double); + +function num2cengnumZS(strArabic: string): string; + +function CovFileDate(Fd: _FileTime): TDateTime; + +procedure GetFileEditTime(mFile: string; var editTime: tdatetime); + +procedure GetFileInfo(mFile: string; var mfileSize: integer; var CreationTime: tdatetime; var WriteTime: tdatetime); + +function ExportFtErpFile(mFileName: string; ADORead: TADOQuery): boolean; + +function ExportFtErpFile10(mFileName: string; ADORead: TADOQuery): boolean; + +procedure UpdateFileTime(FileName: string; CreationTime, LastAccessTime, LastWriteTime: TDateTime); + +procedure ClearOrHideControls(TMPanel: TPanel; HintValue: string; IsClear: Boolean; IsHide: Boolean); + +procedure AssignmentControls(TMPanel: TPanel; TMClientDataset: TclientDataSet; Hintvalue: string); + +procedure IsVisibleTV(TMPanel: TPanel; MTV: TcxGridDBTableView; Hintvalue: string; IsVisible: Boolean); + +function RoundFloat(f: double; i: integer): double; + +implementation + +uses + U_DataLink, U_SelExportField, U_ColumnSet, U_ColumnBandSet, U_SelPrintFieldNew; + +function RoundFloat(f: double; i: integer): double; +var + s: string; + ef: Extended; begin - if mClientDataset.IsEmpty then exit; + if f = 0 then + begin + Result := 0; + Exit; + end; + s := '#.' + StringOfChar('0', i); + if s = '#.' then + s := '#'; + ef := StrToFloat(FloatToStr(f)); //ֹ + result := StrToFloat(FormatFloat(s, ef)); +end; + +function ExportFtErpFile(mFileName: string; ADORead: TADOQuery): boolean; +var + Stream: TMemoryStream; + ff: TADOBlobstream; + mfileSize: integer; + mCreationTime: TdateTime; + mWriteTime: TdateTime; + IsFileHas: boolean; + mChildPath: string; + mFilePath: string; +begin + try + result := false; + mChildPath := ''; + /////////////////////////////////////////////// + //ȡļص· + with ADORead do + begin + close; + sql.Clear; + sql.Add('select FilePath '); + sql.Add('from RT_FileUpdate'); + sql.Add('where FileName=' + quotedStr(mFileName)); + Open; + if RecordCount > 0 then + begin + // if not fieldByName('valid').AsBoolean then exit; + if trim(fieldByName('FilePath').AsString) <> '' then + mChildPath := trim(fieldByName('FilePath').AsString) + '\'; + end; + end; + //Ʒ + mFilePath := ExtractFilePath(Paramstr(0)) + mChildPath; + IsFileHas := FileExists(mFilePath + mFileName); + if IsFileHas then + begin + ////////////////////////// + //ȡļϢ + GetFileInfo(mFilePath + mFileName, mfileSize, mCreationTime, mWriteTime); + end; + ////////////////////////////////////////// + //ļ + if IsFileHas then + begin + with ADORead do + begin + close; + sql.Clear; + sql.Add('select count(FileName) as cnt '); + sql.Add('from RT_FileUpdate'); + sql.Add('where FileName=' + quotedStr(mFileName)); + // sql.Add('and fileEditDate>'''+formatDateTime('yyyy-MM-dd hh:mm',mWriteTime)+''''); + sql.Add(' and DATEDIFF(minute,' + quotedStr(formatDateTime('yyyy-MM-dd hh:mm', mWriteTime)) + ',fileEditDate)>0'); + Open; + + + //Ƿµļ + if fieldByName('cnt').AsInteger > 0 then + begin + close; + sql.Clear; + sql.Add('select * '); + sql.Add('from RT_FileUpdate'); + sql.Add('where FileName=' + quotedStr(mFileName)); + + Open; + + ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead); + end + else + begin + exit; + end; + + if trim(fieldByName('FilePath').AsString) <> '' then + mChildPath := trim(fieldByName('FilePath').AsString) + '\'; + end; + end + ////////////////////////////////////// + // + else + begin + with ADORead do + begin + close; + sql.Clear; + sql.Add('select * '); + sql.Add('from RT_FileUpdate'); + sql.Add('where FileName=' + quotedStr(mFileName)); + Open; + + if recordCount > 0 then + begin + ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead); + end + else + begin + exit; + end; + + if trim(fieldByName('FilePath').AsString) <> '' then + mChildPath := trim(fieldByName('FilePath').AsString) + '\'; + end; + + end; + + if ff <> nil then + begin + try + mFileName := trim(ADORead.fieldByName('FileName').asString); + if not DirectoryExists(ExtractFileDir(mFilePath + mFileName)) then + ForceDirectories(ExtractFileDir(mFilePath + mFileName)); + Stream := TMemoryStream.Create; + //OleContainer1.SaveToStream(Stream); + //ADOQuery1FileContent.SaveToFile('tmp'); //ݴʱļ + //OleContainer1.LoadFromFile('tmp'); //ʱļжȡOLE + ff.SaveToStream(Stream); + //OleContainer1.SaveToFile(ExtractFilePath(Paramstr(0))+mfielName) + Stream.SaveToFile(mFilePath + mFileName); //+'\tmpFile\' + + //OleContainer1.SaveToFile('tmp'); + finally + Stream.Free; + end; + end; + UpdateFileTime(mFilePath + mFileName, ADORead.fieldByName('FileCreateDate').AsDateTime, ADORead.fieldByName('FileEditDate').AsDateTime, ADORead.fieldByName('FileEditDate').AsDateTime); + Result := true; + except + application.MessageBox(pchar('ȡļ' + mFileName + 'ʧ!'), 'ʾϢ', 0); + end; +end; + +function ExportFtErpFile10(mFileName: string; ADORead: TADOQuery): boolean; +var + Stream: TMemoryStream; + ff: TADOBlobstream; + mfileSize: integer; + mCreationTime: TdateTime; + mWriteTime: TdateTime; + IsFileHas: boolean; + mChildPath: string; + mFilePath: string; +begin + try + result := false; + mChildPath := ''; + /////////////////////////////////////////////// + //ȡļص· + with ADORead do + begin + close; + sql.Clear; + sql.Add('select FilePath '); + sql.Add('from RT_FileUpdate'); + sql.Add('where FileName=' + quotedStr(mFileName)); + Open; + if RecordCount > 0 then + begin + // if not fieldByName('valid').AsBoolean then exit; + if trim(fieldByName('FilePath').AsString) <> '' then + mChildPath := 'report10\'; + end; + end; + //Ʒ + mFilePath := ExtractFilePath(Paramstr(0)) + mChildPath; + IsFileHas := FileExists(mFilePath + mFileName); + if IsFileHas then + begin + ////////////////////////// + //ȡļϢ + GetFileInfo(mFilePath + mFileName, mfileSize, mCreationTime, mWriteTime); + end; + ////////////////////////////////////////// + //ļ + if IsFileHas then + begin + with ADORead do + begin + close; + sql.Clear; + sql.Add('select count(FileName) as cnt '); + sql.Add('from RT_FileUpdate'); + sql.Add('where FileName=' + quotedStr(mFileName)); + // sql.Add('and fileEditDate>'''+formatDateTime('yyyy-MM-dd hh:mm',mWriteTime)+''''); + sql.Add(' and DATEDIFF(minute,' + quotedStr(formatDateTime('yyyy-MM-dd hh:mm', mWriteTime)) + ',fileEditDate)>0'); + Open; + + + //Ƿµļ + if fieldByName('cnt').AsInteger > 0 then + begin + close; + sql.Clear; + sql.Add('select * '); + sql.Add('from RT_FileUpdate'); + sql.Add('where FileName=' + quotedStr(mFileName)); + + Open; + + ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead); + end + else + begin + exit; + end; + + if trim(fieldByName('FilePath').AsString) <> '' then + mChildPath := trim(fieldByName('FilePath').AsString) + '\'; + end; + end + ////////////////////////////////////// + // + else + begin + with ADORead do + begin + close; + sql.Clear; + sql.Add('select * '); + sql.Add('from RT_FileUpdate'); + sql.Add('where FileName=' + quotedStr(mFileName)); + Open; + + if recordCount > 0 then + begin + ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead); + end + else + begin + exit; + end; + + if trim(fieldByName('FilePath').AsString) <> '' then + mChildPath := trim(fieldByName('FilePath').AsString) + '\'; + end; + + end; + + if ff <> nil then + begin + try + mFileName := trim(ADORead.fieldByName('FileName').asString); + if not DirectoryExists(ExtractFileDir(mFilePath + mFileName)) then + ForceDirectories(ExtractFileDir(mFilePath + mFileName)); + Stream := TMemoryStream.Create; + //OleContainer1.SaveToStream(Stream); + //ADOQuery1FileContent.SaveToFile('tmp'); //ݴʱļ + //OleContainer1.LoadFromFile('tmp'); //ʱļжȡOLE + ff.SaveToStream(Stream); + //OleContainer1.SaveToFile(ExtractFilePath(Paramstr(0))+mfielName) + Stream.SaveToFile(mFilePath + mFileName); //+'\tmpFile\' + + //OleContainer1.SaveToFile('tmp'); + finally + Stream.Free; + end; + end; + UpdateFileTime(mFilePath + mFileName, ADORead.fieldByName('FileCreateDate').AsDateTime, ADORead.fieldByName('FileEditDate').AsDateTime, ADORead.fieldByName('FileEditDate').AsDateTime); + Result := true; + except + application.MessageBox(pchar('ȡļ' + mFileName + 'ʧ!'), 'ʾϢ', 0); + end; +end; + +procedure UpdateFileTime(FileName: string; CreationTime, LastAccessTime, LastWriteTime: TDateTime); +var + FileHnd: Integer; + SysTime: TSystemTime; + tTzi: TTimezoneInformation; + FCreationTime, FLastAccessTime, FLastWriteTime: TFileTime; +begin + GetTimezoneInformation(tTzi); + CreationTime := CreationTime + tTzi.Bias / 1440; + DateTimeToSystemTime(CreationTime, SysTime); + SystemTimeToFileTime(SysTime, FCreationTime); + //LastAccessTime := LastAccessTime + Ttzi.Bias/1440; + //DateTimeToSystemTime(LastAccessTime,SysTime); + //SystemTimeToFileTime(SysTime,FLastAccessTime); + LastWriteTime := LastWriteTime + tTzi.Bias / 1440; + DateTimeToSystemTime(LastWriteTime, SysTime); + SystemTimeToFileTime(SysTime, FLastWriteTime); + try + FileHnd := FileOpen(FileName, fmOpenWrite or fmShareDenyNone); + SetFileTime(FileHnd, @FCreationTime, nil, @FLastWriteTime); + finally + FileClose(FileHnd); + end; +end; +//////////////////////////////////////////////////////// + // +/////////////////////////////////////////////////////// + +procedure GetFileInfo(mFile: string; var mfileSize: integer; var CreationTime: tdatetime; var WriteTime: tdatetime); +var + vSearchRec: TSearchRec; +begin + FindFirst(mFile, faAnyFile, vSearchRec); + mfileSize := vSearchRec.Size; + CreationTime := CovFileDate(vSearchRec.FindData.ftCreationTime); //ʱ + //vSearchRec.FindData.ftLastAccessTime//ʱ + WriteTime := CovFileDate(vSearchRec.FindData.ftLastWriteTime); //޸ʱ + FindClose(vSearchRec); +end; + +procedure GetFileEditTime(mFile: string; var editTime: tdatetime); +var + vSearchRec: TSearchRec; +begin + FindFirst(mFile, faAnyFile, vSearchRec); + //mfileSize:=vSearchRec.Size; + // CreationTime:=CovFileDate(vSearchRec.FindData.ftCreationTime);//ʱ + //vSearchRec.FindData.ftLastAccessTime//ʱ + editTime := CovFileDate(vSearchRec.FindData.ftLastWriteTime); //޸ʱ + FindClose(vSearchRec); +end; +/////////////////////////////////////////////// + // +///////////////////////////////////////////// + +function CovFileDate(Fd: _FileTime): TDateTime; +var + Tct: _SystemTime; + Temp: _FileTime; +begin + FileTimeToLocalFileTime(Fd, Temp); + FileTimeToSystemTime(Temp, Tct); + CovFileDate := SystemTimeToDateTime(Tct); +end; +/////////////////////////////////////////////////////// + //ر +/////////////////////////////////////////////////////// + +procedure IsVisibleTV(TMPanel: TPanel; MTV: TcxGridDBTableView; Hintvalue: string; IsVisible: Boolean); +var + i, j: integer; +begin + + with TMPanel do + begin + for j := 0 to TMPanel.ControlCount - 1 do + begin + if TMPanel.Controls[j] is TEdit then + begin + if Trim(TEdit(TMPanel.Controls[j]).Hint) = Hintvalue then + begin + with MTV do + begin + for i := 0 to MTV.ColumnCount - 1 do + begin + if Trim(TEdit(TMPanel.Controls[j]).Name) = Trim(MTV.Columns[i].DataBinding.FieldName) then + begin + MTV.Columns[i].Visible := IsVisible; + Continue; + end; + end; + end; + end; + end; + if TMPanel.Controls[j] is TComboBox then + begin + if Trim(TComboBox(TMPanel.Controls[j]).Hint) = Hintvalue then + begin + with MTV do + begin + for i := 0 to MTV.ColumnCount - 1 do + begin + if Trim(TComboBox(TMPanel.Controls[j]).Name) = Trim(MTV.Columns[i].DataBinding.FieldName) then + begin + MTV.Columns[i].Visible := IsVisible; + Continue; + end; + end; + end; + end; + end; + end; + end; +end; +/////////////////////////////////////////////////////// + // +/////////////////////////////////////////////////////// + +procedure AssignmentControls(TMPanel: TPanel; TMClientDataset: TclientDataSet; Hintvalue: string); +var + i: integer; +begin + with TMPanel do + begin + for i := 0 to ControlCount - 1 do + begin + if Controls[i] is TEdit then + begin + if Trim(TEdit(Controls[i]).Hint) = Hintvalue then + begin + TEdit(Controls[i]).Text := Trim(TMClientDataset.FieldByName(TEdit(Controls[i]).Name).AsString); + end; + end; + if Controls[i] is TComboBox then + begin + if Trim(TEdit(Controls[i]).Hint) = Hintvalue then + begin + TComboBox(Controls[i]).ItemIndex := TComboBox(Controls[i]).Items.IndexOf(Trim(TMClientDataset.FieldByName(TComboBox(Controls[i]).Name).AsString)); + end; + end; + end; + end; +end; +/////////////////////////////////////////////////////// + // +/////////////////////////////////////////////////////// + +procedure ClearOrHideControls(TMPanel: TPanel; HintValue: string; IsClear: Boolean; IsHide: Boolean); +var + i: Integer; +begin + with TMPanel do + begin + for i := 0 to ControlCount - 1 do + begin + if Controls[i] is TCheckBox then + begin + if TCheckBox(Controls[i]).Hint = HintValue then + begin + TCheckBox(Controls[i]).Visible := IsHide; + end; + end; + if Controls[i] is TLabel then + begin + if TLabel(Controls[i]).Hint = HintValue then + begin + TLabel(Controls[i]).Visible := IsHide; + end; + end; + if Controls[i] is TComboBox then + begin + if TComboBox(Controls[i]).Hint = HintValue then + begin + TComboBox(Controls[i]).Visible := IsHide; + if IsClear then + TComboBox(Controls[i]).ItemIndex := -1; + end; + end; + if Controls[i] is TEdit then + begin + + if Trim(TEdit(Controls[i]).Hint) = HintValue then + begin + TEdit(Controls[i]).Visible := IsHide; + if IsClear then + TEdit(Controls[i]).Text := ''; + end; + end; + end; + end; +end; + +function num2cengnumZS(strArabic: string): string; +var + p, i, j, x: integer; + s, Y: 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) + 'DOLLORS'; + end; + Y := copy(s, p, i + 1); + result := result + ' ' + num2ceng(Y) + ' CENTS'; +end; + +procedure HJ(mClientDataset: TclientDataSet; Label1: TLabel; mfieldName: double); +begin + if mClientDataset.IsEmpty then + exit; with mClientDataset do begin - if fieldbyname('Ssel').AsBoolean=true then - Label1.Caption:=currtostr(strtoCurr(Label1.Caption)+mfieldName) + if fieldbyname('Ssel').AsBoolean = true then + Label1.Caption := currtostr(strtoCurr(Label1.Caption) + mfieldName) else - Label1.Caption:=currtostr(strtoCurr(Label1.Caption)-mfieldName); + Label1.Caption := currtostr(strtoCurr(Label1.Caption) - mfieldName); 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; -////Զӡ -procedure SelPrintData(FTv:TcxGridDBTableView;FAdoQry:TADOQuery;FTitle:string - ;FLTitle:string;FRTile:string); -var - i,j,k,KK:Integer; - fsj:string; - FOrder,fcolumnName:string; -begin - {if FAdoQry.IsEmpty then Exit; - try - frmSelPrintFieldNew:=TfrmSelPrintFieldNew.Create(Application); - with frmSelPrintFieldNew do - begin - with frmSelPrintFieldNew.PrnGrid do - begin - PrnGrid.Columns.Clear; - frmSelPrintFieldNew.IniName:=FTitle; - for i:=0 to FTv.ColumnCount-1 do - begin - if FTv.Columns[i].Visible=True then - begin - PrnGrid.Columns.Add; - j:=PrnGrid.Columns.Count-1; - PrnGrid.Columns[j].Title.Caption:=FTv.Columns[i].Caption; - PrnGrid.Columns[j].FieldName:=FTv.Columns[i].DataBinding.FieldName; - PrnGrid.Columns[j].Width:=FTv.Columns[i].Width; - if FTv.Columns[i].SortOrder=soAscending then - begin - FOrder:=' '+FTv.Columns[i].DataBinding.FieldName+' '; - end else - if FTv.Columns[i].SortOrder=soDescending then - begin - FOrder:=' '+FTv.Columns[i].DataBinding.FieldName+' DESC'; - end; - end; - end; - end; - FAdoQry.Sort:=FOrder; - frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.TitleMemo.Add(FTitle); - frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.CaptionMsg.LeftMemo.Add(FLTitle); - frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.CaptionMsg.RightMemo.Add(FRTile); - SCreatecds20(FAdoQry,frmSelPrintFieldNew.ClientDataSet1); - SInitCDSData20(FAdoQry,frmSelPrintFieldNew.ClientDataSet1); - if FTv.OptionsView.Footer=True then - begin - if FTv.DataController.Summary.FooterSummaryItems.Count>0 then - begin - frmSelPrintFieldNew.ClientDataSet1.Append; - //frmSelPrintFieldNew.ClientDataSet1.FieldByName('Sindex').Value:=frmSelPrintFieldNew.ClientDataSet1.RecNo+1; - frmSelPrintFieldNew.ClientDataSet1.Post; - KK:=0; - for i:=0 to FTv.ColumnCount-1 do - begin - if FTv.Columns[i].Visible=False then Continue; - - fcolumnName:=FTv.Columns[i].Name; - if FTv.Columns[i].Summary.FooterKind<>sknone then - begin - for k:=0 to FTv.DataController.Summary.FooterSummaryItems.Count-1 do - begin - if TcxGridDBTableSummaryItem(FTv.DataController.Summary.FooterSummaryItems.Items[k]).Column.Name=fcolumnName then - begin - frmSelPrintFieldNew.ClientDataSet1.edit; - frmSelPrintFieldNew.ClientDataSet1.FieldByName(FTv.Columns[i].DataBinding.FieldName).Value:= - FTv.DataController.Summary.FooterSummaryValues[k]; - frmSelPrintFieldNew.ClientDataSet1.Post; - end; - end; - end; - end; - end; - end; - if ShowModal=1 then - begin - - end; - end; - - finally - frmSelPrintFieldNew.Free; - end; } -end; -////Զӡ -procedure SelPrintDataMore(FTv:TcxGridDBTableView;FAdoQry:TADOQuery;FTitle:string - ;FLTitle:string;FRTile:string;FKK:Integer;FiniName:string); -var - i,j,k,KK:Integer; - fsj:string; - FOrder,fcolumnName:string; -begin - {if FAdoQry.IsEmpty then Exit; - try - frmSelPrintFieldNew:=TfrmSelPrintFieldNew.Create(Application); - with frmSelPrintFieldNew do - begin - with frmSelPrintFieldNew.PrnGrid do - begin - PrnGrid.Columns.Clear; - frmSelPrintFieldNew.IniName:=FiniName; - for i:=0 to FTv.ColumnCount-1 do - begin - if FTv.Columns[i].Visible=True then - begin - PrnGrid.Columns.Add; - j:=PrnGrid.Columns.Count-1; - PrnGrid.Columns[j].Title.Caption:=FTv.Columns[i].Caption; - PrnGrid.Columns[j].FieldName:=FTv.Columns[i].DataBinding.FieldName; - PrnGrid.Columns[j].Width:=FTv.Columns[i].Width; - if FTv.Columns[i].SortOrder=soAscending then - begin - FOrder:=' '+FTv.Columns[i].DataBinding.FieldName+' '; - end else - if FTv.Columns[i].SortOrder=soDescending then - begin - FOrder:=' '+FTv.Columns[i].DataBinding.FieldName+' DESC'; - end; - end; - end; - end; - FAdoQry.Sort:=FOrder; - frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.TitleMemo.Add(FTitle); - frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.CaptionMsg.LeftMemo.Add(FLTitle); - frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.CaptionMsg.RightMemo.Add(FRTile); - - SCreatecds20(FAdoQry,frmSelPrintFieldNew.ClientDataSet1); - SInitCDSData20(FAdoQry,frmSelPrintFieldNew.ClientDataSet1); - if FTv.OptionsView.Footer=True then - begin - if FTv.DataController.Summary.FooterSummaryItems.Count>0 then - begin - frmSelPrintFieldNew.ClientDataSet1.Append; - - frmSelPrintFieldNew.ClientDataSet1.Post; - KK:=0; - for i:=0 to FTv.ColumnCount-1 do - begin - - - fcolumnName:=FTv.Columns[i].Name; - if FTv.Columns[i].Summary.FooterKind<>sknone then - begin - if KK=0 then - begin - frmSelPrintFieldNew.ClientDataSet1.edit; - frmSelPrintFieldNew.ClientDataSet1.FieldByName(FTv.Columns[i-FKK].DataBinding.FilterFieldName).Value:='Total'; - frmSelPrintFieldNew.ClientDataSet1.Post; - KK:=99; - end; - for k:=0 to FTv.DataController.Summary.FooterSummaryItems.Count-1 do - begin - if TcxGridDBTableSummaryItem(FTv.DataController.Summary.FooterSummaryItems.Items[k]).Column.Name=fcolumnName then - begin - frmSelPrintFieldNew.ClientDataSet1.edit; - frmSelPrintFieldNew.ClientDataSet1.FieldByName(FTv.Columns[i].DataBinding.FieldName).Value:= - FTv.DataController.Summary.FooterSummaryValues[k]; - frmSelPrintFieldNew.ClientDataSet1.Post; - end; - end; - end; - end; - end; - end; - if ShowModal=1 then - begin - - end; - end; - - finally - frmSelPrintFieldNew.Free; - end;} -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 Tv1.Columns[i].Visible=True 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; - 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 - if Trim(Tv1.Columns[i].DataBinding.FilterFieldName)='' then Continue; - 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:=Trim(Tv1.Columns[i].Summary.GroupFooterFormat); - 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 TFTComboBox then - begin - if (TFTComboBox(Controls[i]).Text)<>'' then - ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TFTComboBox(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 TFTComboBox then - begin - if (TFTComboBox(Controls[i]).Text)<>'' then - ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TFTComboBox(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 TFTComboBox then - begin - if (TFTComboBox(Controls[i]).Text)<>'' then - ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TFTComboBox(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) - 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 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 TFTComboBox then - begin - if (TFTComboBox(Controls[i]).Text)<>'' then - ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TFTComboBox(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 - ADOQueryCmd.FieldByName(Controls[i].Name).Value:=TMemo(Controls[i]).Text; - end else - if Controls[i] is TFTComboBox then - begin - if (TFTComboBox(Controls[i]).Text)<>'' then - ADOQueryCmd.FieldByName(Controls[i].Name).Value:=Trim(TFTComboBox(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 - 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 - 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 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 TFTComboBox then - begin - if (TFTComboBox(Controls[i]).Text)<>'' then - ADOQueryCmd.FieldByName(FFName).Value:=Trim(TFTComboBox(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 TFTComboBox then - begin - if Controls[i].Tag =99 then - begin - idx:=TftComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); - TComboBox(Controls[i]).ItemIndex:=idx; - end - else - begin - idx:=TftComboBox(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 SInitComBoxByTvColumns(cb:TComboBox; - Tv1:TcxGridDBTableView; - ColumnTag:Integer; - TowFlag:Boolean; - emptyFlag:Boolean); -var - A:TA; - i:Integer; -begin - cb.Items.Clear ; - for i:=0 to Tv1.ColumnCount-1 do - begin - if Tv1.Columns[i].Tag=ColumnTag then - begin - if TowFlag=False then - begin - cb.Items.Add(trim(Tv1.Columns[i].Caption)); - end else - begin - A:=TA.Create(Nil); - A.s:=Trim(Tv1.Columns[i].DataBinding.FieldName); - cb.Items.AddObject(Trim(Tv1.Columns[i].Caption),TObject(A)); - end; - end; - end; - if emptyFlag=False then cb.Items.Add(''); - if cb.Items.Count >0 then cb.ItemIndex :=0; -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 TFTComboBox then - begin - idx:=TftComboBox(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 TFTComboBox then - begin - idx:=TftComboBox(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 TFTComboBox then - begin - idx:=TftComboBox(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 - TBtnEditA(Controls[i]).TxtCode:= trim(fieldByName(Trim(TBtnEditA(Controls[i]).Hint)).AsString); - 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 TFTComboBox then - begin - idx:=TftComboBox(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 TFTComboBox then - begin - idx:=TftComboBox(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 TFTComboBox then - begin - if Controls[i].Tag =99 then - begin - idx:=TftComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); - TComboBox(Controls[i]).ItemIndex:=idx; - end - else - begin - idx:=TftComboBox(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 TFTComboBox then - begin - if Controls[i].Tag =99 then - begin - idx:=TftComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); - TComboBox(Controls[i]).ItemIndex:=idx; - end - else - begin - idx:=TftComboBox(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]).TxtCode)+'%') - else if Controls[i].Tag=88 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 TFTComboBox then - begin - if Trim(TFTComboBox(Controls[i]).Text)<>'' then - if Controls[i].Tag=EquTag then - Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TFTComboBox(Controls[i]).Item2)) - else if Controls[i].Tag=LikeTag then - Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(TFTComboBox(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 TFTComboBox then - begin - if Trim(TFTComboBox(Controls[i]).Text)<>'' then - if Controls[i].Tag=EquTag then - Result:=Result+'and '+Controls[i].Name+'='+QuotedStr(Trim(TFTComboBox(Controls[i]).Item2)) - else if Controls[i].Tag=LikeTag then - Result:=Result+'and '+Controls[i].Name+' like '+QuotedStr('%'+Trim(TFTComboBox(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,10); - mClientDataset.Close; - mClientDataset.CreateDataSet; -end; -procedure SCreateCDSYS(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 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 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 SInitCDSDataYS(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 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: TFtComboBox;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 - cb.Clear; - with ADOQueryTmp do - begin - close; - sql.clear; - sql.Add(mSql); - Open; - if isEmpty then - begin - exit; - end; - while not EOF do - begin - cb.Items.Add(trim(fieldByName('Name').AsString)); - next; - end; - - if not emptyFlag then - cb.Items.Add(''); - - 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..1000] 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); - CreateGroupSummarry(cxgrid); -end; -/////////////////////////////////////////////////////////////// - //ܣļжȡcxGridCol - //fileName ƼΪڵcaptioncaption -/////////////////////////////////////////////////////////////// -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); -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); - except - application.MessageBox('ʧ,Դļܴڱ༭״̬!','ʾϢ',0); - exit; - end; - application.MessageBox('ɹ!','ʾϢ',0); - end - else - application.MessageBox('ʧ!','ʾϢ',0); - finally - saveDialog.Free; - end; -end; -procedure TcxGridToExcelEng(mfileName:string;gridName:TcxGrid); -var - saveDialog:TSaveDialog; -begin - try - saveDialog:=TSaveDialog.Create(nil); - saveDialog.Filter:='xls(*.xls)|*.xls|ALL(*.*)|*.*'; - saveDialog.Options:=[ofOverwritePrompt]; - saveDialog.FileName:=mfileName; - if saveDialog.Execute then - if Assigned(gridName) then - begin - try - - ExportGridToExcel(saveDialog.FileName,gridName); - except - application.MessageBox('The source file may be in edit mode!','Prompt message',0); - exit; - end; - application.MessageBox('Export success!','Prompt message',0); - end - else - application.MessageBox('Export failure!','Prompt message',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 SelExportData(FTv:TcxGridDBTableView;FAdoQry:TADOQuery;FTile:string); -var - i,j:Integer; - fsj:string; -begin - if FAdoQry.IsEmpty then Exit; - try - frmSelExportField:=TfrmSelExportField.Create(Application); - with frmSelExportField do - begin - with frmSelExportField.ExpGrid do - begin - // ExpGrid.Columns.Clear; - ExpGrid.ClearItems; - frmSelExportField.IniName:=FTile; - {if FTv.OptionsView.Footer=true then - begin - ExpGrid.OptionsView.Footer:=True; - end else - begin - ExpGrid.OptionsView.Footer:=False; - end; } - ExpGrid.OptionsView.Footer:=FTv.OptionsView.Footer; - for i:=0 to FTv.ColumnCount-1 do - begin - //if FTv.Columns[i].Visible=True then - begin - ExpGrid.CreateColumn; - j:=ExpGrid.ColumnCount-1; - ExpGrid.Columns[j].Caption:=FTv.Columns[i].Caption; - ExpGrid.Columns[i].Visible:=FTv.Columns[i].Visible; - ExpGrid.Columns[j].DataBinding.FieldName:=FTv.Columns[i].DataBinding.FieldName; - ExpGrid.Columns[j].Width:=FTv.Columns[i].Width; - ExpGrid.Columns[i].Summary.FooterKind:=FTv.Columns[i].Summary.FooterKind; - - end; - end; - end; - ExportDataSource.DataSet:=FAdoQry; - FAdoQry.Open; - if ShowModal=1 then - begin - - end; - end; - frmSelExportField.Free; - except - - end; -end; -procedure SelExportDataBand(FTv:TcxGridDBBandedTableView;FAdoQry:TADOQuery;FTile:string); -var - i,j:Integer; - fsj:string; -begin - if FAdoQry.IsEmpty then Exit; - try - frmSelExportField:=TfrmSelExportField.Create(Application); - with frmSelExportField do - begin - with frmSelExportField.ExpGrid do - begin - // ExpGrid.Columns.Clear; - ExpGrid.ClearItems; - frmSelExportField.IniName:=FTile; - {if FTv.OptionsView.Footer=true then - begin - ExpGrid.OptionsView.Footer:=True; - end else - begin - ExpGrid.OptionsView.Footer:=False; - end; } - ExpGrid.OptionsView.Footer:=FTv.OptionsView.Footer; - for i:=0 to FTv.ColumnCount-1 do - begin - if FTv.Columns[i].Visible=True then - begin - ExpGrid.CreateColumn; - j:=ExpGrid.ColumnCount-1; - ExpGrid.Columns[j].Caption:=FTv.Columns[i].Caption; - ExpGrid.Columns[j].DataBinding.FieldName:=FTv.Columns[i].DataBinding.FieldName; - ExpGrid.Columns[j].Width:=FTv.Columns[i].Width; - ExpGrid.Columns[i].Summary.FooterKind:=FTv.Columns[i].Summary.FooterKind; - - end; - end; - end; - ExportDataSource.DataSet:=FAdoQry; - FAdoQry.Open; - if ShowModal=1 then - begin - - end; - end; - frmSelExportField.Free; - except - - end; -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 ColumnSet(TV10:TcxGridDBTableView;MKName10:String); -var - i:Integer; -begin - try - frmColumnSet:=TfrmColumnSet.Create(Application); - with frmColumnSet do - begin - ADOQuery2.DisableControls; - with ADOQuery2 do - begin - Close; - sql.Clear; - sql.Add('select * from Table_Column where 1<>1'); - Open; - end; - SCreateCDS20(ADOQuery2,ClientDataSet2); - SInitCDSData20(ADOQuery2,ClientDataSet2); - ADOQuery2.EnableControls; - MKName:=MKName10; - for i:=0 to TV10.ColumnCount-1 do - begin - with ClientDataSet2 do - begin - Append; - FieldByName('CxTabName').Value:=MKName; - FieldByName('CxColName').Value:=Trim(TV10.Columns[i].Caption); - FieldByName('ColName').Value:=Trim(TV10.Columns[i].DataBinding.FieldName); - Post; - end; - end; - if ShowModal=1 then - begin - - end; - end; - finally - frmColumnSet.Free; - end; -end; -procedure ColumnBandSet(TV10:TcxGridDBBandedTableView;MKName10:String); -var - i:Integer; -begin - try - frmColumnBandSet:=TfrmColumnBandSet.Create(Application); - with frmColumnBandSet do - begin - ADOQuery2.DisableControls; - with ADOQuery2 do - begin - Close; - sql.Clear; - sql.Add('select * from Table_Column where 1<>1'); - Open; - end; - SCreateCDS20(ADOQuery2,ClientDataSet2); - SInitCDSData20(ADOQuery2,ClientDataSet2); - ADOQuery2.EnableControls; - MKName:=MKName10; - for i:=0 to TV10.ColumnCount-1 do - begin - with ClientDataSet2 do - begin - Append; - FieldByName('CxTabName').Value:=Trim(TV10.Bands[TV10.Columns[i].Position.BandIndex].Caption); - FieldByName('CxColName').Value:=Trim(TV10.Columns[i].Caption); - FieldByName('ColName').Value:=Trim(TV10.Columns[i].DataBinding.FieldName); - FieldByName('OrderNo').Value:=i; - Post; - end; - end; - ADOQuery5.DisableControls; - with ADOQuery5 do - begin - Close; - sql.Clear; - sql.Add('select * from Table_Name where 1<>1'); - Open; - end; - SCreateCDS20(ADOQuery5,CDSName); - SInitCDSData20(ADOQuery5,CDSName); - ADOQuery2.EnableControls; - MKName:=MKName10; - for i:=0 to TV10.Bands.Count-1 do - begin - with CDSName do - begin - Append; - FieldByName('CxTabName').Value:=Trim(TV10.Bands[i].Caption); - FieldByName('OrderNo').Value:=i; - Post; - end; - end; - if ShowModal=1 then - begin - - end; - end; - finally - frmColumnBandSet.Free; - 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; - -procedure SelOKNoAdo(CDS_MainSel:TADOQuery;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; - function readu1000(ss:string):string; - var - t,code:integer; - begin - result := ''; - while ss[1]='0' do - begin - delete(ss,1,1); - if length(ss)=0 then exit;//ȫ0 - end; - if length(ss)=3 then - begin - appendstr(result,gw[ord(ss[1])-ord('0')]); - //appendstr(result,' hundred '); - appendstr(result,' 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 result <> '' then appendstr(result,'and '); - if (glb = 1) and (t1<>1) then //λʱ3λ - if result='' then appendstr(result,'and '); - begin - val(ss,t,code); - if t<20 then result :=result+gw[t] - else if t mod 10=0 then result:=result+sw[t div 10] - else - //result := result+sw[trunc(t/10)]+'-'+gw[t mod 10]; - result := result+sw[trunc(t/10)]+' '+gw[t mod 10]; - end; - end; -begin - result :=''; - 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 := result + readu1000(ts); - if ts<>'000' then result := result+' '+exp[glb]+' '; - end; - if length(strArabic)<>0 then - begin - delete(strArabic,1,1); - appendstr(result,'and '); - result :=result + 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; -procedure DelCDS(ClientDataSet1:TClientDataSet;ADOCmd:TADOQuery;DelSql:string); -begin - if ClientDataSet1.IsEmpty then Exit; - if Trim(ClientDataSet1.fieldbyname('ZSID').AsString)<>'' then - begin - if Application.MessageBox('ȷҪɾ','ʾ',32+4)<>IDYES then Exit; - with ADOCmd do - begin - Close; - SQL.Clear; - sql.Add(DelSql); - ExecSQL; - end; - end; - ClientDataSet1.Delete; -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 GetHTTP(IdHttp: TIdHTTP; FUrl: string); +var + ResponseStream: TStringStream; //Ϣ + ResponseStr: string; +begin + //IDHTTPؼ + IdHttp := TIdHTTP.Create(nil); + IdHttp.HTTPOptions := IdHttp.HTTPOptions + [hoKeepOrigProtocol]; + //TStringStreamڱӦϢ + ResponseStream := TStringStream.Create(''); + try + try + IdHttp.Get(FUrl, ResponseStream); //ַ + except + on e: Exception do + begin + ShowMessage(e.Message); + end; + end; + //ȡҳصϢ + ResponseStr := ResponseStream.DataString; + //ҳеĴʱҪUTF8 + ResponseStr := UTF8Decode(ResponseStr); +// ShowMessage(ResponseStr); + finally + IdHttp.Free; + ResponseStream.Free; + end; +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; +////Զӡ + +procedure SelPrintData(FTv: TcxGridDBTableView; FAdoQry: TADOQuery; FTitle: string; FLTitle: string; FRTile: string); +var + i, j, k, KK: Integer; + fsj: string; + FOrder, fcolumnName: string; +begin + {if FAdoQry.IsEmpty then Exit; + try + frmSelPrintFieldNew:=TfrmSelPrintFieldNew.Create(Application); + with frmSelPrintFieldNew do + begin + with frmSelPrintFieldNew.PrnGrid do + begin + PrnGrid.Columns.Clear; + frmSelPrintFieldNew.IniName:=FTitle; + for i:=0 to FTv.ColumnCount-1 do + begin + if FTv.Columns[i].Visible=True then + begin + PrnGrid.Columns.Add; + j:=PrnGrid.Columns.Count-1; + PrnGrid.Columns[j].Title.Caption:=FTv.Columns[i].Caption; + PrnGrid.Columns[j].FieldName:=FTv.Columns[i].DataBinding.FieldName; + PrnGrid.Columns[j].Width:=FTv.Columns[i].Width; + if FTv.Columns[i].SortOrder=soAscending then + begin + FOrder:=' '+FTv.Columns[i].DataBinding.FieldName+' '; + end else + if FTv.Columns[i].SortOrder=soDescending then + begin + FOrder:=' '+FTv.Columns[i].DataBinding.FieldName+' DESC'; + end; + end; + end; + end; + FAdoQry.Sort:=FOrder; + frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.TitleMemo.Add(FTitle); + frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.CaptionMsg.LeftMemo.Add(FLTitle); + frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.CaptionMsg.RightMemo.Add(FRTile); + SCreatecds20(FAdoQry,frmSelPrintFieldNew.ClientDataSet1); + SInitCDSData20(FAdoQry,frmSelPrintFieldNew.ClientDataSet1); + if FTv.OptionsView.Footer=True then + begin + if FTv.DataController.Summary.FooterSummaryItems.Count>0 then + begin + frmSelPrintFieldNew.ClientDataSet1.Append; + //frmSelPrintFieldNew.ClientDataSet1.FieldByName('Sindex').Value:=frmSelPrintFieldNew.ClientDataSet1.RecNo+1; + frmSelPrintFieldNew.ClientDataSet1.Post; + KK:=0; + for i:=0 to FTv.ColumnCount-1 do + begin + if FTv.Columns[i].Visible=False then Continue; + + fcolumnName:=FTv.Columns[i].Name; + if FTv.Columns[i].Summary.FooterKind<>sknone then + begin + for k:=0 to FTv.DataController.Summary.FooterSummaryItems.Count-1 do + begin + if TcxGridDBTableSummaryItem(FTv.DataController.Summary.FooterSummaryItems.Items[k]).Column.Name=fcolumnName then + begin + frmSelPrintFieldNew.ClientDataSet1.edit; + frmSelPrintFieldNew.ClientDataSet1.FieldByName(FTv.Columns[i].DataBinding.FieldName).Value:= + FTv.DataController.Summary.FooterSummaryValues[k]; + frmSelPrintFieldNew.ClientDataSet1.Post; + end; + end; + end; + end; + end; + end; + if ShowModal=1 then + begin + + end; + end; + + finally + frmSelPrintFieldNew.Free; + end; } +end; +////Զӡ + +procedure SelPrintDataMore(FTv: TcxGridDBTableView; FAdoQry: TADOQuery; FTitle: string; FLTitle: string; FRTile: string; FKK: Integer; FiniName: string); +var + i, j, k, KK: Integer; + fsj: string; + FOrder, fcolumnName: string; +begin + {if FAdoQry.IsEmpty then Exit; + try + frmSelPrintFieldNew:=TfrmSelPrintFieldNew.Create(Application); + with frmSelPrintFieldNew do + begin + with frmSelPrintFieldNew.PrnGrid do + begin + PrnGrid.Columns.Clear; + frmSelPrintFieldNew.IniName:=FiniName; + for i:=0 to FTv.ColumnCount-1 do + begin + if FTv.Columns[i].Visible=True then + begin + PrnGrid.Columns.Add; + j:=PrnGrid.Columns.Count-1; + PrnGrid.Columns[j].Title.Caption:=FTv.Columns[i].Caption; + PrnGrid.Columns[j].FieldName:=FTv.Columns[i].DataBinding.FieldName; + PrnGrid.Columns[j].Width:=FTv.Columns[i].Width; + if FTv.Columns[i].SortOrder=soAscending then + begin + FOrder:=' '+FTv.Columns[i].DataBinding.FieldName+' '; + end else + if FTv.Columns[i].SortOrder=soDescending then + begin + FOrder:=' '+FTv.Columns[i].DataBinding.FieldName+' DESC'; + end; + end; + end; + end; + FAdoQry.Sort:=FOrder; + frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.TitleMemo.Add(FTitle); + frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.CaptionMsg.LeftMemo.Add(FLTitle); + frmSelPrintFieldNew.RMPrintDBGrid1.PageCaptionMsg.CaptionMsg.RightMemo.Add(FRTile); + + SCreatecds20(FAdoQry,frmSelPrintFieldNew.ClientDataSet1); + SInitCDSData20(FAdoQry,frmSelPrintFieldNew.ClientDataSet1); + if FTv.OptionsView.Footer=True then + begin + if FTv.DataController.Summary.FooterSummaryItems.Count>0 then + begin + frmSelPrintFieldNew.ClientDataSet1.Append; + + frmSelPrintFieldNew.ClientDataSet1.Post; + KK:=0; + for i:=0 to FTv.ColumnCount-1 do + begin + + + fcolumnName:=FTv.Columns[i].Name; + if FTv.Columns[i].Summary.FooterKind<>sknone then + begin + if KK=0 then + begin + frmSelPrintFieldNew.ClientDataSet1.edit; + frmSelPrintFieldNew.ClientDataSet1.FieldByName(FTv.Columns[i-FKK].DataBinding.FilterFieldName).Value:='Total'; + frmSelPrintFieldNew.ClientDataSet1.Post; + KK:=99; + end; + for k:=0 to FTv.DataController.Summary.FooterSummaryItems.Count-1 do + begin + if TcxGridDBTableSummaryItem(FTv.DataController.Summary.FooterSummaryItems.Items[k]).Column.Name=fcolumnName then + begin + frmSelPrintFieldNew.ClientDataSet1.edit; + frmSelPrintFieldNew.ClientDataSet1.FieldByName(FTv.Columns[i].DataBinding.FieldName).Value:= + FTv.DataController.Summary.FooterSummaryValues[k]; + frmSelPrintFieldNew.ClientDataSet1.Post; + end; + end; + end; + end; + end; + end; + if ShowModal=1 then + begin + + end; + end; + + finally + frmSelPrintFieldNew.Free; + end;} +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 Tv1.Columns[i].Visible = True 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; + 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 + if Trim(Tv1.Columns[i].DataBinding.FilterFieldName) = '' then + Continue; + 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 := Trim(Tv1.Columns[i].Summary.GroupFooterFormat); + 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 TFTComboBox then + begin + if (TFTComboBox(Controls[i]).Text) <> '' then + ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TFTComboBox(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 TFTComboBox then + begin + if (TFTComboBox(Controls[i]).Text) <> '' then + ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TFTComboBox(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 TFTComboBox then + begin + if (TFTComboBox(Controls[i]).Text) <> '' then + ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TFTComboBox(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) + 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 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 TFTComboBox then + begin + if (TFTComboBox(Controls[i]).Text) <> '' then + ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TFTComboBox(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 + ADOQueryCmd.FieldByName(Controls[i].Name).Value := TMemo(Controls[i]).Text; + end + else if Controls[i] is TFTComboBox then + begin + if (TFTComboBox(Controls[i]).Text) <> '' then + ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TFTComboBox(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 + 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 + 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 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 TFTComboBox then + begin + if (TFTComboBox(Controls[i]).Text) <> '' then + ADOQueryCmd.FieldByName(FFName).Value := Trim(TFTComboBox(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 TFTComboBox then + begin + if Controls[i].Tag = 99 then + begin + idx := TftComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); + TComboBox(Controls[i]).ItemIndex := idx; + end + else + begin + idx := TftComboBox(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 SInitComBoxByTvColumns(cb: TComboBox; Tv1: TcxGridDBTableView; ColumnTag: Integer; TowFlag: Boolean; emptyFlag: Boolean); +var + A: TA; + i: Integer; +begin + cb.Items.Clear; + for i := 0 to Tv1.ColumnCount - 1 do + begin + if Tv1.Columns[i].Tag = ColumnTag then + begin + if TowFlag = False then + begin + cb.Items.Add(trim(Tv1.Columns[i].Caption)); + end + else + begin + A := TA.Create(nil); + A.s := Trim(Tv1.Columns[i].DataBinding.FieldName); + cb.Items.AddObject(Trim(Tv1.Columns[i].Caption), TObject(A)); + end; + end; + end; + if emptyFlag = False then + cb.Items.Add(''); + if cb.Items.Count > 0 then + cb.ItemIndex := 0; +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 TFTComboBox then + begin + idx := TftComboBox(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 TFTComboBox then + begin + idx := TftComboBox(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 TFTComboBox then + begin + idx := TftComboBox(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 + TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(Trim(TBtnEditA(Controls[i]).Hint)).AsString); + 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 TFTComboBox then + begin + idx := TftComboBox(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 TFTComboBox then + begin + idx := TftComboBox(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 TFTComboBox then + begin + if Controls[i].Tag = 99 then + begin + idx := TftComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); + TComboBox(Controls[i]).ItemIndex := idx; + end + else + begin + idx := TftComboBox(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 TFTComboBox then + begin + if Controls[i].Tag = 99 then + begin + idx := TftComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString)); + TComboBox(Controls[i]).ItemIndex := idx; + end + else + begin + idx := TftComboBox(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]).TxtCode) + '%') + else if Controls[i].Tag = 88 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 TFTComboBox then + begin + if Trim(TFTComboBox(Controls[i]).Text) <> '' then + if Controls[i].Tag = EquTag then + Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TFTComboBox(Controls[i]).Item2)) + else if Controls[i].Tag = LikeTag then + Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Trim(TFTComboBox(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 TFTComboBox then + begin + if Trim(TFTComboBox(Controls[i]).Text) <> '' then + if Controls[i].Tag = EquTag then + Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TFTComboBox(Controls[i]).Item2)) + else if Controls[i].Tag = LikeTag then + Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Trim(TFTComboBox(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, 10); + mClientDataset.Close; + mClientDataset.CreateDataSet; +end; + +procedure SCreateCDSYS(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 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 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 SInitCDSDataYS(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 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: TFtComboBox; 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 + cb.Clear; + with ADOQueryTmp do + begin + close; + sql.clear; + sql.Add(mSql); + Open; + if isEmpty then + begin + exit; + end; + while not EOF do + begin + cb.Items.Add(trim(fieldByName('Name').AsString)); + next; + end; + + if not emptyFlag then + cb.Items.Add(''); + + 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..1000] 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); + CreateGroupSummarry(cxgrid); +end; +/////////////////////////////////////////////////////////////// + //ܣļжȡcxGridCol + //fileName ƼΪڵcaptioncaption +/////////////////////////////////////////////////////////////// + +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); +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); + except + application.MessageBox('ʧ,Դļܴڱ༭״̬!', 'ʾϢ', 0); + exit; + end; + application.MessageBox('ɹ!', 'ʾϢ', 0); + end + else + application.MessageBox('ʧ!', 'ʾϢ', 0); + finally + saveDialog.Free; + end; +end; + +procedure TcxGridToExcelEng(mfileName: string; gridName: TcxGrid); +var + saveDialog: TSaveDialog; +begin + try + saveDialog := TSaveDialog.Create(nil); + saveDialog.Filter := 'xls(*.xls)|*.xls|ALL(*.*)|*.*'; + saveDialog.Options := [ofOverwritePrompt]; + saveDialog.FileName := mfileName; + if saveDialog.Execute then + if Assigned(gridName) then + begin + try + + ExportGridToExcel(saveDialog.FileName, gridName); + except + application.MessageBox('The source file may be in edit mode!', 'Prompt message', 0); + exit; + end; + application.MessageBox('Export success!', 'Prompt message', 0); + end + else + application.MessageBox('Export failure!', 'Prompt message', 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 SelExportData(FTv: TcxGridDBTableView; FAdoQry: TADOQuery; FTile: string); +var + i, j: Integer; + fsj: string; +begin + if FAdoQry.IsEmpty then + Exit; + try + frmSelExportField := TfrmSelExportField.Create(Application); + with frmSelExportField do + begin + with frmSelExportField.ExpGrid do + begin + // ExpGrid.Columns.Clear; + ExpGrid.ClearItems; + frmSelExportField.IniName := FTile; + {if FTv.OptionsView.Footer=true then + begin + ExpGrid.OptionsView.Footer:=True; + end else + begin + ExpGrid.OptionsView.Footer:=False; + end; } + ExpGrid.OptionsView.Footer := FTv.OptionsView.Footer; + for i := 0 to FTv.ColumnCount - 1 do + begin + //if FTv.Columns[i].Visible=True then + begin + ExpGrid.CreateColumn; + j := ExpGrid.ColumnCount - 1; + ExpGrid.Columns[j].Caption := FTv.Columns[i].Caption; + ExpGrid.Columns[i].Visible := FTv.Columns[i].Visible; + ExpGrid.Columns[j].DataBinding.FieldName := FTv.Columns[i].DataBinding.FieldName; + ExpGrid.Columns[j].Width := FTv.Columns[i].Width; + ExpGrid.Columns[i].Summary.FooterKind := FTv.Columns[i].Summary.FooterKind; + + end; + end; + end; + ExportDataSource.DataSet := FAdoQry; + FAdoQry.Open; + if ShowModal = 1 then + begin + + end; + end; + frmSelExportField.Free; + except + + end; +end; + +procedure SelExportDataBand(FTv: TcxGridDBBandedTableView; FAdoQry: TADOQuery; FTile: string); +var + i, j: Integer; + fsj: string; +begin + if FAdoQry.IsEmpty then + Exit; + try + frmSelExportField := TfrmSelExportField.Create(Application); + with frmSelExportField do + begin + with frmSelExportField.ExpGrid do + begin + // ExpGrid.Columns.Clear; + ExpGrid.ClearItems; + frmSelExportField.IniName := FTile; + {if FTv.OptionsView.Footer=true then + begin + ExpGrid.OptionsView.Footer:=True; + end else + begin + ExpGrid.OptionsView.Footer:=False; + end; } + ExpGrid.OptionsView.Footer := FTv.OptionsView.Footer; + for i := 0 to FTv.ColumnCount - 1 do + begin + if FTv.Columns[i].Visible = True then + begin + ExpGrid.CreateColumn; + j := ExpGrid.ColumnCount - 1; + ExpGrid.Columns[j].Caption := FTv.Columns[i].Caption; + ExpGrid.Columns[j].DataBinding.FieldName := FTv.Columns[i].DataBinding.FieldName; + ExpGrid.Columns[j].Width := FTv.Columns[i].Width; + ExpGrid.Columns[i].Summary.FooterKind := FTv.Columns[i].Summary.FooterKind; + + end; + end; + end; + ExportDataSource.DataSet := FAdoQry; + FAdoQry.Open; + if ShowModal = 1 then + begin + + end; + end; + frmSelExportField.Free; + except + + end; +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 ColumnSet(TV10: TcxGridDBTableView; MKName10: string); +var + i: Integer; +begin + try + frmColumnSet := TfrmColumnSet.Create(Application); + with frmColumnSet do + begin + ADOQuery2.DisableControls; + with ADOQuery2 do + begin + Close; + sql.Clear; + sql.Add('select * from Table_Column where 1<>1'); + Open; + end; + SCreateCDS20(ADOQuery2, ClientDataSet2); + SInitCDSData20(ADOQuery2, ClientDataSet2); + ADOQuery2.EnableControls; + MKName := MKName10; + for i := 0 to TV10.ColumnCount - 1 do + begin + with ClientDataSet2 do + begin + Append; + FieldByName('CxTabName').Value := MKName; + FieldByName('CxColName').Value := Trim(TV10.Columns[i].Caption); + FieldByName('ColName').Value := Trim(TV10.Columns[i].DataBinding.FieldName); + Post; + end; + end; + if ShowModal = 1 then + begin + + end; + end; + finally + frmColumnSet.Free; + end; +end; + +procedure ColumnBandSet(TV10: TcxGridDBBandedTableView; MKName10: string); +var + i: Integer; +begin + try + frmColumnBandSet := TfrmColumnBandSet.Create(Application); + with frmColumnBandSet do + begin + ADOQuery2.DisableControls; + with ADOQuery2 do + begin + Close; + sql.Clear; + sql.Add('select * from Table_Column where 1<>1'); + Open; + end; + SCreateCDS20(ADOQuery2, ClientDataSet2); + SInitCDSData20(ADOQuery2, ClientDataSet2); + ADOQuery2.EnableControls; + MKName := MKName10; + for i := 0 to TV10.ColumnCount - 1 do + begin + with ClientDataSet2 do + begin + Append; + FieldByName('CxTabName').Value := Trim(TV10.Bands[TV10.Columns[i].Position.BandIndex].Caption); + FieldByName('CxColName').Value := Trim(TV10.Columns[i].Caption); + FieldByName('ColName').Value := Trim(TV10.Columns[i].DataBinding.FieldName); + FieldByName('OrderNo').Value := i; + Post; + end; + end; + ADOQuery5.DisableControls; + with ADOQuery5 do + begin + Close; + sql.Clear; + sql.Add('select * from Table_Name where 1<>1'); + Open; + end; + SCreateCDS20(ADOQuery5, CDSName); + SInitCDSData20(ADOQuery5, CDSName); + ADOQuery2.EnableControls; + MKName := MKName10; + for i := 0 to TV10.Bands.Count - 1 do + begin + with CDSName do + begin + Append; + FieldByName('CxTabName').Value := Trim(TV10.Bands[i].Caption); + FieldByName('OrderNo').Value := i; + Post; + end; + end; + if ShowModal = 1 then + begin + + end; + end; + finally + frmColumnBandSet.Free; + 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; + +procedure SelOKNoAdo(CDS_MainSel: TADOQuery; 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; + + function readu1000(ss: string): string; + var + t, code: integer; + begin + result := ''; + while ss[1] = '0' do + begin + delete(ss, 1, 1); + if length(ss) = 0 then + exit; //ȫ0 + end; + if length(ss) = 3 then + begin + appendstr(result, gw[ord(ss[1]) - ord('0')]); + //appendstr(result,' hundred '); + appendstr(result, ' 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 result <> '' then + appendstr(result, 'and '); + if (glb = 1) and (t1 <> 1) then //λʱ3λ + if result = '' then + appendstr(result, 'and '); + begin + val(ss, t, code); + if t < 20 then + result := result + gw[t] + else if t mod 10 = 0 then + result := result + sw[t div 10] + else + //result := result+sw[trunc(t/10)]+'-'+gw[t mod 10]; + result := result + sw[trunc(t / 10)] + ' ' + gw[t mod 10]; + end; + end; + +begin + result := ''; + 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 := result + readu1000(ts); + if ts <> '000' then + result := result + ' ' + exp[glb] + ' '; + end; + if length(strArabic) <> 0 then + begin + delete(strArabic, 1, 1); + appendstr(result, 'and '); + result := result + 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; + +procedure DelCDS(ClientDataSet1: TClientDataSet; ADOCmd: TADOQuery; DelSql: string); +begin + if ClientDataSet1.IsEmpty then + Exit; + if Trim(ClientDataSet1.fieldbyname('ZSID').AsString) <> '' then + begin + if Application.MessageBox('ȷҪɾ', 'ʾ', 32 + 4) <> IDYES then + Exit; + with ADOCmd do + begin + Close; + SQL.Clear; + sql.Add(DelSql); + ExecSQL; + end; + end; + ClientDataSet1.Delete; +end; + +end. +