unit U_RTFun; 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; //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; function SGetServerDateMBeg(ADOQueryTmp: TADOQuery): TdateTime; function SGetServerDateMEnd(ADOQueryTmp: TADOQuery): TdateTime; procedure SSetsavedata(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer); procedure SSetWinData(ADOQueryTmp: TADOQuery; mParent: TWinControl); function SDelData(ADOQueryCmd: TADOQuery; mDelStr: string): Boolean; function SGetFilters(TMPanel: TPanel; EquTag, LikeTag: Integer): string; function SGetFiltersHint(TMPanel: TPanel; EquTag, LikeTag: Integer): string; procedure SDofilter(ADOQry: TADOQuery; FilterStr: string); function SGetMaxNo(MyAdoQuery: TADOQuery; MyTable: string; MyField: string; MyFlag: string): string; procedure SCreateCDS20(SADOQry: TADOQuery; mClientDataset: TclientDataSet); procedure SInitCDSData20(fromADO: TADOQuery; toCDS: TclientDataSet); procedure SInitFtComBoxBySql(ADOQueryTmp: TADOQuery; cb: 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; function GetLSNoHZ(ADOQueryTmp: TADOQuery; var mMaxNo: string; mFlag: string; mTable: string; mlen: integer; mtype: integer = 0; HZype: integer = 0): Boolean; procedure SSetsaveSql(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer); procedure ReadCxGrid(fileName: string; cxgrid: TcxGridDBTableView; filePack: string = '����'); procedure ReadCxBandedGrid(fileName: string; cxgrid: TcxGridDBBandedTableView; filePack: string = '����'); procedure WriteCxGrid(fileName: string; cxgrid: TcxGridDBTableView; filePack: string = '����'); procedure WriteCxBandedGrid(fileName: string; cxgrid: TcxGridDBBandedTableView; filePack: string = '����'); procedure CreateGroupSummarry(tv1: TcxGridDBTableView); procedure TcxGridToExcel(mfileName: string; gridName: TcxGrid); function ReadINIFileStr(ininame, TypeName: string; ValueName, ValueMR: string): string; procedure SClearData(mParent: TWinControl; FTag: Integer); procedure 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 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 SSetsaveSqlNew(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer); procedure SCSHDataNew(ADOQueryTmp: TADOQuery; mParent: TWinControl; FTag: Integer); function RTSetSaveDataCDS(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean; function RTSetSaveDataCDSBand(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean; procedure SCreateCDSOnly(SADOQry: TADOQuery; mClientDataset: TclientDataSet); procedure SInitCDSDataOnly(fromADO: TADOQuery; toCDS: TclientDataSet); procedure SelOKNo(CDS_MainSel: TClientDataSet; FSel: Boolean); function num2cengnum(strArabic: string): string; function num2ceng(strArabic: string): string; procedure RTSetsavedata(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer); procedure InitOrderColor(OrdMainId: string; Combox: TComboBox; FAdoQry: TADOQuery); procedure InitBCGangNo(OrdSubId: string; Combox: TComboBox; FAdoQry: TADOQuery); procedure InitRCGangNo(OrdSubId: string; Combox: TComboBox; FAdoQry: TADOQuery); procedure DelCDS(ClientDataSet1: TClientDataSet; ADOCmd: TADOQuery; DelSql: string); procedure OneKeyPostBand(Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet); procedure SInitComBoxByTvColumns(cb: TComboBox; Tv1: TcxGridDBTableView; ColumnTag: Integer; TowFlag: Boolean; emptyFlag: Boolean); procedure TcxGridToHTML(mfileName: string; gridName: TcxGrid); function UpdateSXPB(ADOQueryTmp: TADOQuery; OrdMainID, OrdSubID: string): Boolean; function FormatTitle(S: string): string; function ValidatePID(const APID: string): string; //�ж�����֤�� function RoundFloat(f: double; i: integer): double; procedure initBtnColor(panel12: TPanel; clMenu: TColor); procedure RTsavedataCDS(ADOQueryCmd: TClientDataSet; Myparent: TWinControl; MyTag: integer); procedure InitDllEvt(FromFile: string; FormID: Integer; Para: string; FormType: Integer; Title: string; Def1: string; Def2: string; Def3: string; Def4: string; Def5: string; Def6: string; Def7: string; Def8: string; Def9: string; Def10: string); type TMyF = function(App: TApplication; //��Ӧ�ó��� (��Delphi����) FormH: HWND; //�������ڵĸ����ھ�� (��PB����) FormID: Integer; //Ҫ����dll�й��ܴ����Id��; ���ֻ��һ�����ܴ��ڣ�FormIDĬ��Ϊ0 Language: Integer; //0=Delphi; 1=PB WinStyle: Integer; //0=�Ӵ���; 1����ͨ���� (PB�ж�Ϊ��ͨ����) UID: PChar; //�û�Id UName: PChar; //�û��� Para: PChar; Title: PChar; Defstr1: PChar; Defstr2: PChar; Defstr3: PChar; Defstr4: PChar; Defstr5: PChar; Defstr6: PChar; Defstr7: PChar; Defstr8: PChar; Defstr9: PChar; Defstr10: PChar; Datalink: PChar): HWND; stdcall; var TP: FARPROC; Tf: TMyF; implementation uses U_DataLink; procedure InitDllEvt(FromFile: string; FormID: Integer; Para: string; FormType: Integer; Title: string; Def1: string; Def2: string; Def3: string; Def4: string; Def5: string; Def6: string; Def7: string; Def8: string; Def9: string; Def10: string); var Th: HMODULE; begin Th := LoadLibrary(PChar(FromFile)); if Th > 0 then begin TP := GetProcAddress(Th, 'GetDllForm'); if TP <> nil then begin Tf := TMyF(Tp); Tf(Application, 0, FormID, 0, FormType, PChar(DCode), PChar(DName), PChar(Para), PChar(Title), PChar(Def1), PChar(Def2), PChar(Def3), PChar(Def4), PChar(Def5), PChar(Def6), PChar(Def7), PChar(Def8), PChar(Def9), PChar(Def10), pchar(DConString)); end; end else begin Application.MessageBox(PChar('���ļ�' + FromFile + '��'), '����', MB_ICONERROR); end; end; function UpdateSXPB(ADOQueryTmp: TADOQuery; OrdMainID, OrdSubID: string): Boolean; begin try with ADOQueryTmp do begin Close; SQL.Clear; SQL.Add('exec [P_Update_OrderSub_JD_SXPB] ' + quotedstr(Trim(OrdMainID))); SQL.Add(',' + quotedstr(Trim(OrdSubID))); SQL.Add('exec [P_Update_OrderMain_JD] ' + quotedstr(Trim(OrdMainID))); ExecSQL end; Result := True; except Result := False; end; end; procedure RTsavedataCDS(ADOQueryCmd: TClientDataSet; 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 TBtnEditA then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TBtnEditA(Controls[i]).Text); if Trim(TBtnEditA(Controls[i]).Hint) <> '' then begin if Pos('/', Trim(TBtnEditC(Controls[i]).Hint)) > 0 then Continue; ADOQueryCmd.FieldByName(Trim(TBtnEditA(Controls[i]).Hint)).Value := Trim(TBtnEditA(Controls[i]).TxtCode); end; end else if Controls[i] is TBtnEditC then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TBtnEditC(Controls[i]).Text); if Trim(TBtnEditC(Controls[i]).Hint) <> '' then begin if Pos('/', Trim(TBtnEditC(Controls[i]).Hint)) > 0 then Continue; ADOQueryCmd.FieldByName(Trim(TBtnEditC(Controls[i]).Hint)).Value := Trim(TBtnEditC(Controls[i]).TxtCode); end; end else 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 begin if Trim(TEdit(Controls[i]).Hint) <> '' then ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TEdit(Controls[i]).Hint) else ADOQueryCmd.FieldByName(Controls[i].Name).Value := null; end; 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 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 TCheckBox then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := TCheckBox(Controls[i]).Checked; 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 TcxTimeEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TcxTimeEdit(Controls[i]).Text); end else if Controls[i] is TcxButtonEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TcxButtonEdit(Controls[i]).Text); end; end; end; end; end; procedure initBtnColor(panel12: TPanel; clMenu: TColor); var i: Integer; begin with panel12 do begin for i := 0 to panel12.ControlCount - 1 do begin if Controls[i] is TEdit then begin TEdit(Controls[i]).Color := clMenu; TEdit(Controls[i]).ReadOnly := True; end else if Controls[i] is TMemo then begin TMemo(Controls[i]).Color := clMenu; TMemo(Controls[i]).ReadOnly := True; end else if Controls[i] is TComboBox then begin TComboBox(Controls[i]).Color := clMenu; TComboBox(Controls[i]).Enabled := False; end else if Controls[i] is TDateTimePicker then begin TDateTimePicker(Controls[i]).Color := clMenu; TDateTimePicker(Controls[i]).Enabled := False; end else if Controls[i] is TBtnEditA then begin TBtnEditA(Controls[i]).Color := clMenu; TBtnEditA(Controls[i]).Enabled := False; end; end; end; end; 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; ///////////////////ȡ����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; function ValidatePID(const APID: string): string; {�ڲ�����,ȡ����֤��У��λ,���һλ,��18λ��Ч} function GetVerifyBit(sIdentityNum: string): Char; var nNum: Integer; begin Result := #0; nNum := StrToInt(sIdentityNum[1]) * 7 + StrToInt(sIdentityNum[2]) * 9 + StrToInt(sIdentityNum[3]) * 10 + StrToInt(sIdentityNum[4]) * 5 + StrToInt(sIdentityNum[5]) * 8 + StrToInt(sIdentityNum[6]) * 4 + StrToInt(sIdentityNum[7]) * 2 + StrToInt(sIdentityNum[8]) * 1 + StrToInt(sIdentityNum[9]) * 6 + StrToInt(sIdentityNum[10]) * 3 + StrToInt(sIdentityNum[11]) * 7 + StrToInt(sIdentityNum[12]) * 9 + StrToInt(sIdentityNum[13]) * 10 + StrToInt(sIdentityNum[14]) * 5 + StrToInt(sIdentityNum[15]) * 8 + StrToInt(sIdentityNum[16]) * 4 + StrToInt(sIdentityNum[17]) * 2; nNum := nNum mod 11; case nNum of 0: Result := '1'; 1: Result := '0'; 2: Result := 'X'; 3: Result := '9'; 4: Result := '8'; 5: Result := '7'; 6: Result := '6'; 7: Result := '5'; 8: Result := '4'; 9: Result := '3'; 10: Result := '2'; end; end; var L: Integer; sCentury: string; sYear2Bit: string; sMonth: string; sDate: string; iCentury: Integer; iMonth: Integer; iDate: Integer; CRCFact: string; //18λ֤�ŵ�ʵ��ֵ CRCTh: string; //18λ֤�ŵ�����ֵ FebDayAmt: Byte; //2������ begin L := Length(APID); if (L in [15, 18]) = False then begin Result := Format('����֤�Ų���15λ��18λ(%0:s, ʵ��λ��:%1:d)', [APID, L]); Exit; end; CRCFact := ''; if L = 18 then begin sCentury := Copy(APID, 7, 2); iCentury := StrToInt(sCentury); if (iCentury in [18..20]) = False then begin Result := Format('����֤������Ч:18λ֤�ŵ����ǰ��λ������18-20֮��(%0:S)', [sCentury]); Exit; end; sYear2Bit := Copy(APID, 9, 2); sMonth := Copy(APID, 11, 2); sDate := Copy(APID, 13, 2); CRCFact := Copy(APID, 18, 1); end else begin sCentury := '19'; sYear2Bit := Copy(APID, 7, 2); sMonth := Copy(APID, 9, 2); sDate := Copy(APID, 11, 2); end; iMonth := StrToInt(sMonth); iDate := StrToInt(sDate); if (iMonth in [01..12]) = False then begin Result := Format('����֤������Ч:�·ݱ�����01-12֮��(%0:s)', [sMonth]); Exit; end; if (iMonth in [1, 3, 5, 7, 8, 10, 12]) then begin if (iDate in [01..31]) = False then begin Result := Format('����֤������Ч:������Ч,����Ϊ����������ֵ(%0:s)', [sDate]); Exit; end; end; if (iMonth in [4, 6, 9, 11]) then begin if (iDate in [01..30]) = False then begin Result := Format('����֤������Ч:������Ч,����Ϊ����������ֵ(%0:s)', [sDate]); Exit; end; end; if IsLeapYear(StrToInt(sCentury + sYear2Bit)) = True then begin FebDayAmt := 29; end else begin FebDayAmt := 28; end; if (iMonth in [2]) then begin if (iDate in [01..FebDayAmt]) = False then begin Result := Format('����֤������Ч:������Ч,����Ϊ����������ֵ(%0:s)', [sDate]); Exit; end; end; if CRCFact <> '' then begin CRCTh := GetVerifyBit(APID); if CRCFact <> CRCTh then begin Result := Format('����֤������Ч:У��λ(��18λ)��:(%0:s)', [APID]); Exit; end; end; end; procedure InitBCGangNo(OrdSubId: string; Combox: TComboBox; FAdoQry: TADOQuery); var fsj: string; begin fsj := 'select distinct(AOrdDefStr1) Code from JYOrder_Sub_AnPai ' + ' where Subid=''' + Trim(OrdSubId) + ''''; with FAdoQry do begin Close; sql.Clear; sql.Add(fsj); Open; end; Combox.Clear; with FAdoQry do begin First; while not Eof do begin Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString)); Next; end; end; Combox.Items.Add(''); end; procedure InitRCGangNo(OrdSubId: string; Combox: TComboBox; FAdoQry: TADOQuery); var fsj: string; begin fsj := 'select distinct(gangno) Code from JYOrder_Sub_AnPai ' + ' where Subid=''' + Trim(OrdSubId) + ''''; with FAdoQry do begin Close; sql.Clear; sql.Add(fsj); Open; end; Combox.Clear; with FAdoQry do begin First; while not Eof do begin Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString)); Next; end; end; Combox.Items.Add(''); end; procedure InitOrderColor(OrdMainId: string; Combox: TComboBox; FAdoQry: TADOQuery); var fsj: string; begin fsj := 'select distinct(PRTColor) Code from JYOrder_Sub ' + ' where Mainid=''' + Trim(OrdMainId) + ''''; with FAdoQry do begin Close; sql.Clear; sql.Add(fsj); Open; end; Combox.Clear; with FAdoQry do begin First; while not Eof do begin Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString)); Next; end; end; Combox.Items.Add(''); end; ////�Զ����ӡ ///////////////////////�жϱ��������Ƿ��ظ�/////////////////////////////////// function SIsRepeated(AdoQueryTemp: TADOQuery; MyTable: string; MyField: string; MyCode: string): Boolean; begin try Result := False; with AdoQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from ' + MyTable + ' where ' + MyField + '=''' + Trim(MyCode) + ''''); Open; if IsEmpty then Result := True; Close; SQL.Clear; end; except Result := False; Application.MessageBox('�������ֶ�������', '��ʾ', 0); end; end; ////////////////////����ClientDataSet�ı�����Ϣ///////////////////////////// function SSetSaveDataCDS(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean; var i: Integer; begin try Result := False; for i := 0 to Tv1.ColumnCount - 1 do begin if Tv1.Columns[i].Tag = MyTag then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString) <> '' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value := CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end; end; end; Result := True; except Result := False; Application.MessageBox('����Cds������Ϣʧ��!', '��ʾ', 0); end; end; ////////////////////����ClientDataSet�ı�����Ϣ///////////////////////////// function SSetSaveDataCDSNew(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean; var i: Integer; begin try Result := False; for i := 0 to Tv1.ColumnCount - 1 do begin if Tv1.Columns[i].Tag = MyTag then begin if 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 Tv1.Columns[i].Visible = False then Continue; 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 if Tv1.Columns[i].Visible = False then Continue; 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) <> '' then AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value := 0 else AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value := Null; end; end; end; end; Result := True; except Result := False; Application.MessageBox('����Cds������Ϣʧ��!', '��ʾ', 0); end; end; function SSetSaveDataCDSBandNew(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean; var i: Integer; begin try Result := False; for i := 0 to Tv1.ColumnCount - 1 do begin if Tv1.Columns[i].Tag = MyTag then begin if Trim(Tv1.Columns[i].Summary.GroupFooterFormat) <> '1' then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString) <> '' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value := CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end; end; if Trim(Tv1.Columns[i].Summary.GroupFormat) <> '' then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].Summary.GroupFormat).AsString) <> '' then begin AdoQueryCmd.FieldByName(Tv1.Columns[i].Summary.GroupFormat).Value := CDS_Sub.fieldbyname(Tv1.Columns[i].Summary.GroupFormat).Value; end; end; end; end; Result := True; except Result := False; Application.MessageBox('����Cds������Ϣʧ��!', '��ʾ', 0); end; end; ////////////////////����ClientDataSet�ı�����Ϣ///////////////////////////// function SSetSaveDataCDS10(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean; var i: Integer; begin try Result := False; for i := 0 to Tv1.ColumnCount - 1 do begin if Tv1.Columns[i].Tag = MyTag then begin if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString) <> '' then AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value := CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value; end; end; Result := True; except Result := False; Application.MessageBox('����Cds������Ϣʧ��!', '��ʾ', 0); end; end; ///////////////////////////����������////////////////////////////////////// function SGetServerDate(ADOQueryTmp: TADOQuery): TdateTime; begin try with ADOQueryTmp do begin close; sql.Clear; sql.Add('select getDate()as dt'); open; result := StrToDate(formatdatetime('yyyy-MM-dd', fieldByName('dt').AsDatetime)); close; SQL.Clear; end; except application.MessageBox('��ȡ��ǰ���ڷ�������!', '��ʾ��Ϣ', 0); end; end; function SGetServerDateMBeg(ADOQueryTmp: TADOQuery): TdateTime; begin try with ADOQueryTmp do begin close; sql.Clear; sql.Add('select dateadd(dd,-day(getdate())+1,getdate()) as dt'); open; result := StrToDate(formatdatetime('yyyy-MM-dd', fieldByName('dt').AsDatetime)); close; SQL.Clear; end; except application.MessageBox('��ȡ��ǰ���ڷ�������!', '��ʾ��Ϣ', 0); end; end; function SGetServerDateMEnd(ADOQueryTmp: TADOQuery): TdateTime; begin try with ADOQueryTmp do begin close; sql.Clear; sql.Add('SELECT DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) 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 TcxButtonEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TcxButtonEdit(Controls[i]).Text); end else if Controls[i] is TBtnEditA then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TBtnEditA(Controls[i]).Text); if Trim(TBtnEditA(Controls[i]).Hint) <> '' then begin if Pos('/', Trim(TBtnEditC(Controls[i]).Hint)) > 0 then Continue; ADOQueryCmd.FieldByName(Trim(TBtnEditA(Controls[i]).Hint)).Value := Trim(TBtnEditA(Controls[i]).TxtCode); end; end else if Controls[i] is TBtnEditC then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TBtnEditC(Controls[i]).Text); if Trim(TBtnEditC(Controls[i]).Hint) <> '' then begin if Pos('/', Trim(TBtnEditC(Controls[i]).Hint)) > 0 then Continue; ADOQueryCmd.FieldByName(Trim(TBtnEditC(Controls[i]).Hint)).Value := Trim(TBtnEditC(Controls[i]).TxtCode); end; end else 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 begin if Trim(TEdit(Controls[i]).Hint) <> '' then ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TEdit(Controls[i]).Hint) else ADOQueryCmd.FieldByName(Controls[i].Name).Value := null; end; 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 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 TcxTimeEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TcxTimeEdit(Controls[i]).Text); end; end; end; end; end; procedure SSetsaveSql(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer); var i: Integer; MCode: string; begin with Myparent do begin for i := 0 to ControlCount - 1 do begin if Controls[i].Tag = MyTag then begin if Controls[i] is TEdit then begin if Trim(TEdit(Controls[i]).Text) <> '' then ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TEdit(Controls[i]).Text); end else if Controls[i] is TRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := TRichEdit(Controls[i]).Text; end else if Controls[i] is TcxRichEdit then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := TcxRichEdit(Controls[i]).Text; end else if Controls[i] is TMemo then begin ADOQueryCmd.FieldByName(Controls[i].Name).Value := TMemo(Controls[i]).Text; end else if Controls[i] is 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 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 TMemo then begin TMemo(Controls[i]).Text := ''; end else if Controls[i] is TDateTimePicker then begin if TDateTimePicker(Controls[i]).ShowCheckbox = True then begin TDateTimePicker(Controls[i]).Checked := False; end; 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 TBtnEditA then begin TBtnEditA(Controls[i]).Text := trim(fieldByName(mfield).AsString); if Trim(TBtnEditA(Controls[i]).Hint) <> '' then begin if Pos('/', TBtnEditC(Controls[i]).Hint) > 0 then Continue; TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(Trim(TBtnEditA(Controls[i]).Hint)).AsString); end; end else if Controls[i] is TBtnEditC then begin TBtnEditC(Controls[i]).Text := trim(fieldByName(mfield).AsString); if Trim(TBtnEditC(Controls[i]).Hint) <> '' then begin if Pos('/', TBtnEditC(Controls[i]).Hint) > 0 then begin end else TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(Trim(TBtnEditC(Controls[i]).Hint)).AsString); end; end else if Controls[i] is 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) else TRichEdit(Controls[i]).Text := ''; end else if Controls[i] is TcxRichEdit then begin if Trim(fieldByName(mfield).AsString) <> '' then TcxRichEdit(Controls[i]).Text := trim(fieldByName(mfield).AsString) else TcxRichEdit(Controls[i]).Text := ''; end //combobox else if Controls[i] is TComboBox then begin if TComboBox(Controls[i]).Style = csDropDownList then begin if Trim(ADOQueryTmp.fieldByName(TComboBox(Controls[i]).Name).AsString) <> '' then begin TComboBox(Controls[i]).ItemIndex := TComboBox(Controls[i]).Items.IndexOf(trim(ADOQueryTmp.fieldByName(TComboBox(Controls[i]).Name).AsString)); end else begin TComboBox(Controls[i]).ItemIndex := -1; end; end else begin TComboBox(Controls[i]).Text := trim(ADOQueryTmp.fieldByName(TComboBox(Controls[i]).Name).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) + '%'); 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 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 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 with ADOQueryTmp do begin close; sql.clear; sql.Add(mSql); Open; if isEmpty then begin //plication.MessageBox(pChar(showMsg),'',0); exit; end; cb.Clear; 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 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 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 if Trim((Tv1.Columns[i].DataBinding.FieldName)) <> '' then begin AA[i] := Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString); end else begin AA[i] := ''; end; 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..200] 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; procedure OneKeyPostBand(Tv1: TcxGridDBBandedTableView; 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; /////////////////////////////////////////////////// //�������ܣ�ȡ��ˮ�� //mFlag:ǰ��mTable:���� //mlen:��ˮ�ų���; mtype:�Ƿ������ 1���� 0 ���� HZype 0 �����գ�1 ���£�2 �� /////////////////////////////////////////////////// function GetLSNoHZ(ADOQueryTmp: TADOQuery; var mMaxNo: string; mFlag: string; mTable: string; mlen: integer; mtype: integer = 0; HZype: integer = 0): Boolean; begin try with ADOQueryTmp do begin Close; sql.Clear; sql.Add('exec Get_SY_MaxBH_HZ '); sql.Add(' ' + quotedStr(mFlag)); sql.Add(',' + quotedStr(mTable)); sql.Add(',' + intTostr(mlen)); sql.Add(',' + intTostr(mtype)); sql.Add(',' + intTostr(HZype)); // 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 �Ƽ�Ϊ���ڵ�caption����caption���� /////////////////////////////////////////////////////////////// procedure ReadCxBandedGrid(fileName: string; cxgrid: TcxGridDBBandedTableView; filePack: string = '����'); var mFileName: string; begin mFileName := ExtractFilePath(Application.ExeName) + 'Layout\' + filePack + '\' + trim(fileName) + '.dbg'; //�Ӳ����ļ��лָ� if FileExists(mFileName) then cxgrid.RestoreFromIniFile(mFileName); 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('Failed to create, source file may be in edit state!', 'Tips', 0); exit; end; application.MessageBox('Successful export!', 'Tips', 0); end else application.MessageBox('Export failed!', 'Tips', 0); finally saveDialog.Free; end; end; procedure TcxGridToHTML(mfileName: string; gridName: TcxGrid); var saveDialog: TSaveDialog; begin try saveDialog := TSaveDialog.Create(nil); saveDialog.Filter := 'HTML(*.HTML)|*.HTML|ȫ��(*.*)|*.*'; saveDialog.Options := [ofOverwritePrompt]; saveDialog.FileName := mfileName; if saveDialog.Execute then if Assigned(gridName) then begin try ExportGridToHTML(saveDialog.FileName, gridName); except application.MessageBox('����ʧ��,Դ�ļ����ܴ��ڱ༭״̬!', '��ʾ��Ϣ', 0); exit; end; application.MessageBox('�ɹ�����!', '��ʾ��Ϣ', 0); end else application.MessageBox('����ʧ��!', '��ʾ��Ϣ', 0); finally saveDialog.Free; end; end; function ReadINIFileStr(ininame, TypeName: string; ValueName, ValueMR: string): string; var programIni: Tinifile; //�����ļ��� FileName, ValueZS: string; begin FileName := ExtractFilePath(Paramstr(0)) + ininame; programIni := Tinifile.create(FileName); ValueZS := programIni.ReadString(TypeName, ValueName, ValueMR); Result := ValueZS; programIni.Free; end; procedure ColumnView(AdoQueryTemp: TADOQuery; Tv1: TcxGridDBTableView; MKName10: string); begin with AdoQueryTemp do begin Close; sql.Clear; sql.Add('select * from Table_Column where CxTabName=''' + Trim(MKName10) + ''' and Owner=''' + Trim(DCode) + ''''); sql.Add(' and TCNotVisble=1 '); open; end; if AdoQueryTemp.IsEmpty = False then begin with AdoQueryTemp do begin First; while not eof do begin Tv1.GetColumnByFieldName(AdoQueryTemp.fieldbyname('ColName').AsString).Visible := False; Tv1.GetColumnByFieldName(AdoQueryTemp.fieldbyname('ColName').AsString).Hidden := True; Next; end; end; end; end; procedure ColumnBandView(AdoQueryTemp: TADOQuery; Tv1: TcxGridDBBandedTableView; MKName10: string); var fsj: string; begin with AdoQueryTemp do begin Close; sql.Clear; sql.Add('select * from Table_Column where CxTabName=''' + Trim(MKName10) + ''' and Owner=''' + Trim(DCode) + ''''); sql.Add(' and TCNotVisble=1 '); open; end; if AdoQueryTemp.IsEmpty = False then begin with AdoQueryTemp do begin First; while not eof do begin fsj := Trim(AdoQueryTemp.fieldbyname('ColName').AsString); // Tv1.Controller.ge Tv1.GetColumnByFieldName(fsj).Visible := False; Tv1.GetColumnByFieldName(fsj).Hidden := True; Next; end; end; end; end; procedure GetSWLDZ(IPStr: string); var myip: ulong; mymac: array[0..5] of byte; mymaclength: ulong; r: integer; begin {myip:=inet_addr(PChar(Trim(IPStr))); mymaclength:=length(mymac); r:=sendarp(myip,0,@mymac,@mymaclength); IpCall:=r; IpWLDZStr:=format('%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x',[mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]]);} end; procedure SelOKNo(CDS_MainSel: TClientDataSet; FSel: Boolean); begin if CDS_MainSel.IsEmpty then Exit; CDS_MainSel.DisableControls; with CDS_MainSel do begin First; while not Eof do begin if FieldByName('SSel').AsBoolean = not FSel then begin Edit; FieldByName('SSel').Value := FSel; Post; end; Next; end; end; CDS_MainSel.EnableControls; end; function num2ceng(strArabic: string): string;//����С��������ת��Ӣ�� const sw: array[2..9] of string = ('twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'); gw: array[1..19] of string = ('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'); exp: array[1..4] of string = ('', 'thousand', 'million', 'billion'); var t, j, glb, t1: integer; ts: string; 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; function FormatTitle(S: string): string; {���ַ����еİ���滻��ȫ���ַ�} var OldStr, NewStr: AnsiString; i: Integer; const SiStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\~!#$%^&()_+|[]{};'':",./<>?'; DoStr = '�������������������������������������£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣࣱ�����������������������ܡ������磥�ޣ������ߣ����ۣݣ�����������������������'; begin for i := 1 to 95 do begin OldStr := copy(SiStr, i, 1); NewStr := copy(DoStr, 2 * i - 1, 2); S := StringReplace(S, OldStr, NewStr, [rfReplaceAll]); end; S := Trim(S); result := S; end; end.