Delphi 正在注册自定义TClientDataSet,但我没有看到在构造函数中创建的字段
我创建了一个自定义TClientDataset,然后将其注册为设计时组件Delphi 正在注册自定义TClientDataSet,但我没有看到在构造函数中创建的字段,delphi,ide,dataset,custom-component,Delphi,Ide,Dataset,Custom Component,我创建了一个自定义TClientDataset,然后将其注册为设计时组件 TMyDataset = class(TClientDataset) public constructor Create(AOwner : TComponent); override; end; 在Create方法中,我创建了这个数据集的字段 implementation constructor TMyDataset.Create(aOwner : TComponent); var lField : TString
TMyDataset = class(TClientDataset)
public
constructor Create(AOwner : TComponent); override;
end;
在Create方法中,我创建了这个数据集的字段
implementation
constructor TMyDataset.Create(aOwner : TComponent);
var
lField : TStringField;
begin
inherited Create(aOwner);
lField := TStringField.Create(Self);
lField.FieldName := 'NAME';
lField.Dataset := Self;
Fields.Add(lField);
end;
将组件注册为该组件时
procedure Register;
begin
RegisterComponents('Queries', [TMyDataset]);
end;
将TMyDataset放到表单上,我在这个数据集的Fields集合中看不到NAME字段
我的目标是定义和注册这些预定义查询,以便在设计时使用它们
我想阻止任何使用此组件的人重新定义此数据集的字段,但仍然能够在可视化编辑器中看到它们以绑定cxGrid或自动创建列等
此外,此数据集只是另一个数据集的占位符。它只用于将字段集合呈现给可以绑定到它们的其他可视化编辑器
我的问题是:
为什么我不能在可视化编辑器中看到我在构造函数中创建的字段,以及如何使其可见
我如何重写组件的行为,从而永远不会将其TField上的用户修改保存到DFM中
谢谢以下内容对我来说很好,包括显示在TMyDataSet字段编辑器中的NAME字段:
uses
SysUtils, Classes, DB, DBClient;
type
TMyDataSet = class(TClientDataSet)
private
FMyStringField : TStringField;
function GetMyStringField: TStringField;
protected
public
constructor Create(AOwner : TComponent); override;
property MyStringField : TStringField read GetMyStringField;
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Data Access', [TMyDataSet]);
end;
{ TMyDataSet }
constructor TMyDataSet.Create(AOwner: TComponent);
begin
inherited;
FMyStringField := TStringField.Create(AOwner);
FMyStringField.FieldName := 'NAME';
FMyStringField.Size := 80;
FMyStringField.DataSet := Self;
end;
function TMyDataSet.GetMyStringField: TStringField;
begin
Result := FMyStringField;
end;
您应该能够轻松地确定代码需要如何修改才能以类似的方式工作。您忽略了StringField的大小
[tbc]谢谢,我认为字段的所有者必须是数据集的所有者,这就是我修改代码时所起的作用。你知道如何防止用户修改DFM吗?阻止添加/修改字段?阻止修改。。。不是随便说说,但我觉得@SertacAkyuz对我这个问题的回答可能与此有关,而且Delphi抱怨使用我的代码时出现了重复的名称字段: