是否可以在运行时在Object内创建和使用TClientDataSet?
我喜欢在我的表中进行一些更改,并将这些更改同时应用于缓存中,并且TClientDataSet允许我这样做。知道我什么时候想要这样做,我必须建立一个TForm。
可能吗?
更新
可以使用,如何,没有TDataSetProvider,没有TSQLQuery? 因为我尝试了它并且它给了我一个错误没有提供商!!
答案 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的类和方法,并将其作为参数返回。