0
我創建了一個自定義TClientDataset,然後將其註冊爲設計時組件。註冊自定義TClientDataSet但我看不到在構造函數中創建的字段
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到窗體上,我做在數據集的字段集合中沒有看到NAME
字段。
我的目標是定義和註冊這些預定義的查詢,以便我可以在設計時使用它們。
我想阻止任何使用此組件的人重新定義此數據集的字段,但仍然能夠在可視化編輯器中查看它們以綁定cxGrid或其他類型(自動創建列等)。
此外,此數據集只是另一個數據集的佔位符。它僅用於將Fields集合呈現給其他可以綁定到它們的可視化編輯器。
我的問題是:
爲什麼我不能看到我在構造函數中的可視化編輯器創建的領域,我怎樣才能使它可見?
如何覆蓋組件的行爲,永不將用戶對其TField的修改保存到DFM中?
謝謝
謝謝,我認爲該領域的AOwner必須是數據集的所有者,這是當我修改代碼 – Ludo
什麼工作你知道我怎麼能防止DFM的修改由用戶? (防止添加/修改字段)? – Ludo
「防止修改......」不是手動的,但我有一種感覺@SertacAkyuz對這個q的回答可能與此有關,而Delphi使用我的代碼抱怨重複的'NAME'字段:http: //stackoverflow.com/questions/38293072/how-to-correctly-stream-a-tcollection-property-of-a-subcomponent-eg-the-colum – MartynA