1

是否可以在运行时在对象内创建和使用 TClientDataSet?

我喜欢在我的表中进行几处更改,并以类似缓存的方式同时应用这些更改,而 TClientDataSet 让我可以做到这一点。知道什么时候我想这样做,我必须构建一个 TForm。

是否可以?

更新

如果没有 TDataSetProvider 和没有 TSQLQuery ,它可以使用吗?如何使用?因为我试过了,它给了我一个错误 no Provider!

4

4 回答 4

5

组件只是类,您可以同样使用它们:

procedure TMyObject.DoSomeDBStuff;
var
  localClientDataset: TClientDataset;
begin
  localClientDataset := TClientDataset.Create( );
  try

  finally
    localClientDataset.Free;
  end;
end;

如果您愿意,还可以创建一个客户端数据集属性:

type
  TMyObject = class
  private
    FClientDB: TClientDataset;
  published
    property Dataset: TClientDataset read FClientDB;
  end;

一些可视化组件可能需要一个可视父级,但对于 TClientDataset 应该没有这样的要求。

于 2009-02-20T12:15:08.027 回答
3

您可以在运行时创建 TClientDataset。(请参阅 Vegar 的回答。)至于提供程序问题,解决方案是为其定义字段,然后使用 CreateDataset 方法(而不是 Open 方法!)打开数据集,然后它就可以工作了。

于 2009-02-20T23:42:28.313 回答
2

你当然可以这样做。但您也可以考虑使用数据模块。您可以将不可见的组件拖动到数据模块并使用对象检查器来设置值。

于 2009-02-20T11:59:55.130 回答
1

是的,您可以这样做,TClientDataSet 是非可视组件,并且并非设计为仅在表单内部使用。

您可以构建一个单元(没有 .dfm 的.pas),而不是具有可以使用 TClientDataSet 的类和方法并将其作为参数返回。

于 2009-02-20T11:48:17.483 回答