是否可以在运行时在对象内创建和使用 TClientDataSet?
我喜欢在我的表中进行几处更改,并以类似缓存的方式同时应用这些更改,而 TClientDataSet 让我可以做到这一点。知道什么时候我想这样做,我必须构建一个 TForm。
是否可以?
更新
如果没有 TDataSetProvider 和没有 TSQLQuery ,它可以使用吗?如何使用?因为我试过了,它给了我一个错误 no Provider!
是否可以在运行时在对象内创建和使用 TClientDataSet?
我喜欢在我的表中进行几处更改,并以类似缓存的方式同时应用这些更改,而 TClientDataSet 让我可以做到这一点。知道什么时候我想这样做,我必须构建一个 TForm。
是否可以?
更新
如果没有 TDataSetProvider 和没有 TSQLQuery ,它可以使用吗?如何使用?因为我试过了,它给了我一个错误 no Provider!
组件只是类,您可以同样使用它们:
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 应该没有这样的要求。
您可以在运行时创建 TClientDataset。(请参阅 Vegar 的回答。)至于提供程序问题,解决方案是为其定义字段,然后使用 CreateDataset 方法(而不是 Open 方法!)打开数据集,然后它就可以工作了。
你当然可以这样做。但您也可以考虑使用数据模块。您可以将不可见的组件拖动到数据模块并使用对象检查器来设置值。
是的,您可以这样做,TClientDataSet 是非可视组件,并且并非设计为仅在表单内部使用。
您可以构建一个单元(没有 .dfm 的.pas),而不是具有可以使用 TClientDataSet 的类和方法并将其作为参数返回。