【发布时间】:2011-07-23 11:16:41
【问题描述】:
如果之前有人问过这个问题,我们深表歉意。我对一些组件的定义如下(如果有错误请指导我,因为我是初学者)。我正在尝试的是枚举派生组件的所有已发布属性,尤其是子属性。我能够枚举属性的名称,但是,是否可以枚举在程序执行期间我可以访问元素(如在子属性中)的已发布属性?像 getfirst / getnext 这样逐个返回属性直到结束?
type
TStringArray = array of string;
TGenericColumnDef = class(TPersistent)
private
fColumnName : String;
fColumnNumber : Integer;
fColumnDisplay : string;
fColumnDescription : string;
fColumnDataType : integer;
fColumnEditorType : integer;
// fMyEvent: TNotifyEvent;
protected
public
constructor create(AOwner: TComponent); virtual;
published
property ColumnName : String read fColumnName write fColumnName;
property ColumnNumber : integer read fColumnNumber write fColumnNumber;
//property MyEvent: TNotifyEvent read fMyEvent write fMyEvent;
end;
TGenericAsset = class(Tcomponent) //TPersistent
private
{ Private declarations }
fCiteID : TGenericColumnDef;
fCiteType : TGenericColumnDef;
fTitle : TGenericColumnDef;
fAuthor : TGenericColumnDef;
fPropertyCount : integer;
function GetPropertyCount : integer;
function GetNextPropertyIndex: integer;
property CountProperties : integer read GetPropertyCount;// write fPropertyCount
protected
{ Protected declarations }
FOwner: TObject;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor destory ; virtual;
function GetColumnNameByColumnNumber(ColumnNumber : Integer) : String;
function GetColumnNames : TStringArray;
// function GetFirst : TGenericColumnDef;
published
property CiteID : TGenericColumnDef read fCiteID write fCiteID;
property CiteType : TGenericColumnDef read fCiteType write fCiteType;
property Title : TGenericColumnDef read fTitle write fTitle;
property Author : TGenericColumnDef read fAuthor write fAuthor;
//property Nthproperty .........
end;
//derived from TGenericAsset
type
TEditedBook = class(TGenericAsset)
private
protected
public
published
property CiteID : TGenericColumnDef read fCiteID write fCiteID;
property Title : TGenericColumnDef read fTitle write fTitle;
property Author : TGenericColumnDef read fAuthor write fAuthor;
end;
非常感谢任何要点或指南(示例代码)。 提前致谢。
【问题讨论】:
标签: delphi delphi-2009 rtti