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

发布于 2024-07-14 10:30:25 字数 252 浏览 5 评论 0原文

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

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

是否可以?

UPDATE

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

Is it possible to create and use a TClientDataSet inside an Object at runtime?

I like to make several changes in my Table and have those all Applied at the same time in cache like way, and TClientDataSet lets me do that. Know when I want to do this I have to build a TForm.

Is it Possible?

UPDATE

Can it be used, and How, without TDataSetProvider, and no TSQLQuery ?
Because I tried it and it gave me an error no Provider!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不顾 2024-07-21 10:30:25

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

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 来说应该没有这样的要求。

Components are just classes, and you can use them likewise:

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

  finally
    localClientDataset.Free;
  end;
end;

You can also make a clientdataset-property if you like:

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

Some visual components may require a visual parent though, but for TClientDataset there should be no such requirement.

ˉ厌 2024-07-21 10:30:25

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

You can create a TClientDataset at runtime. (See Vegar's answer.) As for the provider issue, the solution is to define fields for it, then open the dataset with the CreateDataset method (not the Open method!) and then it'll work.

明月松间行 2024-07-21 10:30:25

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

Of course you can do that. But you can also considder using a data module. You can drag non visible components to a datamodule and use the object inspector to set the values.

我的鱼塘能养鲲 2024-07-21 10:30:25

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

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

Yes you can do, TClientDataSet is non visual component, and not designed to be used only inside forms.

You can build a unit (.pas without .dfm) than has classes and methods that can used TClientDataSet and return it also as parameters.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文