数据控制控件
# PinToo 控件使用(数据控件)
该组件中包含了用于与数据库建立连接的常用控件与配套。
# 1. TfxRFConnection组件
- 引用单元 TARSCompClient
TfxRFConnection是一个与TARS中间件进行呼叫的连接组件。
可以通过双击TfxRFConnection组件进行连接设置。

# 1.1. 属性(Properties)
- TfxRFConnection组件主要属性
属性 | 功能说明 |
---|---|
Active | 指定是否激活连接 |
ClientAddr | 指客户端地址 |
ServerDateTime | 获取服务器时间 |
AccessToken | 获取访问令牌 |
AccessTokenExpireTime | 指示访问令牌到期时间 |
DeviceID | 设备唯一ID |
UploadFileMaxSize | 指定文件上传大小 |
IsConnected | 判断是否处于连接状态 |
ServerAddr | 指定TARS中间件地址 |
ServerPort | 指定TARS中间件端口 |
SecureKey | 指定TARS安全密钥 |
ForceEncryption | 指定是否启用强制加密数据 |
Compression | 数据压缩级别,默认为:cFast(快速压缩) |
ConnectionTimeout | 指定连接超时,单位为毫秒 |
ResponseTimeout | 指定响应超时,单位为毫秒 |
Blocking | 指定是否阻塞模式 |
LoginOptions | 用户验证设置 |
ConnectionCheckingMode | 指定连接检检测模式 |
AutoConnect | 指定是否自动连接服务端 |
# 1.1.1. ClientAddr属性
/// <summary>当前客户端的IP地址</summary>
property ClientAddr: string read GetClientAddr;
2
# 1.1.2. ClientAddr属性
/// <summary>服务器时间</summary>
property ServerDateTime: TDateTime read GetServerDateTime;
2
# 1.1.3. AccessToken属性
/// <summary>访问令牌</summary>
property AccessToken: string read FAccessToken;
2
# 1.1.4. AccessTokenExpireTime属性
/// <summary>访问令牌到期时间</summary>
property AccessTokenExpireTime: TDateTime read FAccessTokenExpireTime;
2
# 1.1.5. UploadFileMaxSize属性
/// <summary>上传文件大小</summary>
property UploadFileMaxSize: Int64 read GetUploadFileMaxSize;
2
# 1.1.6. DeviceID属性
/// <summary>设备唯一ID</summary>
property DeviceID: string read GetDeviceID;
2
# 1.1.7. IsConnected属性
/// <summary>判断是否处于连接状态</summary>
property IsConnected: Boolean read GetIsConnected;
2
# 1.1.8. ServerAddr属性
/// <summary>服务器地址</summary>
property ServerAddr: string read GetServerAddr write SetServerAddr;
2
# 1.1.9. ServerPort属性
/// <summary> 服务器端口</summary>
property ServerPort: string read GetServerPort write SetServerPort;
2
# 1.1.10. SecureKey属性
/// <summary>安全密钥,客户端和服务端需要配对,同时需要设置 ForceEncryption = True。 </summary>
property SecureKey: string read GetSecureKey write SetSecureKey;
2
# 1.1.11. ForceEncryption属性
/// <summary> 强制加密数据</summary>
property ForceEncryption: Boolean read GetForceEncryption write SetForceEncryption;
2
# 1.1.12. Compression属性
/// <summary>数据压缩级别,默认为:cFast(快速压缩)。</summary>
property Compression: TRtcCompressLevel read GetCompression write SetCompression;
2
Compression数据压缩级别分为:cNote(不压缩)、cFast(快速压缩)、cDefault(缺省压缩)、cMax(最大压缩)。
# 1.1.13. ConnectionTimeout属性
/// <summary>连接超时,单位为毫秒</summary>
property ConnectionTimeout: Integer read GetConnectionTimeout write SetConnectionTimeout;
2
# 1.1.14. ResponseTimeout属性
/// <summary>响应超时,单位为毫秒</summary>
property ResponseTimeout: Integer read GetResponseTimeout write SetResponseTimeout;
2
# 1.1.15. Blocking属性
/// <summary>阻塞模式</summary>
property Blocking: Boolean read FBlocking write FBlocking default True;
2
# 1.1.16. LoginOptions属性
/// <summary>用户验证设置</summary>
property LoginOptions: TLoginOptions read FLoginOptions write FLoginOptions;
2
LoginOptions属性包含三个子属性:MD5Salt(MD5盐值)、Password(用户密码)、UserName(用户名称)。
这个需要与TARS中间件配合使用,当TARS中间件勾选了需要用户验证时可用。
# 1.1.17. ConnectionCheckingMode属性
/// <summary>连接检检测模式</summary>
property ConnectionCheckingMode: TConnectionCheckingMode read FConnectionCheckingMode write FConnectionCheckingMode;
2
ConnectionCheckingMode属性包含:cmAlways(总是)、cmTiming(定期)、cmNone(从不)。
# 1.1.18. ConnectionDefName属性
/// <summary> 连接名称</summary>
property ConnectionDefName: string read GetConnectionDefName write SetConnectionDefName;
2
# 1.1.19. AutoConnect属性
/// <summary>自动连接服务端</summary>
property AutoConnect: Boolean read GetAutoConnect write SetAutoConnect default True;
2
# 1.2. 方法(Methods)
- TfxRFConnection组件主要方法
方法 | 功能说明 |
---|---|
Connect | 连接服务端 |
Disconnect | 断开连接 |
GetConnectionDefNames | 获取数据库连接名称列表 |
ApplyUpdates | 批量事务更新多个TfxRFDataSet数据集 |
Login | 登录验证 |
Logout | 注销登录 |
AddConnectionDef | 增加数据库连接配置 |
GetClients | 客户端类型,包含普通客户端,Websocket 客户端 |
SendMessage | 向客户端发送消息 |
GenerateId | 生成ID |
# 1.2.1. Connect方法
/// <summary> 连接服务端 </summary>
function Connect(const ASilent: Boolean = False): Boolean;
2
# 1.2.2. Disconnect方法
/// <summary> 断开连接 </summary>
procedure Disconnect;
2
# 1.2.3. GetConnectionDefNames方法
/// <summary> 获取数据库连接名称列表 </summary>
procedure GetConnectionDefNames(const ADefNames: TStrings = nil);
2
# 1.2.4. GetTableNames方法
/// <summary>获取数据库表名列表</summary>
procedure GetTableNames(const ACatalogName, ASchemaName, APattern: string; AList: TStrings);
2
# 1.2.5. ApplyUpdates方法
/// <summary> 批量事务更新多个TRFDataSet </summary>
procedure ApplyUpdates(const ADataSets: array of TRFDataSet; const ASQL: string = '');
2
# 1.2.6. Login方法
/// <summary> 登录验证 </summary>
function Login: Boolean;
2
# 1.2.7. Logout方法
/// <summary>注销登录</summary>
procedure Logout;
2
# 1.2.8. AddConnectionDef方法
/// <summary>增加数据库连接配置</summary>
function AddConnectionDef(const AName, AConnectionString: string): Boolean;
2
# 1.2.9. GetClients方法
/// <param name="AClientTypes">客户端类型,包含普通客户端,Websocket 客户端</param>
function GetClients(const AClientTypes: TClientTypes = [ctNormalClient, ctWebSocketClient]): TArray<TClient>;
2
# 1.2.10. SendMessage方法
function SendMessage(AClient: TClient; const AMessage: string): Boolean;
# 1.2.11. GenerateId方法
function GenerateId: Int64;
# 2. TfxRFDataSet组件
- 引用单元 TARSCompClient
TfxRFDataSet 是一个数据集组件。它可与 TfxRFConnection组件配合使用。
该组件用于从数据库中获取数据形成数据集信息。数据集组件是数据感知组中组件的数据来源,也是数据图表等的数据来源。
- TfxRFDataSet组件主要属性
属性 | 功能说明 |
---|---|
Connection | 指定一个TfxRFConnection对象 |
ConnectionDefName | 指定一个连接名称 |
FetchOptions | 表示用于控制数据提取的选项集 |
SQL | 指定数据集SQL语句 |
UpdateOptions | 更新选项 |
PagingOptions | 分页选项 |
Conditions | SQL条件 |
PageCount | 表示分页的页数 |
RecordCount | 记录数 |
# 2.1. 属性(Properties)
# 2.1.1. Connection属性
指定数据集连接的来源。连接的来源有两种,一种来自TfxRFConnection组件,另一种来自于PinToo的TARS连接设置。
//连接来源可以来自同一窗体中的TfxRFConnection组件
fxRFDataSet1.Connection := FfxRFConnection1;
//连接来源也可以来自PinToo的帐套设置
fxRFDataSet1.Connection := fxDM.DBConn;
2
3
4
# 2.1.2. ConnectionDefName属性
指定默认TARS连接帐套名称,TfxRFConnection组件通过指定帐套与TARS进行数据交互。
//指定帐套名称
fxRFDataSet1.ConnectionDefName := 'FastERP';
2
# 2.1.3. FetchOptions属性
用于控制数据和元数据提取的一组选项。
所述TFetchOptions类表示属性集控制FireDAC组件以及如何的物理学层命令接口获取数据和元数据:
- 如何获取(CursorKind,Mode,RowsetSize)。例如,可以一次获取所有结果集记录,也可以按需获取记录。
- 如何保留资源(Unidirectional,AutoClose,Cache,AutoFetchAll)。
- 如何获取和缓存BLOB字段,嵌套记录集和元数据(Items,Cache)。
- 如何处理主从数据集关系(DetailDelay,DetailOptimize,DetailCascade)。
- 行集分页(RecsMax,RecsSkip)。
- TFDTable操作模式(CursorKind,LiveWindowParanoic,LiveWindowFastFirst)。
- 如何对数据集中的记录进行计数(RecordCountMode)。
# 2.1.4. SQL属性
该属性是构造数据集使用的SQL语句。
示例
fxRFDataSet1.SQL.Text := 'SELECT * FROM Table_Test';
# 2.1.5. UpdateOptions属性
指数据集的更新选项,如指定更新表名、主键字段、更新方式等。
属性说明
- KeyFields 数据表主键字段名。
- UpdateMode 数据数提交模式,分别有三种:upWhereAll、upWhereChanged、upWhereKeyOnly。
- UpdateTableName 提交数据集用于更新的数据表名。
# 2.1.6. PagingOptions属性
指定数据集分页参数。
属性说明
- PageIndex 页索引,从0到N。0表示第一页。
- PageSize 每页显示记录数。
示例
//每页显示500条记录
fxRFDataSet1.PagingOptions.PageSize := 500;
2
# 2.1.7. Conditions属性
指定SQL语句Where条件。
示例
fxRFDataSet1.Conditions.Disable;//必需先禁用
fxRFDataSet1.Conditions.Add('FilterSQL', 'FInterID=1', true);
fxRFDataSet1.Conditions.Enable;
2
3
# 2.1.8. PageCount属性
表示分页的页数。
示例
var
PageCount:integer;
begin
PageCount := fxRFDataSet1.PageCount;
end;
2
3
4
5
# 2.1.9. RecordCount属性
该属性用于显示当前数据集中包含的记录的数目。
示例
var
RecordCount :integer;
begin
RecordCount := fxRFDataSet1.RecordCount;
if RecordCount = 0 then
begin
Showmessage('数据集为空!')
end;
end;
2
3
4
5
6
7
8
9
# 2.2. 事件(Events)
- TfxRFDataSet组件主要事件
事件 | 何时触发 |
---|---|
AfterClose | 在应用程序关闭数据集之后发生 |
AfterDelete | 在应用程序删除记录后发生 |
AfterEdit | 在应用程序开始编辑记录后发生 |
AfterInsert | 在应用程序插入新记录后发生 |
AfterOpen | 在应用程序完成打开数据集之后且发生任何数据访问之前发生 |
AfterPost | 在应用程序将活动记录写入数据库或更改日志并返回浏览状态之后发生 |
AfterScroll | 在应用程序从一条记录滚动到另一条记录后发生 |
BeforeClose | 在数据集关闭之前立即发生 |
BeforeDelete | 在应用程序尝试删除活动记录之前发生 |
BeforeEdit | 在应用程序进入活动记录的编辑模式之前发生 |
BeforeInsert | 在应用程序进入插入模式之前发生 |
BeforeOpen | 在应用程序执行打开数据集的请求之前发生 |
BeforePost | 在应用程序将活动记录的更改发布到数据库或更改日志之前发生。 |
BeforeScroll | 在应用程序从一条记录滚动到另一条记录之前发生 |
OnNewRecord | 当应用程序插入或附加新的数据集记录时发生 |
# 2.2.1. AfterClose事件
在应用程序完成取消对活动记录的修改的请求之后发生。
编写AfterCancel事件处理程序,以在应用程序取消对活动记录的更改后采取特定的措施。在更新当前位置后,由Cancel方法调用AfterCancel,并在必要时释放对活动记录的锁定,并将数据集状态设置为dsBrowse。如果应用程序在Cancel事件之后将控制权返回给用户之前需要其他处理,请在AfterCancel事件中对其进行编码。
# 2.2.2. AfterDelete事件
在应用程序删除记录后发生。
编写AfterDelete事件处理程序,以在应用程序删除数据集中的活动记录后立即采取特定措施。在删除记录,将数据集状态设置为dsBrowse并重新定位当前记录后,Delete会调用AfterDelete。
# 2.2.3. AfterEdit事件
在应用程序开始编辑记录后发生。
编写AfterEdit事件处理程序,以在数据集进入编辑模式后立即采取特定措施。AfterEdit在启用记录编辑,重新计算计算的字段并调用数据事件处理程序以处理记录更改之后,由Edit调用。
# 2.2.4. AfterInsert事件
在应用程序插入新记录后发生。
编写AfterInsert事件处理程序,以在应用程序插入记录后立即采取特定措施。插入或追加新记录后,Insert和Append方法会生成AfterInsert事件。
# 2.2.5. AfterOpen事件
在应用程序完成打开数据集之后且发生任何数据访问之前发生。
编写AfterOpen事件处理程序,以在应用程序打开数据集后立即采取特定措施。AfterOpen数据集建立后访问其数据和数据集被放入dsBrowse状态被调用。例如,AfterOpen事件处理程序可能会检查ini文件,以确定应用程序上次运行时在数据集中触摸的最后一条记录,并将数据集放置在该记录上。
# 2.2.6. AfterPost事件
在应用程序将活动记录写入数据库或更改日志并返回浏览状态之后发生。
编写AfterPost事件处理程序,以在应用程序将更改发布到活动记录后立即采取特定措施。在对记录进行修改或插入后调用AfterPost。
# 2.2.7. AfterScroll事件
在应用程序从一条记录滚动到另一条记录后发生。
编写AfterScroll事件处理程序,以在应用程序滚动到另一个记录后立即执行特定操作,该操作是调用First,Last,MoveBy,Next,Prior,FindKey,FindFirst,FindNext,FindLast,FindPrior和Locate方法的结果。在这些方法以及在数据集中的记录之间切换的所有其他方法触发的所有其他事件之后,将调用AfterScroll。
# 2.2.8. BeforeClose事件
在数据集关闭之前立即发生。
编写一个BeforeClose事件,以在应用程序关闭数据集之前采取特定的措施。调用Close或将Active属性设置为false会导致调用BeforeClose事件处理程序。
# 2.2.9. BeforeDelete事件
在应用程序尝试删除活动记录之前发生。
在应用程序删除活动记录之前,编写一个BeforeDelete事件处理程序以执行特定的操作。在实际删除记录之前,Delete会调用BeforeDelete。
在PinToo中,利用此事件,例如,应用程序可能会显示一个对话框,要求您在删除记录之前进行确认。拒绝确认后,应用程序可以通过调用中止过程中止删除。
# 2.2.10. BeforeEdit事件
在应用程序进入活动记录的编辑模式之前发生。
在应用程序启用对活动记录的编辑之前,编写一个BeforeEdit事件处理程序以执行特定的操作。例如,保留数据库编辑日志的应用程序可以使用BeforeEdit事件在进入编辑状态之前记录编辑请求,时间和用户。
# 2.2.11. BeforeInsert事件
在应用程序进入插入模式之前发生。
编写BeforeInsert事件处理程序,以便在应用程序插入或附加新记录之前采取特定的操作。Insert或Append方法在将数据集设置为dsInsert状态之前生成BeforeInsert方法。
# 2.2.12. BeforeOpen事件
在应用程序执行打开数据集的请求之前发生。
在应用程序打开数据集进行查看或编辑之前,编写一个BeforeOpen事件处理程序以执行特定的操作。当应用程序将数据集的Active属性设置为true或应用程序调用Open时,将触发BeforeOpen。
# 2.2.13. BeforePost事件
在应用程序将活动记录的更改发布到数据库或更改日志之前发生。
编写一个BeforePost事件处理程序,以在应用程序发布数据集更改之前执行特定的操作。当应用程序调用Post方法时,将触发BeforePost。发布检查以确保存在所有必填字段,然后在发布记录之前调用BeforePost。
应用程序可以使用BeforePost对数据更改进行有效性检查,然后再提交。如果遇到有效性问题,则可以调用Abort取消Post操作或引发异常。
# 2.2.14. BeforeScroll事件
在应用程序从一条记录滚动到另一条记录之前发生。
编写一个BeforeScroll事件处理程序,以在应用程序滚动到另一个记录之前立即执行特定操作,该操作是调用First,Last,MoveBy,Next,Prior,FindKey,FindFirst,FindNext,FindLast,FindPrior和Locate方法的结果。在这些方法触发的所有其他事件以及在数据集中的记录之间切换的所有其他方法触发的所有其他事件之前,调用BeforeScroll。
# 2.2.15. OnNewRecord事件
当应用程序插入或附加新的数据集记录时发生。
编写OnNewRecord事件处理程序,以在应用程序插入或追加新记录时执行特定的操作。OnNewRecord被称为插入或追加过程的一部分。应用程序可以使用OnNewRecord事件来设置记录的初始值,或作为在相关数据集中实现级联插入的一种方式。
# 2.3. 方法(Methods)
- TfxRFDataSet组件主要方法
方法 | 功能说明 |
---|---|
Active | 是否激活数据集 |
Append | 在数据集的末尾添加一个新的空记录 |
AddWhere | 添加Where条件 |
Close | 关闭数据集 |
OpenData | 打开数据集 |
OpenSQL | 打开指定的SQL命令 |
ExecSQL | 执行指定的SQL命令 |
Execute | 执行SQL命令 |
FieldByName | 根据名称查找字段 |
FirstPage | 定位到数据集分页的第一页 |
NextPage | 定位到数据集分页的下一页 |
PriorPage | 定位到数据集分页的上一页 |
LastPage | 定位到数据集分页的最末页 |
NextRecordset | 下一个数据集 |
PriorRecordset | 上一个数据集 |
Insert | 在数据集中插入新的空记录 |
First | 移动到数据集中的第一条记录 |
Prior | 移动到数据集中上一条记录 |
Next | 移动到数据集中的下一条记录 |
Last | 移动到数据集中的最后一条记录 |
Post | 提交数据集 |
ApplyUpdates | 更新数据集 |
# 2.3.1. Active 方法
是否激活数据集
示例
//激活数据集时,确保fxRFDateSet1.SQL.Text属性有SQL命令
fxRFDateSet1.Active := True;
2
# 2.3.2. Append 方法
在数据集的末尾添加一个新的空记录
示例
//新增一条记录
fxRFDateSet1.Append;
fxRFDateSet1.FieldByName('ID').asIngter := 1;
fxRFDateSet1.FieldByName('Qty').asFloat := 100.23;
2
3
4
# 2.3.3. AddWhere 方法
添加Where条件
示例
//新增SQL Where 条件
fxRFDateSet1.AddWhere('ID=123');
fxRFDateSet1.AddWhere('Qty=100');
2
3
# 2.3.4. Close 方法
关闭数据集
示例
fxRFDateSet1.Close;
# 2.3.5. OpenData 方法
打开数据集
示例
fxRFDateSet1.SQL.Text := 'Select * from Table_Cust where ID = 123';
fxRFDateSet1.Execute;
2
# 2.3.6. OpenSQL 方法
指定SQL语句打开数据集
示例
fxRFDateSet1.OpenSQL('Select * from Table_Cust where ID = 123');
# 2.3.7. ExecSQL 方法
执行指定的SQL命令
示例
fxRFDateSet1.ExecSQL('Update Table_Cust Set Qty = 100 where ID = 123');
# 2.3.8. Execute 方法
执行SQL命令
示例
fxRFDateSet1.SQL.Text := 'Update Table_Cust Set Qty = 100 where ID = 123';
fxRFDateSet1.Execute;
2
# 2.3.9. FieldByName 方法
根据名称查找字段
示例
fxRFDateSet1.Edit;
fxRFDateSet1.FiledByName('Qty').asFloat := 100;
2
# 2.3.10. FirstPage 方法
定位到数据集分页的第一页
# 2.3.11. NextPage 方法
定位到数据集分页的下一页
# 2.3.12. PriorPage 方法
定位到数据集分页的上一页
# 2.3.13. LastPage 方法
定位到数据集分页的最末页
# 2.3.14. NextRecordset 方法
下一个数据集
示例
//获取当前数据集的上一个数据集
//当数据集周时执行两个SQL命令时,并且FetchOptions.AutoClose = false。
var
vDataSet:TfxRFDateSet;
begin
vDataSet := fxRFDateSet1.NextRecordset;
end;
2
3
4
5
6
7
# 2.3.15. Insert 方法
在数据集中插入新的空记录
# 2.3.16. First 方法
移动到数据集中的第一条记录
# 2.3.17. Prior 方法
移动到数据集中上一条记录
# 2.3.18. Next 方法
移动到数据集中的下一条记录
# 2.3.19. Last 方法
移动到数据集中的最后一条记录
# 2.3.20. PriorRecordset 方法
上一个数据集
示例
//获取当前数据集的上一个数据集
//当数据集周时执行两个SQL命令时,并且FetchOptions.AutoClose = false。
var
vDataSet:TfxRFDateSet;
begin
vDataSet := fxRFDateSet1.PriorRecordset;
end;
2
3
4
5
6
7
# 2.3.21. Post 方法
提交数据集
示例
fxRFDateSet1.Edit;
fxRFDateSet1.FiledByName('Qty').asFloat := 100;
fxRFDateSet1.Post;
2
3
# 2.3.22. ApplyUpdates 方法
更新数据集,数据集中的数据将保存到更新表中。
示例
//提交数据
if fxRFDataSet1.ApplyUpdates(-1) = 0 then
begin
Showmessage('数据保存成功!');
end;
2
3
4
5
# 3. TfxRFStoredProc
- 引用单元 TARSCompClient
该组件用于执行数据库中的存储过程。
该组件用于执行数据库中的存储过程。按照要求将存储过程的名称及参数信息获取输入,可执行相应的存储过程。
# 3.1. 属性
名称 | 说明 |
---|---|
Active | 数据集是否开启 |
Aggregrates | 为数据集定义的客户端汇总的集合 |
AggregratesActive | 是否自动计算汇总值 |
AutoCalcFields | 确定何时触发OnCalcFields事件以及何时计算查找字段值 |
Connection | 指定控件使用的连接控件 |
Filter | 设置过滤条件 |
Filtered | 是否开启过滤器 |
Params | 设置存储过程使用的参数 |
StoredProcName | 指定在服务器端调用的存储过程的名称 |
# 3.1.1. ExecProc
procedure ExecProc;
function ExecProc(const AProcName: String): LongInt;
function ExecProc(const AProcName: String; const AParams: array of Variant): LongInt;
function ExecProc(const AProcName: String; const AParams: array of Variant; const ATypes: array of TFieldType): LongInt;
2
3
4
执行存储过程。
//1
RFStoredProc1.StoredProcName := 'myproc';
RFStoredProc1.Prepare;
RFStoredProc1.ParamByName('inval').Value := 100;
RFStoredProc1.ExecProc;
ShowMessage(RFStoredProc1.ParamByName('outval').AsString);
//2
RFStoredProc1.ExecProc('myproc');
//3
RFStoredProc1.ExecProc('myproc;2', [100, 'qweqwe']);
//4
RFStoredProc1.ExecProc('myproc', [100, 'qweqwe'], [ftInteger, ftWideString]);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 4. TfxRFWechatMP组件
引用单元 TARSCompClient DataSource组件用来为数据感知组中的组件提供数据来源。
TfxRFWechatMP组件主要属性
属性 | 功能说明 |
---|---|
AccountName | 微信公众号的名称,在TARS中有相关设置 |
Connection | 设置连接方式,可选方式有TfxRFConnection组件/PinToo帐套设置 |
# 4.1. 方法(Methods)
- TfxRFWechatMP组件主要方法
方法 | 功能说明 |
---|---|
SendCustomMessage | 发送客文本消息 |
SendTemplateMessage | 发送模板消息 |
# 4.1.1. SendCustomMessage 方法
//功能:发送客文本消息
//返回值:Boolean ,True=成功,False=发送失败
//参数:AOpenID 用户 OpenID, AContent 发送内容
function SendCustomMessage(const AOpenID, AContent: string): Boolean;
2
3
4
示例
begin
fxRFWechatMP1.SendCustomMessage('oTpfe0VB-9vClZ4uSpTD05XbBNyI','消息内容');
End;
2
3
# 4.1.2. SendTemplateMessage 方法
//功能:发送模板消息
//返回值:Boolean ,True=成功,False=发送失败
//参数:AJsonContent 发送内容 Json格式
function SendTemplateMessage(const AJsonContent: string): Boolean;
2
3
4
示例
JsonObject:TJSONObject;
begin
JsonObject := TJSONObject.Create
.AddPair('touser', 'oTpfe0VB-9vClZ4uSpTD05XbBNyI')
.AddPair('template_id', 'kAWKL_v_H8wH0H8vdJq01n1W-EUKcmQ2Hxv3tJyGXlo')
.AddPair('url', 'www.isoface.cn')
.AddPair('topcolor', '#FF0000')
.AddPair('data', TJSONObject.Create
.AddPair('Caption', TJSONObject.Create
.AddPair('value', '这是由PInToo发出的一条消息!')
.AddPair('color', '#173177')
)
);
fxRFWechatMP1.SendTemplateMessage(JsonObject.ToJson);
End;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 5. TfxRFFileTransfer组件
- 引用单元 TARSCompClient
该组件用于与TARS服务器进行文件传输。
# 5.1. 属性
属性 | 功能说明 |
---|---|
Connection | 设置连接方式,可选方式有TRFConnection组件/帐套设置 |
# 5.2. 事件
事件 | 何时触发 |
---|---|
OnDeleteDone | 当TARS云端文件删除完成后触发该事件 |
OnDownloadDone | 当文件下载完成后触发该事件 |
OnDownloadProgress | 当正在下载文件时触发该事件,可用于展示文件下载进度 |
OnUploadDone | 当文件上传完成后触发该事件 |
OnUploadProgress | 当文件正在上传时触发该事件 |
# 5.3. 方法
# 5.3.1. Upload 方法
function Upload(ALocalFileName: String; ARemoteFilPath: String;
ARemoteFileName: String): Boolean;
2
该方法可将本地文件上传到TARS服务器。
- ALocalFileName: 本地文件(需在Smart程序目录下)地址。
- ARemoteFilePath: TARS服务器上传地址所在目录。
- ARemoteFileName: TARS服务器上传文件的地址。
文件上传示例代码如下:
procedure TMyHandler.Button1Click;
//点击按钮以上传文件
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.Upload('icon.ico','upload','icon.ico') then
ShowMessage('文件上传成功!');
end;
2
3
4
5
6
7
# 5.3.2. Download 方法
function Download(ARemoteFileName: String; ALocalNewFileName: String): Boolean;
从TARS服务器指定的文件目录中将指定文件下载到本地。
- ARemoteFileName: TARS文件服务器指定的文件地址。
- ALocalNewFileName: 下载到本地的文件地址。
文件下载示例代码如下:
//点击按钮以下载文件
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.Download('upload\icon.ico','icon.ico') then
ShowMessage('文件下载成功!');
end;
2
3
4
5
6
# 5.3.3. Delete 方法
function Delete(ARemoteFileName: String): Boolean;
删除TARS文件服务器中指定的文件。
- ARemoteFileName: TARS文件服务器指定的文件地址。
文件删除示例代码如下:
//点击按钮以删除文件
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.Delete('upload\icon.ico') then
ShowMessage('文件删除成功!');
end;
2
3
4
5
6
# 5.3.4. FileMD5 方法
function FileMD5(ARemoteFileName: String): String;
返回位于TARS服务器中的文件的MD5校验值。可用于检测文件是否被恶意修改。
- ARemoteFileName: TARS文件服务器指定的文件地址。
获取文件校验值的示例代码如下:
procedure TMyHandler.Button1Click;
//点击按钮以获取文件校验码
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
fxLabel1.Caption := FThis.RFFileTransfer1.FileMD5('upload\icon.ico');
end;
2
3
4
5
6
# 5.3.5. CreateDir 方法
function CreateDir(AFilePath: String): Boolean;
在TARS服务器中创建文件目录。
- AFilePath: 创建的文件夹的目录路径,如果该目录的上级目录不存在则会同时新建此目录。
创建文件目录的示例代码如下:
//点击按钮新增目录
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.CreateDir('upload\downloads') then
ShowMessage('新增目录成功!');
end;
2
3
4
5
6
# 5.3.6. MoveFile 方法
function MoveFile(ARemoteFileName: String; ANewFileName: String): Boolean;
将TARS服务器中的文件移动至新的目录中。
- ARemoteFileName: TARS文件服务器指定的文件地址。
- ANewFileName: TARS文件服务器指定的移动文件地址。
移动文件的示例代码如下:
//点击移动文件
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.MoveFile('upload\icon.ico','icon.ico') then
ShowMessage('文件移动成功!');
end;
2
3
4
5
6
# 5.3.7. CopyFile 方法
function CopyFile(ARemoteFileName: String; ANewFileName: String): Boolean;
将TARS服务器中的文件复制到新的目录中。
- ARemoteFileName: TARS文件服务器指定的文件地址。
- ANewFileName: TARS文件服务器指定的复制文件地址。
移动文件的示例代码如下:
//点击复制文件
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.CopyFile('icon.ico','upload\icon.ico') then
ShowMessage('文件复制成功!');
end;
2
3
4
5
6
# 5.3.8. RenameFile 方法
function RenameFile(ARemoteFileName: String; ANewFileName: String): Boolean;
将TARS服务器中的文件进行重新命名。
- ARemoteFileName: TARS文件服务器指定的文件地址。
- ANewFileName: TARS文件服务器指定的新命名的文件地址。
重命名文件的示例代码如下:
//点击重命名文件
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.RenameFile('upload\icon.ico','upload\icon111.ico') then
ShowMessage('文件重命名成功!');
end;
2
3
4
5
6
# 5.3.9. FileExists 方法
function FileExists(ARemoteFileName: String): Boolean;
检验TARS服务器中指定目录的文件是否存在。
- ARemoteFileName: TARS文件服务器指定的文件地址。
检验文件是否存在的示例代码如下:
//点击以检验文件是否存在
begin
fxRFFileTransfer1.Connection := fxDM.DBConn;
if fxRFFileTransfer1.FileExists('upload\icon.ico') then
ShowMessage('icon.ico文件存在于upload目录中!');
end;
2
3
4
5
6
# 6. TfxRFSMSSender组件
该组件可用于对接短信平台实现在TARS上使用短信发送的功能。具体使用方法可参考PinToo之阿里云短信发送。
# 6.1. 7.6.1.属性
属性 | 功能说明 |
---|---|
AccessKeyId | 短信服务提供商的AccessKeyId |
AcessKeySecret | 短信服务提供商的AccessKeySecret |
Connection | 指定连接的来源 |
PhoneNumbers | 接收短信的手机号码,如有多个号码请用; 分隔 |
Provider | 短信服务提供商选择,有阿里云和阿里大于可选 |
SigName | 短信签名显示 |
TemplateCode | 短信模板名称 |
TemplateParam | 短信模板参数 |
以上参数的详细说明请参考阿里云短信服务文档 (opens new window)。
# 6.2. 方法
# 6.2.1. Execute 方法
执行短信发送的操作。
//不经过TARS发送短信
var
SendSmsRequest: TSendSmsRequest;
begin
SendSmsRequest := TSendSmsRequest.Create;
try
SendSmsRequest.AccessKeyId := edtAccessKeyId.Text;
SendSmsRequest.AccessKeySecret := edtAccessKeySecret.Text;
SendSmsRequest.TemplateCode := edtTemplateCode.Text;
SendSmsRequest.TemplateParam := edtTemplateContent.Text;
SendSmsRequest.SignName := edtFreeSignName.Text;
SendSmsRequest.PhoneNumbers := edtMobileNumber.Text;
SendSmsRequest.Provider := cbbApiProviders.ItemIndex;
if SendSmsRequest.Execute then
Showmessage('短信下发成功!')
else
Showmessage(SendSmsRequest.ResultMessage);
finally
FreeAndNil(SendSmsRequest);
end;
end;
//经过TARS发送短信
//以下两个参数如果为空,则使用服务端预设值
fxRFSMSSender1.AccessKeyId := edtAccessKeyId.Text;
fxRFSMSSender1.AccessKeySecret := edtAccessKeySecret.Text;
fxRFSMSSender1.TemplateCode := edtTemplatecode.Text;
fxRFSMSSender1.TemplateParam := edtTemplatecontent.Text;
fxRFSMSSender1.SignName := edtFreesignname.Text;
fxRFSMSSender1.PhoneNumbers := edtMobilenumber.Text;
fxRFSMSSender1.Provider := TSmsApiProvider(FThis.cbbApiProviders.ItemIndex);
if fxRFSMSSender1.Execute then
Showmessage('短信下发成功!');
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 7. TfxDataSource组件
- 引用单元 DataDB
TfxDataSource组件用来为数据感知组中的组件提供数据来源。
# 7.1. 7.5.1.属性
属性 | 功能说明 |
---|---|
DataSet | 设定使用的数据集名称 |
Enabled | 是否启用该组件 |
# 8. TfxDBData组件
- 引用单元 DataDB
TfxDBData组件是内存中的数据集组件。
# 8.1. 属性
属性 | 说明 |
---|---|
Aggregates | 统计合计信息 |
Constraints | 设置字段的限制类型信息 |
DataNodeName | 设置连接的node节点数据库的名称 |
FieldDefs | 设计数据表字段的相关信息 |
IndexDefs | 设计数据表的索引信息 |
Params | 设计数据查询使用的参数信息 |
FileName | 设置数据存储文件的名称 |
# 8.2. 方法
# 8.2.1. CreateDataSet
procedure CreateDataSet;
创建数据集。
# 8.2.2. Open
procedure Open;
打开数据集。
# 8.2.3. First
procedure Open;
跳转至第一条记录。
# 8.2.4. Prior
procedure Prior;
跳转至前一条记录。
# 8.2.5. Next
procedure Next;
跳转至后一条记录。
# 8.2.6. Last
procedure Last;
跳转至最后一条记录。
# 8.2.7. Edit
procedure Edit;
编辑当前指向的记录。
# 8.2.8. Cancel
procedure Cancel;
取消对当前记录的修改。
# 8.2.9. Post
procedure Post;
提交数据。
# 8.2.10. Insert
procedure Insert;
插入记录。
# 8.2.11. Append
procedure Append;
添加记录。
# 8.2.12. Delete
procedure Delete;
删除记录。
# 8.2.13. Refresh
procedure Refresh;
刷新记录。
# 8.2.14. SubmitUpdates
procedure SubmitUpdates;
保存并提交数据。
# 8.2.15. ToJSONObjectString
function ToJSONObjectString(const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): string;
将数据集中当前选择的的数据行转换为JSON对象的数据集。输出的格式为字段名称与字段值组成的键值对。
{"code":"Code1","name":1}
# 8.2.16. ToJSONArrayString
function ToJSONArrayString(const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): string;
将数据集中的数据转换为JSONArray。是由JSON对象组成的队列。
[{"code":"Code1","name":1},{"code":"Code2","name":2}]
# 8.2.17. ToJSONObject
function ToJSONObject(const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): TJSONObject;
将数据集中当前指向的数据行转换为JSON对象类型。
# 8.2.18. ToJSONArray
function ToJSONArray(const AOnlyUpdatedRecords: Boolean = False; const AChildRecords: Boolean = True; const AValueRecords: Boolean = True; const AEncodeBase64Blob: Boolean = True): TJSONArray;
将数据集中的数据转换为JSON对象序列类型。
# 8.2.19. SaveStructure
function SaveStructure: TJSONArray;
获取当前的数据集的结构信息,以JSONArray的方式输出,包括数据表的字段名称、数据类型、大小等信息。
# 8.2.20. LoadStructureJSONArray
procedure LoadStructureJSONArray(const AJSONArray: TJSONArray; const AOwns: Boolean = True);
将数据集的数据表结构从JSONArrary中加载。
# 8.2.21. LoadStructureJSONString
procedure LoadStructureJSONString(const AJSONString: string); overload;
将数据集的数据表结构从JSON格式的字符串中读取加载。
# 8.2.22. LoadFromJSONObject
procedure LoadFromJSONObject(const AJSONObject: TJSONObject; const AOwns: Boolean = True)
数据集从JSON对象中获取加载单条记录。
# 8.2.23. LoadFromJSONArray
procedure LoadFromJSONArray(const AJSONArray: TJSONArray; const AOwns: Boolean = True);
数据集从JSON对象序列中获取加载多条记录。
# 8.2.24. LoadFromJSONString
procedure LoadFromJSONString(const AJSONString: string);
数据集从JSON对象的字符串中获取加载数据记录。
# 8.2.25. MergeFromJSONObject
procedure MergeFromJSONObject(const AJSONObject: TJSONObject; const AOwns: Boolean = True);
数据集从JSON对象中读取单条数据记录并合并至数据集中。
# 8.2.26. MergeFromJSONString
procedure MergeFromJSONString(const AJSONString: string);
数据集从JSON对象字符串中读取数据记录并合并至数据集中。
# 8.2.27. ValidateJSONObject
function ValidateJSONObject(const AJSONObject: TJSONObject; const ALang: TLanguageType = enUS; const AOwns: Boolean = True): TJSONArray;
用于验证JSON对象组件是否有效。
# 8.2.28. ValidateJSONString
function ValidateJSONString(const AJSONString: string; const ALang: TLanguageType = enUS): TJSONArray;
用于验证JSON对象字符串是否有效。