向数据包添加自定义信息

来自RAD Studio
跳转到:航行,搜索

转到控制数据包中包含的信息


数据集提供程序可以使用数据快照。供应商。TDataSetProvider。OnGetDataSet属性事件。此信息编码为OleVariant,并存储在您指定的名称下。然后,客户端数据集可以使用它们的获取可选参数方法。您还可以指定信息包含在客户端数据集在更新记录时发送的增量数据包中。在这种情况下,客户机数据集可能永远不会知道信息,但提供者可以向自己发送往返消息。

在中添加自定义信息时OnGetDataSet属性事件中,每个单独的属性(有时称为“可选参数”)都是使用包含三个元素的Variant数组指定的:名称(字符串)、值(Variant)和布尔标志,指示当客户端应用更新时是否应将信息包含在增量包中。通过创建变量数组的变量数组来添加多个属性。例如,以下内容OnGetDataSet属性事件处理程序发送两个值,即提供数据的时间和源数据集中的记录总数。当客户端数据集应用更新时,仅返回提供数据的时间:

德尔福:

程序 TMy数据模块1.提供者1GetDataSet属性(发件人: TObject(目标); 数据集: TDataSet(数据集); 外面的 属性: OleVariant公司);
开始
  属性 := 变量数组创建([0,1], varVariant变量);
  属性[0] := 变量数组([“TimeProvided”, 现在, 真的]);
  属性[1] := 变量数组(['表格大小', 数据集.记录计数, False(错误)]);
结束;

C++语言:

空隙 __快速呼叫 TMy数据模块1::提供程序1GetDataSet属性(TObject(目标) *发件人, TDataSet(数据集) *数据集, 外面的 OleVariant公司 属性)
{
  整数 阵列边界[2];
  数组边界[0] = 0;
  数组边界[1] = 1;
  属性 = 变量数组创建(数组边界, 1, varVariant变量);
  变体 [];
  [0] = 变体(“提供的时间”);
  [1] = 变体(现在());
  [2] = 变体(真的);
  属性[0] = 变量数组(,2);
  [0] = 变体(“表格大小”);
  [1] = 变体(数据集->记录计数);
  [2] = 变体();
  属性[1] = 变量数组(,2);
}

当客户端数据集应用更新时,可以在提供程序的供应商。TDataSetProvider。更新函数事件:

德尔福:

程序 TMy数据模块1.Provider1最新数据(发件人: TObject(目标); 数据集: TCustomClientDataSet(自定义客户端数据集));
变量
  何时提供: TDateTime(日期时间);
开始
  何时提供 := 数据集.获取可选参数(“TimeProvided”);
  // …
结束;

C++:

空隙 __快速呼叫 TMy数据模块1::提供商1更新数据(TObject(目标) *发件人, TCustomClientDataSet(自定义客户端数据集) *数据集)
{
  变体 何时提供 = 数据集->获取可选参数(“提供的时间”);
  //…
}

另请参见