是否可以在非可视单元或类对象内创建使用TClientDataSet?

时间:2009-02-20 11:39:07

标签: delphi runtime tclientdataset

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

我喜欢在我的表中进行一些更改,并将这些更改同时应用于缓存中,并且TClientDataSet允许我这样做。知道我什么时候想要这样做,我必须建立一个TForm。

可能吗?

更新

可以使用,如何,没有TDataSetProvider,没有TSQLQuery? 因为我尝试了它并且它给了我一个错误没有提供商!!

4 个答案:

答案 0 :(得分:5)

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

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

  finally
    localClientDataset.Free;
  end;
end;

如果您愿意,也可以创建clientdataset属性:

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

是的,TClientDataSet是非可视组件,并非设计为仅在表单内使用。

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