D7szYidui/Z99Dependency/ThreeFun/Fun/U_RTFun.pas

3841 lines
120 KiB
ObjectPascal
Raw Normal View History

2025-07-19 14:23:30 +08:00
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,
2025-10-18 14:10:28 +08:00
cxGridExportLink, ExtCtrls, Buttons, DBClient, FTComboBox, cxDropDownEdit,
2025-07-19 14:23:30 +08:00
cxGridBandedTableView, cxGridDBBandedTableView, cxRichEdit, cxButtonEdit,
2025-10-18 14:10:28 +08:00
IniFiles, WinSock;
//Function sendarp(ipaddr:ulong;temp:dword;ulmacaddr:pointer;ulmacaddrleng:pointer) : DWord; StdCall; External 'Iphlpapi.dll' Name 'SendARP';
2025-07-19 14:23:30 +08:00
type
TA = class(TComponent)
public
S: string;
end;
2025-10-18 14:10:28 +08:00
function SGetMaxId(AdoQueryTemp: TADOQuery; MyTable: string; MyField: string; var MaxId: Integer): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SIsRepeated(AdoQueryTemp: TADOQuery; MyTable: string; MyField: string; MyCode: string): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SSetSaveDataCDS(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SSetSaveDataCDS10(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetServerDate(ADOQueryTmp: TADOQuery): TdateTime;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetServerDateMBeg(ADOQueryTmp: TADOQuery): TdateTime;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetServerDateMEnd(ADOQueryTmp: TADOQuery): TdateTime;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetsavedata(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetWinData(ADOQueryTmp: TADOQuery; mParent: TWinControl);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SDelData(ADOQueryCmd: TADOQuery; mDelStr: string): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetFilters(TMPanel: TPanel; EquTag, LikeTag: Integer): string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetFiltersHint(TMPanel: TPanel; EquTag, LikeTag: Integer): string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SDofilter(ADOQry: TADOQuery; FilterStr: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetMaxNo(MyAdoQuery: TADOQuery; MyTable: string; MyField: string; MyFlag: string): string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SCreateCDS20(SADOQry: TADOQuery; mClientDataset: TclientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitCDSData20(fromADO: TADOQuery; toCDS: TclientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitFtComBoxBySql(ADOQueryTmp: TADOQuery; cb: TFtComboBox; FlagType: string; Boxtype: integer; showMsg: string; emptyFlag: Boolean; mSql: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitComBoxBySql(ADOQueryTmp: TADOQuery; cb: TComboBox; emptyFlag: Boolean; mSql: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitComBoxByCustCode(ADOQueryTmp: TADOQuery; cb: TComboBox; FlagType: string; Boxtype: integer; showMsg: string; emptyFlag: Boolean);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitCxGridComboBoxByCustCode(ADOQueryTmp: TADOQuery; c3: TcxGriddbColumn; FlagType: string; PState: Integer; IsNull: Boolean; Shmeg: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetsavedata10(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetWinData10(ADOQueryTmp: TADOQuery; mParent: TWinControl);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitCxGridComboBoxBySql(ADOQueryTmp: TADOQuery; c3: TcxGriddbColumn; FSql: string; PState: Integer; IsNull: Boolean; Shmeg: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SSWR(s: real): real; //*****<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *****//
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetWinData20(ADOQueryTmp: TADOQuery; mParent: TWinControl);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetWinData30(ADOQueryTmp: TADOQuery; mParent: TWinControl; FTag: Integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SCSHData(ADOQueryTmp: TADOQuery; mParent: TWinControl; FTag: Integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetsavedataNew(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetServerDate10(ADOQueryTmp: TADOQuery): TDateTime;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetServerDateTime(ADOQueryTmp: TADOQuery): TDateTime;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SCreateCDSSel(SADOQry: TADOQuery; mClientDataset: TclientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitCDSDataSel(fromADO: TADOQuery; toCDS: TclientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure CopyAddRow(Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>groupformat<61><74><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure CopyAddRowBand(Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure OneKeyPost(Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet); //һ<><D2BB><EFBFBD>滻ճ<E6BBBB><D5B3>
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure CopyAddRowCDS(CDS_Sub: TClientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SSetSaveDataCDSNew(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SGetFinds(TMPanel: TPanel; EquTag, LikeTag: Integer): string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SSetSaveDataCDSBandNew(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function GetLSNo(ADOQueryTmp: TADOQuery; var mMaxNo: string; mFlag: string; mTable: string; mlen: integer; mtype: integer = 0): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function GetLSNoHZ(ADOQueryTmp: TADOQuery; var mMaxNo: string; mFlag: string; mTable: string; mlen: integer; mtype: integer = 0; HZype: integer = 0): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetsaveSql(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure ReadCxGrid(fileName: string; cxgrid: TcxGridDBTableView; filePack: string = '<27><><EFBFBD><EFBFBD>');
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure ReadCxBandedGrid(fileName: string; cxgrid: TcxGridDBBandedTableView; filePack: string = '<27><><EFBFBD><EFBFBD>');
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure WriteCxGrid(fileName: string; cxgrid: TcxGridDBTableView; filePack: string = '<27><><EFBFBD><EFBFBD>');
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure WriteCxBandedGrid(fileName: string; cxgrid: TcxGridDBBandedTableView; filePack: string = '<27><><EFBFBD><EFBFBD>');
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure CreateGroupSummarry(tv1: TcxGridDBTableView);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure TcxGridToExcel(mfileName: string; gridName: TcxGrid);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function ReadINIFileStr(ininame, TypeName: string; ValueName, ValueMR: string): string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SClearData(mParent: TWinControl; FTag: Integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SDofilter10(cds_Main: TClientDataSet; FilterStr: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitCxBandGridComboBoxBySql(ADOQueryTmp: TADOQuery; c3: TcxGridDBBandedColumn; FSql: string; PState: Integer; IsNull: Boolean; Shmeg: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure ColumnView(AdoQueryTemp: TADOQuery; Tv1: TcxGridDBTableView; MKName10: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure ColumnBandView(AdoQueryTemp: TADOQuery; Tv1: TcxGridDBBandedTableView; MKName10: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SCSHDataWTag(ADOQueryTmp: TADOQuery; mParent: TWinControl);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure GetSWLDZ(IPStr: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SCSHDataCDS(CDS_Main: TClientDataSet; mParent: TWinControl; FTag: Integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetsaveSqlNew(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SCSHDataNew(ADOQueryTmp: TADOQuery; mParent: TWinControl; FTag: Integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function RTSetSaveDataCDS(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function RTSetSaveDataCDSBand(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SCreateCDSOnly(SADOQry: TADOQuery; mClientDataset: TclientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitCDSDataOnly(fromADO: TADOQuery; toCDS: TclientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SelOKNo(CDS_MainSel: TClientDataSet; FSel: Boolean);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function num2cengnum(strArabic: string): string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function num2ceng(strArabic: string): string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure RTSetsavedata(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure InitOrderColor(OrdMainId: string; Combox: TComboBox; FAdoQry: TADOQuery);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure InitBCGangNo(OrdSubId: string; Combox: TComboBox; FAdoQry: TADOQuery);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure InitRCGangNo(OrdSubId: string; Combox: TComboBox; FAdoQry: TADOQuery);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure DelCDS(ClientDataSet1: TClientDataSet; ADOCmd: TADOQuery; DelSql: string);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure OneKeyPostBand(Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SInitComBoxByTvColumns(cb: TComboBox; Tv1: TcxGridDBTableView; ColumnTag: Integer; TowFlag: Boolean; emptyFlag: Boolean);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure TcxGridToHTML(mfileName: string; gridName: TcxGrid);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function FormatTitle(S: string): string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function ValidatePID(const APID: string): string; //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function RoundFloat(f: double; i: integer): double;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure RTsavedataCDS(ADOQueryCmd: TClientDataSet; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
implementation
uses
U_DataLink;
2025-10-18 14:10:28 +08:00
procedure RTsavedataCDS(ADOQueryCmd: TClientDataSet; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: Integer;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with Myparent do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
function RoundFloat(f: double; i: integer): double;
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
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)); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
result := StrToFloat(FormatFloat(s, ef));
end;
///////////////////ȡ<><C8A1><EFBFBD><EFBFBD>Int<6E><74><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>ֵ///////////////////////////////////////
function SGetMaxId(AdoQueryTemp: TADOQuery; MyTable: string; MyField: string; var MaxId: Integer): Boolean;
2025-07-19 14:23:30 +08:00
begin
try
2025-10-18 14:10:28 +08:00
with AdoQueryTemp do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Close;
SQL.Clear;
SQL.Add('select Max(' + MyField + ')+1 MaxId from ' + MyTable);
Open;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
with AdoQueryTemp do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if (Trim(FieldByName('MaxId').AsString) = '') or (Trim(FieldByName('MaxId').AsString) = NULL) then
MaxId := 1
else
MaxId := (fieldbyname('MaxId').AsInteger);
2025-07-19 14:23:30 +08:00
Close;
SQL.Clear;
end;
2025-10-18 14:10:28 +08:00
Result := True;
except
Result := False;
Application.MessageBox(<><C8A1><EFBFBD><EFBFBD>ֵʧ<D6B5>ܣ<EFBFBD>', '<27><>ʾ', 0);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
function ValidatePID(const APID: string): string;
{<7B>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><><C8A1><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>У<EFBFBD><D0A3>λ,<2C><><EFBFBD><EFBFBD>һλ,<2C><>18λ<38><CEBB>Ч}
function GetVerifyBit(sIdentityNum: string): Char;
var
nNum: Integer;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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';
2025-07-19 14:23:30 +08:00
end;
end;
var
2025-10-18 14:10:28 +08:00
L: Integer;
sCentury: string;
sYear2Bit: string;
sMonth: string;
sDate: string;
iCentury: Integer;
iMonth: Integer;
iDate: Integer;
CRCFact: string; //18λ֤<CEBB>ŵ<EFBFBD>ʵ<EFBFBD><CAB5>ֵ
CRCTh: string; //18λ֤<CEBB>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD>ֵ
FebDayAmt: Byte; //2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
L := Length(APID);
if (L in [15, 18]) = False then
begin
Result := Format('<27><><EFBFBD><EFBFBD>֤<EFBFBD>Ų<EFBFBD><C5B2><EFBFBD>15λ<35><CEBB>18λ(%0:s, ʵ<><CAB5>λ<EFBFBD><CEBB>:%1:d)', [APID, L]);
Exit;
end;
CRCFact := '';
if L = 18 then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
sCentury := Copy(APID, 7, 2);
iCentury := StrToInt(sCentury);
if (iCentury in [18..20]) = False then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Result := Format('<27><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч:18λ֤<CEBB>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>18-20֮<30><D6AE>(%0:S)', [sCentury]);
Exit;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
sYear2Bit := Copy(APID, 9, 2);
sMonth := Copy(APID, 11, 2);
sDate := Copy(APID, 13, 2);
CRCFact := Copy(APID, 18, 1);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
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('<27><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч:<3A>·ݱ<C2B7><DDB1><EFBFBD><EFBFBD><EFBFBD>01-12֮<32><D6AE>(%0:s)', [sMonth]);
Exit;
end;
if (iMonth in [1, 3, 5, 7, 8, 10, 12]) then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if (iDate in [01..31]) = False then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Result := Format('<27><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч,<2C><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>򳬳<EFBFBD><F2B3ACB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ(%0:s)', [sDate]);
Exit;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
if (iMonth in [4, 6, 9, 11]) then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if (iDate in [01..30]) = False then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Result := Format('<27><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч,<2C><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>򳬳<EFBFBD><F2B3ACB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ(%0:s)', [sDate]);
Exit;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end;
if IsLeapYear(StrToInt(sCentury + sYear2Bit)) = True then
begin
FebDayAmt := 29;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else
begin
FebDayAmt := 28;
end;
if (iMonth in [2]) then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if (iDate in [01..FebDayAmt]) = False then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Result := Format('<27><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч,<2C><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>򳬳<EFBFBD><F2B3ACB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ(%0:s)', [sDate]);
Exit;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end;
if CRCFact <> '' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
CRCTh := GetVerifyBit(APID);
if CRCFact <> CRCTh then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Result := Format('<27><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч:У<><D0A3>λ(<28><>18λ)<29><>:(%0:s)', [APID]);
Exit;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
First;
while not Eof do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString));
Next;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Combox.Items.Add('');
end;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Close;
sql.Clear;
sql.Add(fsj);
Open;
end;
Combox.Clear;
with FAdoQry do
begin
First;
while not Eof do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString));
Next;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Combox.Items.Add('');
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
procedure InitOrderColor(OrdMainId: string; Combox: TComboBox; FAdoQry: TADOQuery);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
fsj: string;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Combox.Items.Add(Trim(FAdoQry.fieldbyname('Code').AsString));
Next;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end;
Combox.Items.Add('');
end;
////<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ӡ
///////////////////////<2F>жϱ<D0B6><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ظ<EFBFBD>///////////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SIsRepeated(AdoQueryTemp: TADOQuery; MyTable: string; MyField: string; MyCode: string): Boolean;
begin
try
Result := False;
with AdoQueryTemp do
2025-07-19 14:23:30 +08:00
begin
Close;
SQL.Clear;
2025-10-18 14:10:28 +08:00
SQL.Add('select * from ' + MyTable + ' where ' + MyField + '=''' + Trim(MyCode) + '''');
2025-07-19 14:23:30 +08:00
Open;
2025-10-18 14:10:28 +08:00
if IsEmpty then
Result := True;
Close;
SQL.Clear;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
except
Result := False;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 0);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
////////////////////<2F><><EFBFBD><EFBFBD>ClientDataSet<65>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ϣ/////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SSetSaveDataCDS(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: Integer;
begin
2025-07-19 14:23:30 +08:00
try
2025-10-18 14:10:28 +08:00
Result := False;
for i := 0 to Tv1.ColumnCount - 1 do
begin
if Tv1.Columns[i].Tag = MyTag then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString) <> '' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
AdoQueryCmd.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value := CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).Value;
2025-07-19 14:23:30 +08:00
end;
end;
end;
2025-10-18 14:10:28 +08:00
Result := True;
2025-07-19 14:23:30 +08:00
except
2025-10-18 14:10:28 +08:00
Result := False;
Application.MessageBox('<27><><EFBFBD><EFBFBD>Cds<64><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2><CAA7>!', '<27><>ʾ', 0);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
////////////////////<2F><><EFBFBD><EFBFBD>ClientDataSet<65>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ϣ/////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
function SSetSaveDataCDSNew(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: Integer;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
try
Result := False;
for i := 0 to Tv1.ColumnCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Tv1.Columns[i].Tag = MyTag then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Tv1.Columns[i].Visible = True then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Trim(Tv1.Columns[i].Summary.GroupFooterFormat) <> '1' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString) <> '' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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};
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
if Trim(Tv1.Columns[i].Summary.GroupFormat) <> '' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].Summary.GroupFormat).AsString) <> '' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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; }
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Result := True;
except
Result := False;
Application.MessageBox('<27><><EFBFBD><EFBFBD>Cds<64><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2><CAA7>!', '<27><>ʾ', 0);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
function RTSetSaveDataCDS(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: Integer;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
try
Result := False;
for i := 0 to Tv1.ColumnCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Tv1.Columns[i].Tag = MyTag then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Tv1.Columns[i].Visible = False then
Continue;
if Trim(Tv1.Columns[i].DataBinding.FilterFieldName) = '' then
Continue;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Result := True;
except
Result := False;
Application.MessageBox('<27><><EFBFBD><EFBFBD>Cds<64><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2><CAA7>!', '<27><>ʾ', 0);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
function RTSetSaveDataCDSBand(AdoQueryCmd: TADOQuery; Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet; MyTable: string; MyTag: Integer): Boolean;
2025-07-19 14:23:30 +08:00
var
i: Integer;
begin
2025-10-18 14:10:28 +08:00
try
Result := False;
for i := 0 to Tv1.ColumnCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Tv1.Columns[i].Tag = MyTag then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Tv1.Columns[i].Visible = False then
Continue;
if Trim(Tv1.Columns[i].DataBinding.FilterFieldName) = '' then
Continue;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end;
Result := True;
except
Result := False;
Application.MessageBox('<27><><EFBFBD><EFBFBD>Cds<64><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2><CAA7>!', '<27><>ʾ', 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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Trim(Tv1.Columns[i].Summary.GroupFooterFormat) <> '1' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
if Trim(Tv1.Columns[i].Summary.GroupFormat) <> '' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
end;
Result := True;
except
Result := False;
Application.MessageBox('<27><><EFBFBD><EFBFBD>Cds<64><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2><CAA7>!', '<27><>ʾ', 0);
end;
end;
////////////////////<2F><><EFBFBD><EFBFBD>ClientDataSet<65>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ϣ/////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Result := True;
except
Result := False;
Application.MessageBox('<27><><EFBFBD><EFBFBD>Cds<64><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2><CAA7>!', '<27><>ʾ', 0);
end;
end;
///////////////////////////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//////////////////////////////////////
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('<27><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 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('<27><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 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('<27><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 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('<27><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 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('<27><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
/////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ֶθ<D6B6>ֵ
/////////////////////////////////////////////////////
procedure SSetsavedata(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TRichEdit(Controls[i]).Text;
end
else if Controls[i] is TcxRichEdit then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TcxRichEdit(Controls[i]).Text;
end
else if Controls[i] is TMemo then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TMemo(Controls[i]).Text;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
if Controls[i] is TFTComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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 = '<27><><EFBFBD><EFBFBD>' 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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TcxTimeEdit(Controls[i]).Text);
2025-07-19 14:23:30 +08:00
end;
end;
end;
end;
end;
2025-10-18 14:10:28 +08:00
procedure SSetsavedataNew(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: Integer;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with Myparent do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
for i := 0 to ControlCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Controls[i].Tag = MyTag then
2025-07-19 14:23:30 +08:00
begin
if Controls[i] is TEdit then
begin
2025-10-18 14:10:28 +08:00
if Trim(TEdit(Controls[i]).Text) <> '' then
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TEdit(Controls[i]).Text);
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TRichEdit then
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TRichEdit(Controls[i]).Text;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TMemo then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TComboBox(Controls[i]).Text);
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TDateTimePicker then
begin
2025-10-18 14:10:28 +08:00
if TDateTimePicker(Controls[i]).ShowCheckbox then
2025-07-19 14:23:30 +08:00
begin
if TDateTimePicker(Controls[i]).Checked then
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TDateTimePicker(Controls[i]).DateTime;
2025-07-19 14:23:30 +08:00
end
else
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TDateTimePicker(Controls[i]).DateTime;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TBtnEditA then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TBtnEditC then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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);
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TcxTimeEdit then
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TcxTimeEdit(Controls[i]).Text);
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end;
end;
end;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
procedure RTSetsavedata(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: Integer;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with Myparent do
begin
for i := 0 to ControlCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Controls[i].Tag = MyTag then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
end;
end;
end;
2025-10-18 14:10:28 +08:00
procedure SSetsaveSql(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: Integer;
MCode: string;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with Myparent do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
for i := 0 to ControlCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Controls[i].Tag = MyTag then
2025-07-19 14:23:30 +08:00
begin
if Controls[i] is TEdit then
begin
2025-10-18 14:10:28 +08:00
if Trim(TEdit(Controls[i]).Text) <> '' then
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TEdit(Controls[i]).Text);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TRichEdit then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TRichEdit(Controls[i]).Text;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TcxRichEdit then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TcxRichEdit(Controls[i]).Text;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TMemo then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TMemo(Controls[i]).Text;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TFTComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if (TFTComboBox(Controls[i]).Text) <> '' then
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TFTComboBox(Controls[i]).Item2);
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TComboBox then
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TComboBox(Controls[i]).Text);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TDateTimePicker then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TDateTimePicker(Controls[i]).ShowCheckbox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TDateTimePicker(Controls[i]).Checked then
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TDateTimePicker(Controls[i]).DateTime;
2025-07-19 14:23:30 +08:00
end
else
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TDateTimePicker(Controls[i]).DateTime;
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TBtnEditA then
begin
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
MCode := Copy(Trim(Controls[i].Name), 1, Length(Trim(Controls[i].Name)) - 4);
ADOQueryCmd.FieldByName(MCode).Value := Trim(TcxButtonEdit(Controls[i]).Hint);
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end;
end;
end;
end;
end;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TRichEdit then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TRichEdit(Controls[i]).Text;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TCheckBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TCheckBox(Controls[i]).Checked = True then
ADOQueryCmd.FieldByName(Controls[i].Name).Value := 1
2025-07-19 14:23:30 +08:00
else
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := 0;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TcxRichEdit then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TcxRichEdit(Controls[i]).Text;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TMemo then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := TMemo(Controls[i]).Text;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TFTComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if (TFTComboBox(Controls[i]).Text) <> '' then
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TFTComboBox(Controls[i]).Item2);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(Controls[i].Name).Value := Trim(TComboBox(Controls[i]).Text);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TDateTimePicker then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TBtnEditA then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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);
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TcxButtonEdit then
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end;
end;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
procedure SSetsavedata10(ADOQueryCmd: TADOQuery; MyTable: string; Myparent: TWinControl; MyTag: integer);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: Integer;
FFName: string;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with Myparent do
begin
for i := 0 to ControlCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
FFName := Trim(Copy(Controls[i].Name, 1, (Length(Controls[i].Name) - 1)));
if Controls[i].Tag = MyTag then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Controls[i] is TEdit then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Trim(TEdit(Controls[i]).Text) <> '' then
ADOQueryCmd.FieldByName(FFName).Value := Trim(TEdit(Controls[i]).Text);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TRichEdit then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
if Controls[i] is TFTComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if (TFTComboBox(Controls[i]).Text) <> '' then
ADOQueryCmd.FieldByName(FFName).Value := Trim(TFTComboBox(Controls[i]).Item2);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
ADOQueryCmd.FieldByName(FFName).Value := Trim(TComboBox(Controls[i]).Text);
end
else if Controls[i] is TDateTimePicker then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TDateTimePicker(Controls[i]).ShowCheckbox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TDateTimePicker(Controls[i]).Checked then
ADOQueryCmd.FieldByName(FFName).Value := TDateTimePicker(Controls[i]).DateTime;
2025-07-19 14:23:30 +08:00
end
else
2025-10-18 14:10:28 +08:00
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);
2025-07-19 14:23:30 +08:00
end;
end;
end;
end;
end;
2025-10-18 14:10:28 +08:00
/////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/////////////////////////////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure SSetWinData(ADOQueryTmp: TADOQuery; mParent: TWinControl);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i, idx: integer;
mfield: string;
ma: TA;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with ADOQueryTmp do
begin
if isEmpty then
exit;
with mParent do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
for i := 0 to ControlCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Controls[i] is TLabel then
2025-07-19 14:23:30 +08:00
continue;
2025-10-18 14:10:28 +08:00
if Controls[i].Tag >= 999 then
2025-07-19 14:23:30 +08:00
continue;
2025-10-18 14:10:28 +08:00
mfield := Controls[i].Name;
///////////////////////////
//EDIT
if Controls[i] is TEdit then
begin
{ if Trim(Controls[i].Hint)='<27><>ֵ' 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)='<27><>ֵ' 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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Controls[i].Tag = 99 then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
idx := TftComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString));
TComboBox(Controls[i]).ItemIndex := idx;
2025-07-19 14:23:30 +08:00
end
else
begin
2025-10-18 14:10:28 +08:00
idx := TftComboBox(Controls[i]).IndexOfItem2(trim(fieldByName(mfield).AsString));
TComboBox(Controls[i]).ItemIndex := idx;
2025-07-19 14:23:30 +08:00
end;
end
2025-10-18 14:10:28 +08:00
//combobox
else if Controls[i] is TComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TComboBox(Controls[i]).Items.Count > 0 then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
//idx:=getCombIdx(TComboBox(Controls[i]),i,trim(fieldByName(mfield).AsString));
idx := TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString));
end
2025-07-19 14:23:30 +08:00
else
2025-10-18 14:10:28 +08:00
idx := -1;
TComboBox(Controls[i]).ItemIndex := idx;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TBtnEditA then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TBtnEditA(Controls[i]).Tag = 1 then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString);
TBtnEditA(Controls[i]).text := trim(fieldByName(mfield + 'Name').AsString);
end
2025-07-19 14:23:30 +08:00
else
begin
2025-10-18 14:10:28 +08:00
TBtnEditA(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString);
TBtnEditA(Controls[i]).text := trim(fieldByName(mfield).AsString);
2025-07-19 14:23:30 +08:00
end;
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TBtnEditC then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString);
TBtnEditC(Controls[i]).text := trim(fieldByName(mfield + 'Name').AsString);
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TDateTimePicker then
begin
2025-10-18 14:10:28 +08:00
if IsEmpty or fieldByName(mfield).IsNull then
2025-07-19 14:23:30 +08:00
begin
if TDateTimePicker(Controls[i]).Checked then
2025-10-18 14:10:28 +08:00
TDateTimePicker(Controls[i]).Date := strToDate('1990-01-01');
2025-07-19 14:23:30 +08:00
end
else
2025-10-18 14:10:28 +08:00
TDateTimePicker(Controls[i]).Date := fieldByName(mfield).AsDateTime;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is Tmemo then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Tmemo(Controls[i]).Text := trim(fieldByName(mfield).AsString);
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TcxRichEdit then
begin
TcxRichEdit(Controls[i]).Text := trim(fieldByName(mfield).AsString);
end
else if Controls[i] is TcxDateEdit then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if not IsEmpty and not fieldByName(mfield).IsNull then
TcxDateEdit(Controls[i]).text := fieldByName(mfield).AsString;
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TcxTimeEdit then
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end; // end for
end; // end with
end; //end for with
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
procedure SSetWinData30(ADOQueryTmp: TADOQuery; mParent: TWinControl; FTag: Integer);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i, idx: integer;
mfield: string;
ma: TA;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with ADOQueryTmp do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if isEmpty then
exit;
with mParent do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
for i := 0 to ControlCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
end;
procedure SClearData(mParent: TWinControl; FTag: Integer);
var
2025-10-18 14:10:28 +08:00
i, idx: integer;
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
else if Controls[i] is TMemo then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
TMemo(Controls[i]).Text := '';
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TDateTimePicker then
begin
2025-10-18 14:10:28 +08:00
if TDateTimePicker(Controls[i]).ShowCheckbox = True then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
TDateTimePicker(Controls[i]).Checked := False;
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
procedure SSetWinData10(ADOQueryTmp: TADOQuery; mParent: TWinControl);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i, idx: integer;
mfield: string;
2025-07-19 14:23:30 +08:00
ma: TA;
begin
2025-10-18 14:10:28 +08:00
with ADOQueryTmp do
2025-07-19 14:23:30 +08:00
begin
if isEmpty then
exit;
with mParent do
begin
for i := 0 to ControlCount - 1 do
begin
if Controls[i] is TLabel then
continue;
2025-10-18 14:10:28 +08:00
if Controls[i].Tag >= 999 then
2025-07-19 14:23:30 +08:00
continue;
2025-10-18 14:10:28 +08:00
//mfield:=Copy(Trim(Controls[i].Name),1,(Length(Trim(Controls[i].Name))-1));
mfield := Trim(Controls[i].Name);
2025-07-19 14:23:30 +08:00
if Controls[i] is TEdit then
begin
if Trim(fieldByName(mfield).AsString) <> '' then
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TComboBox(Controls[i]).Items.Count > 0 then
begin
idx := TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString));
end
else
idx := -1;
2025-07-19 14:23:30 +08:00
TComboBox(Controls[i]).ItemIndex := idx;
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TBtnEditA then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
if Trim(fieldByName(mfield).AsString) <> '' then
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
else if Controls[i] is TComboBox then
begin
if TComboBox(Controls[i]).Items.Count > 0 then
begin
2025-10-18 14:10:28 +08:00
idx := TComboBox(Controls[i]).Items.IndexOf(trim(fieldByName(mfield).AsString));
2025-07-19 14:23:30 +08:00
end
else
idx := -1;
TComboBox(Controls[i]).ItemIndex := idx;
end
else if Controls[i] is TBtnEditA then
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TBtnEditC then
begin
2025-10-18 14:10:28 +08:00
TBtnEditC(Controls[i]).TxtCode := trim(fieldByName(mfield).AsString);
TBtnEditC(Controls[i]).text := trim(fieldByName(mfield + 'Name').AsString);
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TDateTimePicker then
begin
2025-10-18 14:10:28 +08:00
if IsEmpty or fieldByName(mfield).IsNull then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if TDateTimePicker(Controls[i]).Checked then
TDateTimePicker(Controls[i]).Date := strToDate('1990-01-01');
2025-07-19 14:23:30 +08:00
end
else
2025-10-18 14:10:28 +08:00
TDateTimePicker(Controls[i]).Date := fieldByName(mfield).AsDateTime;
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is Tmemo then
begin
2025-10-18 14:10:28 +08:00
Tmemo(Controls[i]).Text := trim(fieldByName(mfield).AsString);
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TcxDateEdit then
begin
2025-10-18 14:10:28 +08:00
if not IsEmpty and not fieldByName(mfield).IsNull then
TcxDateEdit(Controls[i]).text := fieldByName(mfield).AsString;
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TcxTimeEdit then
begin
2025-10-18 14:10:28 +08:00
if not IsEmpty and (fieldByName(mfield).AsString <> '') then
TcxTimeEdit(Controls[i]).text := fieldByName(mfield).AsString;
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
{else if Controls[i] is TcxLookupComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
TcxLookupComboBox(Controls[i]).EditValue:=fieldByName(mfield).AsString;
TcxLookupComboBox(Controls[i]).EditingText:=fieldByName(mfield+'name').AsString;
end};
2025-07-19 14:23:30 +08:00
end; // end for
end; // end with
2025-10-18 14:10:28 +08:00
end; //end for with
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
//////////////////////////////////////////////
//////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>SQL<51><4C><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////
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('<27><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
end;
end;
////////////////////////////////////////////
////************<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***********/////
////////////////////////////////////////////
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
Continue;
2025-07-19 14:23:30 +08:00
if Controls[i] is TEdit then
begin
if Trim(TEdit(Controls[i]).Text) <> '' then
begin
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TEdit(Controls[i]).Text))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
begin
j := Pos(' ', Trim(TEdit(Controls[i]).Text));
if j > 0 then
begin
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Copy(Trim(TEdit(Controls[i]).Text), 1, j - 1) + '%');
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Copy(Trim(fsj1), 1, j - 1) + '%');
2025-07-19 14:23:30 +08:00
fsj1 := Copy(Trim(fsj1), j + 1, Length(Trim(fsj1)));
end
else
begin
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Trim(fsj1) + '%');
2025-07-19 14:23:30 +08:00
fsj1 := '';
end;
end;
end
else
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Trim(TEdit(Controls[i]).Text) + '%');
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TBtnEditA(Controls[i]).TxtCode))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + 'Name' + ' like ' + QuotedStr('%' + Trim(TBtnEditA(Controls[i]).Text) + '%')
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = 99 then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr(Trim(TBtnEditA(Controls[i]).TxtCode) + '%');
2025-07-19 14:23:30 +08:00
end;
end
else if Controls[i] is TBtnEditC then
begin
if Trim(TBtnEditC(Controls[i]).TxtCode) <> '' then
begin
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TBtnEditC(Controls[i]).TxtCode))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + 'Name' + ' like ' + QuotedStr('%' + Trim(TBtnEditC(Controls[i]).Text) + '%');
2025-07-19 14:23:30 +08:00
end;
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TFTComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Trim(TFTComboBox(Controls[i]).Text) <> '' then
2025-07-19 14:23:30 +08:00
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TFTComboBox(Controls[i]).Item2))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Trim(TFTComboBox(Controls[i]).Item2) + '%');
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TComboBox then
begin
if Trim(TComboBox(Controls[i]).Text) <> '' then
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TComboBox(Controls[i]).Text))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Trim(TComboBox(Controls[i]).Text) + '%');
2025-07-19 14:23:30 +08:00
end;
end;
end;
if Trim(Result) <> '' then
2025-10-18 14:10:28 +08:00
Result := Trim(RightBStr(Result, Length(Result) - 4));
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
function SGetFiltersHint(TMPanel: TPanel; EquTag, LikeTag: Integer): string;
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
Continue;
2025-07-19 14:23:30 +08:00
if Controls[i] is TEdit then
begin
if Trim(TEdit(Controls[i]).Text) <> '' then
begin
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Hint + '=' + QuotedStr(Trim(TEdit(Controls[i]).Text))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
begin
j := Pos(' ', Trim(TEdit(Controls[i]).Text));
if j > 0 then
begin
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Hint + ' like ' + QuotedStr('%' + Copy(Trim(TEdit(Controls[i]).Text), 1, j - 1) + '%');
2025-07-19 14:23:30 +08:00
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
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Hint + ' like ' + QuotedStr('%' + Copy(Trim(fsj1), 1, j - 1) + '%');
2025-07-19 14:23:30 +08:00
fsj1 := Copy(Trim(fsj1), j + 1, Length(Trim(fsj1)));
end
else
begin
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Hint + ' like ' + QuotedStr('%' + Trim(fsj1) + '%');
2025-07-19 14:23:30 +08:00
fsj1 := '';
end;
end;
end
else
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Hint + ' like ' + QuotedStr('%' + Trim(TEdit(Controls[i]).Text) + '%');
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TBtnEditA then
begin
if Trim(TBtnEditA(Controls[i]).Text) <> '' then
begin
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TBtnEditA(Controls[i]).TxtCode))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + 'Name' + ' like ' + QuotedStr('%' + Trim(TBtnEditA(Controls[i]).Text) + '%');
2025-07-19 14:23:30 +08:00
end;
end
else if Controls[i] is TBtnEditC then
begin
if Trim(TBtnEditC(Controls[i]).TxtCode) <> '' then
begin
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TBtnEditC(Controls[i]).TxtCode))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + 'Name' + ' like ' + QuotedStr('%' + Trim(TBtnEditC(Controls[i]).Text) + '%');
2025-07-19 14:23:30 +08:00
end;
end
2025-10-18 14:10:28 +08:00
else if Controls[i] is TFTComboBox then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if Trim(TFTComboBox(Controls[i]).Text) <> '' then
2025-07-19 14:23:30 +08:00
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TFTComboBox(Controls[i]).Item2))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Trim(TFTComboBox(Controls[i]).Item2) + '%');
2025-07-19 14:23:30 +08:00
end
else if Controls[i] is TComboBox then
begin
if Trim(TComboBox(Controls[i]).Text) <> '' then
if Controls[i].Tag = EquTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + '=' + QuotedStr(Trim(TComboBox(Controls[i]).Text))
2025-07-19 14:23:30 +08:00
else if Controls[i].Tag = LikeTag then
2025-10-18 14:10:28 +08:00
Result := Result + 'and ' + Controls[i].Name + ' like ' + QuotedStr('%' + Trim(TComboBox(Controls[i]).Text) + '%');
2025-07-19 14:23:30 +08:00
end;
end;
end;
end;
2025-10-18 14:10:28 +08:00
////////////////////////////////////////////////////////////
//<2F><><EFBFBD>ù<EFBFBD><C3B9>˺<EFBFBD><CBBA><EFBFBD>
////////////////////////////////////////////////////////////
procedure SDofilter(ADOQry: TADOQuery; FilterStr: string);
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
try
ADOQry.DisableControls;
with ADOQry do
begin
if Trim(FilterStr) = '' then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Filtered := False;
end
else
begin
Filtered := False;
Filter := FilterStr;
Filtered := True;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
end;
finally
ADOQry.EnableControls;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
procedure SDofilter10(cds_Main: TClientDataSet; FilterStr: string);
2025-07-19 14:23:30 +08:00
begin
try
2025-10-18 14:10:28 +08:00
cds_Main.DisableControls;
with cds_Main do
2025-07-19 14:23:30 +08:00
begin
if Trim(FilterStr) = '' then
begin
2025-10-18 14:10:28 +08:00
Filtered := False;
2025-07-19 14:23:30 +08:00
end
else
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
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('<27>ֶ<EFBFBD>ȡֵMaxNo<4E><6F><EFBFBD>󣬲鿴<F3A3ACB2><E9BFB4><' + Trim(MyTable) + '><3E><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><' + MyField + '>'), '<27><>ʾ', 0);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
procedure SCreateCDS20(SADOQry: TADOQuery; mClientDataset: TclientDataSet);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
i: integer;
2025-07-19 14:23:30 +08:00
mfieldName: string;
2025-10-18 14:10:28 +08:00
mSize: integer;
2025-07-19 14:23:30 +08:00
begin
mfieldName := '';
mClientDataset.FieldDefs.Clear;
with SADOQry do
begin
2025-10-18 14:10:28 +08:00
for i := 0 to fieldCount - 1 do //
2025-07-19 14:23:30 +08:00
begin
if (Fields[i].DataType = ftString) and (Fields[i].Size = 0) then
begin
mSize := 1;
end
else
mSize := Fields[i].Size;
2025-10-18 14:10:28 +08:00
mfieldName := trim(fields[i].FieldName);
2025-07-19 14:23:30 +08:00
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);
2025-10-18 14:10:28 +08:00
mClientDataset.Close;
2025-07-19 14:23:30 +08:00
mClientDataset.CreateDataSet;
end;
2025-10-18 14:10:28 +08:00
procedure SCreateCDSOnly(SADOQry: TADOQuery; mClientDataset: TclientDataSet);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if fromADO.IsEmpty then
2025-07-19 14:23:30 +08:00
exit;
fromADO.first;
k := 1;
try
toCDS.DisableControls;
toCDS.Filtered := false;
while not fromADO.Eof do
begin
with toCDS do
begin
2025-10-18 14:10:28 +08:00
Append;
for i := 0 to fromADO.FieldCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
fields[i].value := fromADO.Fields[i].Value;
2025-07-19 14:23:30 +08:00
end;
fieldByName('Sflag').AsString := '1';
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
inc(k);
2025-10-18 14:10:28 +08:00
Post;
2025-07-19 14:23:30 +08:00
end;
fromADO.Next;
end;
2025-10-18 14:10:28 +08:00
if not toCDS.IsEmpty then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
toCDS.First;
2025-07-19 14:23:30 +08:00
end;
finally
toCDS.EnableControls;
end;
end;
2025-10-18 14:10:28 +08:00
procedure SInitFtComBoxBySql(ADOQueryTmp: TADOQuery; cb: TFtComboBox; FlagType: string; Boxtype: integer; showMsg: string; emptyFlag: Boolean; mSql: string);
2025-07-19 14:23:30 +08:00
begin
with ADOQueryTmp do
begin
close;
2025-10-18 14:10:28 +08:00
sql.clear;
2025-07-19 14:23:30 +08:00
sql.Add(mSql);
Open;
if isEmpty then
begin
2025-10-18 14:10:28 +08:00
application.MessageBox(pChar(showMsg), '', 0);
2025-07-19 14:23:30 +08:00
exit;
end;
2025-10-18 14:10:28 +08:00
cb.Clear;
while not EOF do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
if not emptyFlag then
2025-10-18 14:10:28 +08:00
cb.Items.Add('');
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
if emptyFlag and (cb.Items.Count > 0) then
cb.ItemIndex := 0;
2025-07-19 14:23:30 +08:00
end;
end;
procedure SInitComBoxBySql(ADOQueryTmp: TADOQuery; cb: TComboBox; emptyFlag: Boolean; mSql: string);
begin
with ADOQueryTmp do
begin
close;
2025-10-18 14:10:28 +08:00
sql.clear;
2025-07-19 14:23:30 +08:00
sql.Add(mSql);
Open;
if isEmpty then
begin
2025-10-18 14:10:28 +08:00
//plication.MessageBox(pChar(showMsg),'',0);
2025-07-19 14:23:30 +08:00
exit;
end;
cb.Clear;
2025-10-18 14:10:28 +08:00
while not EOF do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
cb.Items.Add(trim(fieldByName('Name').AsString));
next;
2025-07-19 14:23:30 +08:00
end;
if not emptyFlag then
cb.Items.Add('');
if emptyFlag and (cb.Items.Count > 0) then
cb.ItemIndex := 0;
end;
end;
2025-10-18 14:10:28 +08:00
//////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD>combox<6F>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><>XC_CustCode<64><65><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Boxtype:0; <20><><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>1;
//////////////////////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
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('<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣά<CFA2><CEAC>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>δ<EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>' + 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);
2025-07-19 14:23:30 +08:00
var
A: TA;
begin
(c3.Properties as TcxComboBoxProperties).Items.Clear;
with ADOQueryTmp do
begin
close;
2025-10-18 14:10:28 +08:00
sql.clear;
sql.Add(' select * from XC_CustCode ' + ' where Flag=''' + trim(FlagType) + ''' ' + ' order by orderno ');
2025-07-19 14:23:30 +08:00
Open;
if isEmpty then
begin
2025-10-18 14:10:28 +08:00
Application.MessageBox(PChar('<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣά<CFA2><CEAC>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>δ<EFBFBD>ҵ<EFBFBD>:' + Shmeg), '', 0);
2025-07-19 14:23:30 +08:00
exit;
end;
2025-10-18 14:10:28 +08:00
while not EOF do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
A := TA.Create(Nil);
A.s := trim(fieldByName('Code').AsString);
2025-07-19 14:23:30 +08:00
if PState = 1 then
2025-10-18 14:10:28 +08:00
(c3.Properties as TcxComboBoxProperties).Items.AddObject(trim(fieldByName('name').AsString), TObject(A))
2025-07-19 14:23:30 +08:00
else if PState = 0 then
begin
2025-10-18 14:10:28 +08:00
(c3.Properties as TcxComboBoxProperties).Items.Add(trim(fieldByName('name').AsString));
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
next;
2025-07-19 14:23:30 +08:00
end;
if not IsNull then
(c3.Properties as TcxComboBoxProperties).Items.Add('');
end;
end;
2025-10-18 14:10:28 +08:00
procedure SInitCxGridComboBoxBySql(ADOQueryTmp: TADOQuery; c3: TcxGriddbColumn; FSql: string; PState: Integer; IsNull: Boolean; Shmeg: string);
var
A: TA;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
(c3.Properties as TcxComboBoxProperties).Items.Clear;
2025-07-19 14:23:30 +08:00
with ADOQueryTmp do
begin
close;
2025-10-18 14:10:28 +08:00
sql.clear;
sql.Add(FSql);
2025-07-19 14:23:30 +08:00
Open;
if isEmpty then
begin
2025-10-18 14:10:28 +08:00
//Application.MessageBox(PChar('δ<>ҵ<EFBFBD>:'+shmeg),'',0);
2025-07-19 14:23:30 +08:00
exit;
2025-10-18 14:10:28 +08:00
end;
while not EOF do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
(c3.Properties as TcxComboBoxProperties).Items.Add(trim(fieldByName('name').AsString));
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
next;
end;
if not IsNull then
begin
(c3.Properties as TcxComboBoxProperties).Items.Add('');
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
2025-07-19 14:23:30 +08:00
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;
2025-10-18 14:10:28 +08:00
sql.clear;
2025-07-19 14:23:30 +08:00
sql.Add(FSql);
Open;
if isEmpty then
begin
2025-10-18 14:10:28 +08:00
Application.MessageBox(PChar(<>ҵ<EFBFBD>:' + Shmeg), '', 0);
2025-07-19 14:23:30 +08:00
exit;
end;
2025-10-18 14:10:28 +08:00
while not EOF do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
A := TA.Create(Nil);
A.s := trim(fieldByName('Code').AsString);
2025-07-19 14:23:30 +08:00
if PState = 1 then
2025-10-18 14:10:28 +08:00
(c3.Properties as TcxComboBoxProperties).Items.AddObject(trim(fieldByName('name').AsString), TObject(A))
2025-07-19 14:23:30 +08:00
else if PState = 0 then
begin
2025-10-18 14:10:28 +08:00
(c3.Properties as TcxComboBoxProperties).Items.Add(trim(fieldByName('name').AsString));
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
next;
2025-07-19 14:23:30 +08:00
end;
if not IsNull then
begin
(c3.Properties as TcxComboBoxProperties).Items.Add('');
end;
end;
end;
2025-10-18 14:10:28 +08:00
///////////////////////////////////////////////////
//*****<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ***** //
/////////////////////////////////////////////////
function SSWR(s: real): real;
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
r1, r2: real;
s1, s2: string;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
r1 := int(s);
r2 := frac(s);
s1 := copy(floattostr(r1), 1, length(floattostr(r1)));
if length(floattostr(r2)) >= 5 then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure CopyAddRow(Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet);
2025-07-19 14:23:30 +08:00
var
AA: array[0..50] of string;
i, j: Integer;
begin
2025-10-18 14:10:28 +08:00
if CDS_Sub.IsEmpty then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.Append;
CDS_Sub.Post;
Exit;
2025-07-19 14:23:30 +08:00
end;
for i := 0 to Tv1.ColumnCount - 1 do
begin
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
end;
with CDS_Sub do
begin
2025-10-18 14:10:28 +08:00
Append;
2025-07-19 14:23:30 +08:00
for i := 0 to Tv1.ColumnCount - 1 do
begin
if AA[i] <> '' then
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value := AA[i];
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Post;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
procedure CopyAddRowBand(Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
AA: array[0..50] of string;
2025-07-19 14:23:30 +08:00
i, j: Integer;
begin
2025-10-18 14:10:28 +08:00
if CDS_Sub.IsEmpty then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.Append;
CDS_Sub.Post;
Exit;
2025-07-19 14:23:30 +08:00
end;
for i := 0 to Tv1.ColumnCount - 1 do
begin
2025-10-18 14:10:28 +08:00
AA[i] := Trim(CDS_Sub.fieldbyname(Tv1.Columns[i].DataBinding.FieldName).AsString);
2025-07-19 14:23:30 +08:00
end;
with CDS_Sub do
begin
2025-10-18 14:10:28 +08:00
Append;
2025-07-19 14:23:30 +08:00
for i := 0 to Tv1.ColumnCount - 1 do
begin
if AA[i] <> '' then
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(Tv1.Columns[i].DataBinding.FieldName).Value := AA[i];
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Post;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure CopyAddRowCDS(CDS_Sub: TClientDataSet);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
AA: array[0..200] of string;
2025-07-19 14:23:30 +08:00
i, j: Integer;
begin
2025-10-18 14:10:28 +08:00
if CDS_Sub.IsEmpty then
Exit;
for i := 0 to CDS_Sub.FieldCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
AA[i] := Trim(CDS_Sub.fieldbyname(CDS_Sub.Fields[i].FieldName).AsString);
2025-07-19 14:23:30 +08:00
end;
with CDS_Sub do
begin
2025-10-18 14:10:28 +08:00
Append;
for i := 0 to CDS_Sub.FieldCount - 1 do
2025-07-19 14:23:30 +08:00
begin
if AA[i] <> '' then
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(CDS_Sub.Fields[i].FieldName).Value := AA[i];
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Post;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
procedure OneKeyPost(Tv1: TcxGridDBTableView; CDS_Sub: TClientDataSet);
2025-07-19 14:23:30 +08:00
var
FValue, FFValue, FColumn, FFColumn: string;
begin
2025-10-18 14:10:28 +08:00
//FColumn:=tv1.Columns[Tv1.Controller.FocusedColumnIndex].DataBinding.FieldName;
//FFColumn:=Tv1.Columns[Tv1.Controller.FocusedColumnIndex].Summary.GroupFormat;
2025-07-19 14:23:30 +08:00
FColumn := Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName;
FFColumn := Tv1.Controller.FocusedColumn.Summary.GroupFormat;
2025-10-18 14:10:28 +08:00
FValue := Trim(CDS_Sub.fieldbyname(FColumn).AsString);
2025-07-19 14:23:30 +08:00
if Trim(FFColumn) <> '' then
begin
2025-10-18 14:10:28 +08:00
FFValue := Trim(CDS_Sub.fieldbyname(FFColumn).AsString);
2025-07-19 14:23:30 +08:00
end;
with CDS_Sub do
begin
DisableControls;
2025-10-18 14:10:28 +08:00
First;
2025-07-19 14:23:30 +08:00
while not Eof do
begin
2025-10-18 14:10:28 +08:00
Edit;
2025-07-19 14:23:30 +08:00
if FValue = '' then
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(FColumn).Value := null;
2025-07-19 14:23:30 +08:00
end
else
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(FColumn).Value := FValue;
2025-07-19 14:23:30 +08:00
end;
if Trim(FFColumn) <> '' then
begin
if FFValue = '' then
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(FFColumn).Value := null;
2025-07-19 14:23:30 +08:00
end
else
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(FFColumn).Value := FFValue;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
Post;
2025-07-19 14:23:30 +08:00
Next;
end;
EnableControls;
end;
end;
2025-10-18 14:10:28 +08:00
procedure OneKeyPostBand(Tv1: TcxGridDBBandedTableView; CDS_Sub: TClientDataSet);
2025-07-19 14:23:30 +08:00
var
FValue, FFValue, FColumn, FFColumn: string;
begin
2025-10-18 14:10:28 +08:00
//FColumn:=tv1.Columns[Tv1.Controller.FocusedColumnIndex].DataBinding.FieldName;
//FFColumn:=Tv1.Columns[Tv1.Controller.FocusedColumnIndex].Summary.GroupFormat;
2025-07-19 14:23:30 +08:00
FColumn := Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName;
FFColumn := Tv1.Controller.FocusedColumn.Summary.GroupFormat;
2025-10-18 14:10:28 +08:00
FValue := Trim(CDS_Sub.fieldbyname(FColumn).AsString);
2025-07-19 14:23:30 +08:00
if Trim(FFColumn) <> '' then
begin
2025-10-18 14:10:28 +08:00
FFValue := Trim(CDS_Sub.fieldbyname(FFColumn).AsString);
2025-07-19 14:23:30 +08:00
end;
with CDS_Sub do
begin
DisableControls;
2025-10-18 14:10:28 +08:00
First;
2025-07-19 14:23:30 +08:00
while not Eof do
begin
2025-10-18 14:10:28 +08:00
Edit;
2025-07-19 14:23:30 +08:00
if FValue = '' then
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(FColumn).Value := null;
2025-07-19 14:23:30 +08:00
end
else
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(FColumn).Value := FValue;
2025-07-19 14:23:30 +08:00
end;
if Trim(FFColumn) <> '' then
begin
if FFValue = '' then
begin
2025-10-18 14:10:28 +08:00
CDS_Sub.FieldByName(FFColumn).Value := null;
2025-07-19 14:23:30 +08:00
end
else
2025-10-18 14:10:28 +08:00
begin
CDS_Sub.FieldByName(FFColumn).Value := FFValue;
end;
end;
Post;
Next;
end;
EnableControls;
end;
end;
///////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>ȡ<EFBFBD><C8A1>ˮ<EFBFBD><CBAE>
//mFlag:ǰ׺<C7B0><D7BA>mTable:<3A><><EFBFBD><EFBFBD>
//mlen:<3A><>ˮ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD>; mtype:<3A>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD> 0 <20><><EFBFBD><EFBFBD>
///////////////////////////////////////////////////
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;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
if not Result then
application.MessageBox(Pchar('<27>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>(' + mFlag + ')'), '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_ICONINFORMATION);
except
result := false;
application.MessageBox(Pchar('<27>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>(' + mFlag + ')'), '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_ICONINFORMATION);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
///////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>ȡ<EFBFBD><C8A1>ˮ<EFBFBD><CBAE>
//mFlag:ǰ׺<C7B0><D7BA>mTable:<3A><><EFBFBD><EFBFBD>
//mlen:<3A><>ˮ<EFBFBD>ų<EFBFBD><C5B3><EFBFBD>; mtype:<3A>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD> 0 <20><><EFBFBD><EFBFBD> HZype 0 <20><><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>1 <20><><EFBFBD>£<EFBFBD>2 <20><>
///////////////////////////////////////////////////
function GetLSNoHZ(ADOQueryTmp: TADOQuery; var mMaxNo: string; mFlag: string; mTable: string; mlen: integer; mtype: integer = 0; HZype: integer = 0): Boolean;
2025-07-19 14:23:30 +08:00
begin
try
with ADOQueryTmp do
begin
2025-10-18 14:10:28 +08:00
Close;
2025-07-19 14:23:30 +08:00
sql.Clear;
2025-10-18 14:10:28 +08:00
sql.Add('exec Get_SY_MaxBH_HZ ');
2025-07-19 14:23:30 +08:00
sql.Add(' ' + quotedStr(mFlag));
sql.Add(',' + quotedStr(mTable));
sql.Add(',' + intTostr(mlen));
sql.Add(',' + intTostr(mtype));
2025-10-18 14:10:28 +08:00
sql.Add(',' + intTostr(HZype));
// ShowMessage(SQL.Text);
2025-07-19 14:23:30 +08:00
Open;
2025-10-18 14:10:28 +08:00
if RecordCount > 0 then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
mMaxNo := trim(fieldByName('MaxBH').AsString);
2025-07-19 14:23:30 +08:00
if mMaxNo <> '' then
2025-10-18 14:10:28 +08:00
result := true
2025-07-19 14:23:30 +08:00
else
Result := false;
end
else
begin
2025-10-18 14:10:28 +08:00
result := false;
2025-07-19 14:23:30 +08:00
end;
end;
if not Result then
2025-10-18 14:10:28 +08:00
application.MessageBox(Pchar('<27>޷<EFBFBD><DEB7><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>(' + mFlag + ')'), '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_ICONINFORMATION);
2025-07-19 14:23:30 +08:00
except
2025-10-18 14:10:28 +08:00
result := false;
application.MessageBox(Pchar('<27>޷<EFBFBD><DEB7><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>(' + mFlag + ')'), '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_ICONINFORMATION);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
procedure ReadCxGrid(fileName: string; cxgrid: TcxGridDBTableView; filePack: string = '<27><><EFBFBD><EFBFBD>');
2025-07-19 14:23:30 +08:00
var
mFileName: string;
begin
2025-10-18 14:10:28 +08:00
mFileName := ExtractFilePath(Application.ExeName) + 'Layout\' + filePack + '\' + trim(fileName) + '.dbg';
//<2F>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>лָ<D0BB>
if FileExists(mFileName) then
cxgrid.RestoreFromIniFile(mFileName);
CreateGroupSummarry(cxgrid);
end;
///////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡcxGridCol<6F><6C><EFBFBD><EFBFBD>
//fileName <20>Ƽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ڵ<EFBFBD>caption<6F><6E><EFBFBD><EFBFBD>caption<6F><6E><EFBFBD><EFBFBD>
///////////////////////////////////////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure ReadCxBandedGrid(fileName: string; cxgrid: TcxGridDBBandedTableView; filePack: string = '<27><><EFBFBD><EFBFBD>');
var
mFileName: string;
begin
mFileName := ExtractFilePath(Application.ExeName) + 'Layout\' + filePack + '\' + trim(fileName) + '.dbg';
//<2F>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>лָ<D0BB>
if FileExists(mFileName) then
cxgrid.RestoreFromIniFile(mFileName);
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
///////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>дcxGridCol<6F><6C><EFBFBD>õ<EFBFBD>.dbg<62>ļ<EFBFBD><C4BC><EFBFBD>
//Ĭ<><C4AC><EFBFBD>Ƽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ڵ<EFBFBD>caption<6F><6E><EFBFBD><EFBFBD>
///////////////////////////////////////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure WriteCxGrid(fileName: string; cxgrid: TcxGridDBTableView; filePack: string = '<27><><EFBFBD><EFBFBD>');
2025-07-19 14:23:30 +08:00
var
mFileName: string;
begin
2025-10-18 14:10:28 +08:00
mFileName := ExtractFilePath(Application.ExeName) + 'Layout\' + filePack + '\' + trim(fileName) + '.dbg';
if not DirectoryExists(ExtractFileDir(mFileName)) then
CreateDir(ExtractFileDir(mFileName));
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
cxgrid.StoreToIniFile(mFileName);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
end;
///////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>дcxGridCol<6F><6C><EFBFBD>õ<EFBFBD>.dbg<62>ļ<EFBFBD><C4BC><EFBFBD>
//Ĭ<><C4AC><EFBFBD>Ƽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ڵ<EFBFBD>caption<6F><6E><EFBFBD><EFBFBD>
///////////////////////////////////////////////////////////////
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure WriteCxBandedGrid(fileName: string; cxgrid: TcxGridDBBandedTableView; filePack: string = '<27><><EFBFBD><EFBFBD>');
var
mFileName: string;
begin
mFileName := ExtractFilePath(Application.ExeName) + 'Layout\' + filePack + '\' + trim(fileName) + '.dbg';
if not DirectoryExists(ExtractFileDir(mFileName)) then
CreateDir(ExtractFileDir(mFileName));
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
cxgrid.StoreToIniFile(mFileName);
end;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
procedure CreateGroupSummarry(tv1: TcxGridDBTableView);
var
csg: TcxDataSummaryGroup;
csglink: TcxDataSummaryGroupItemLink;
csgItem: TcxDataSummaryItem;
i: integer;
mFieldName: string;
begin
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
with tv1.DataController.Summary do
begin
try
csg := DataController.Summary.SummaryGroups.Add; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
csg.Links.Clear;
for i := 0 to tv1.ColumnCount - 1 do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if not tv1.Columns[i].Visible then
continue;
mFieldName := tv1.Columns[i].DataBinding.FieldName;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Group Row<6F>ϵĻ<CFB5><C4BB><EFBFBD>ͬʱʹ<CAB1><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч
//<2F><><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĻ<CFB5><C4BB><EFBFBD><EFBFBD><EFBFBD>
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
csgItem := csg.SummaryItems.Add;
csgItem.ItemLink := tv1.Columns[i]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>1
csgItem.Position := spGroup;
csgItem.Kind := skSum;
csgItem.Format := trim(tv1.Columns[i].Caption) + 'С<><D0A1>=#,0.0';
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
tv1.Columns[i].Summary.GroupFooterKind := skSum;
tv1.Columns[i].Summary.GroupFooterFormat := '#,0.00';
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08: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;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
tv1.Columns[i].Summary.GroupFooterKind := skCount;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
//tv1.Columns[i].Summary.GroupFooterFormat := '#,0.00';
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Group Row<6F>ϵĻ<CFB5><C4BB><EFBFBD>ͬʱʹ<CAB1><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч
//<2F><><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĻ<CFB5><C4BB><EFBFBD><EFBFBD><EFBFBD>
csgItem := csg.SummaryItems.Add;
csgItem.ItemLink := tv1.Columns[i]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>1
csgItem.Kind := skCount;
//csgItem.Format := 'С<><D0A1>=#,0.0';
2025-07-19 14:23:30 +08:00
end
else
begin
2025-10-18 14:10:28 +08:00
csglink := csg.Links.Add;
csglink.ItemLink := tv1.Columns[i]; //<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
//<2F><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5>ж<EFBFBD><D0B6>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3AC><EFBFBD><EFBFBD><EBBDAB>Щ<EFBFBD>м<EFBFBD><D0BC>
//SummaryGroupItemLink<6E>У<EFBFBD>û<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
finally
2025-07-19 14:23:30 +08:00
end;
end;
end;
2025-10-18 14:10:28 +08:00
procedure TcxGridToExcel(mfileName: string; gridName: TcxGrid);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
saveDialog: TSaveDialog;
2025-07-19 14:23:30 +08:00
begin
try
2025-10-18 14:10:28 +08:00
saveDialog := TSaveDialog.Create(nil);
saveDialog.Filter := 'xls(*.xls)|*.xls|ȫ<><C8AB>(*.*)|*.*';
saveDialog.Options := [ofOverwritePrompt];
saveDialog.FileName := mfileName;
if saveDialog.Execute then
if Assigned(gridName) then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
try
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
ExportGridToExcel(saveDialog.FileName, gridName);
except
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڱ༭״̬!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
exit;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
application.MessageBox('<27>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end
else
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
2025-07-19 14:23:30 +08:00
finally
2025-10-18 14:10:28 +08:00
saveDialog.Free;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
procedure TcxGridToHTML(mfileName: string; gridName: TcxGrid);
2025-07-19 14:23:30 +08:00
var
saveDialog: TSaveDialog;
begin
try
2025-10-18 14:10:28 +08:00
saveDialog := TSaveDialog.Create(nil);
saveDialog.Filter := 'HTML(*.HTML)|*.HTML|ȫ<><C8AB>(*.*)|*.*';
2025-07-19 14:23:30 +08:00
saveDialog.Options := [ofOverwritePrompt];
2025-10-18 14:10:28 +08:00
saveDialog.FileName := mfileName;
2025-07-19 14:23:30 +08:00
if saveDialog.Execute then
if Assigned(gridName) then
begin
try
2025-10-18 14:10:28 +08:00
ExportGridToHTML(saveDialog.FileName, gridName);
2025-07-19 14:23:30 +08:00
except
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7><>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4>ڱ༭״̬!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
exit;
end;
application.MessageBox('<27>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end
else
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
finally
saveDialog.Free;
end;
end;
2025-10-18 14:10:28 +08:00
function ReadINIFileStr(ininame, TypeName: string; ValueName, ValueMR: string): string;
var
programIni: Tinifile; //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
FileName, ValueZS: string;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
First;
while not eof do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Tv1.GetColumnByFieldName(AdoQueryTemp.fieldbyname('ColName').AsString).Visible := False;
Tv1.GetColumnByFieldName(AdoQueryTemp.fieldbyname('ColName').AsString).Hidden := True;
Next;
2025-07-19 14:23:30 +08:00
end;
end;
end;
end;
2025-10-18 14:10:28 +08:00
procedure ColumnBandView(AdoQueryTemp: TADOQuery; Tv1: TcxGridDBBandedTableView; MKName10: string);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
fsj: string;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with AdoQueryTemp do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Close;
sql.Clear;
sql.Add('select * from Table_Column where CxTabName=''' + Trim(MKName10) + ''' and Owner=''' + Trim(DCode) + '''');
sql.Add(' and TCNotVisble=1 ');
open;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
if AdoQueryTemp.IsEmpty = False then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
with AdoQueryTemp do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
First;
while not eof do
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
fsj := Trim(AdoQueryTemp.fieldbyname('ColName').AsString);
// Tv1.Controller.ge
Tv1.GetColumnByFieldName(fsj).Visible := False;
Tv1.GetColumnByFieldName(fsj).Hidden := True;
Next;
2025-07-19 14:23:30 +08:00
end;
end;
end;
end;
2025-10-18 14:10:28 +08:00
procedure GetSWLDZ(IPStr: string);
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
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);
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
if CDS_MainSel.IsEmpty then
Exit;
CDS_MainSel.DisableControls;
with CDS_MainSel do
2025-07-19 14:23:30 +08:00
begin
First;
while not Eof do
begin
2025-10-18 14:10:28 +08:00
if FieldByName('SSel').AsBoolean = not FSel then
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
Edit;
FieldByName('SSel').Value := FSel;
Post;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
Next;
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
CDS_MainSel.EnableControls;
2025-07-19 14:23:30 +08:00
end;
2025-10-18 14:10:28 +08:00
function num2ceng(strArabic: string): string;//<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ӣ<EFBFBD><D3A2>
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');
2025-07-19 14:23:30 +08:00
var
2025-10-18 14:10:28 +08:00
t, j, glb, t1: integer;
ts: string;
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
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; //<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>0<EFBFBD><30><EFBFBD><EFBFBD>
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 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λʱ<CEBB><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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]
2025-07-19 14:23:30 +08:00
else
2025-10-18 14:10:28 +08:00
//result := result+sw[trunc(t/10)]+'-'+gw[t mod 10];
result := result + sw[trunc(t / 10)] + ' ' + gw[t mod 10];
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
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
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
delete(strArabic, 1, 1);
appendstr(result, 'and ');
result := result + readu1000(strArabic);
2025-07-19 14:23:30 +08:00
end;
end;
2025-10-18 14:10:28 +08:00
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;
2025-07-19 14:23:30 +08:00
begin
2025-10-18 14:10:28 +08:00
result := '';
s := strArabic;
p := pos('.', strArabic);
if p = 0 then
begin
result := num2ceng(strArabic) + 'Only';
exit;
end
else
begin
i := length(s) - p; //<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>λ
delete(strArabic, p, i + 1); //ɾ<><C9BE>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
result := num2ceng(strArabic) + 'Point';
end;
for x := 1 to i do //ת<><D7AA>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
Exit;
with ADOCmd do
begin
Close;
SQL.Clear;
sql.Add(DelSql);
ExecSQL;
end;
end;
ClientDataSet1.Delete;
2025-07-19 14:23:30 +08:00
end;
function FormatTitle(S: string): string;
2025-10-18 14:10:28 +08:00
{<7B><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>еİ<D0B5><C4B0><EFBFBD><EFBFBD><EFBFBD><E6BBBB>ȫ<EFBFBD><C8AB><EFBFBD>ַ<EFBFBD>}
2025-07-19 14:23:30 +08:00
var
OldStr, NewStr: AnsiString;
i: Integer;
const
SiStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\~!#$%^&()_+|[]{};'':",./<>?';
DoStr = '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣࣱ<DAA3><E0A3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܡ<EFBFBD><DCA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>ۣݣ<DBA3><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
begin
for i := 1 to 95 do
begin
2025-10-18 14:10:28 +08:00
OldStr := copy(SiStr, i, 1);
2025-07-19 14:23:30 +08:00
2025-10-18 14:10:28 +08:00
NewStr := copy(DoStr, 2 * i - 1, 2);
2025-07-19 14:23:30 +08:00
S := StringReplace(S, OldStr, NewStr, [rfReplaceAll]);
end;
S := Trim(S);
2025-10-18 14:10:28 +08:00
result := S;
2025-07-19 14:23:30 +08:00
end;
end.