M
mywuti
Unregistered / Unconfirmed
GUEST, unregistred user!
从简:
type
TmyObj = class
private
fMyI:integer;
fMyEdit:TEdit;
public
constructor Create(AOwner: TComponent);
destructor Destroy;override;
function GetText:String;
end;
TMyObjs = class
private
FmyObjs: TList;
function GetMyObj(AIndex: Integer): TmyObj;
public
constructor Create(AOwner: TComponent);
destructor Destroy;override;
function Count:integer;
procedure ObjInsert(AObj: TmyObj);
property MyList[Index: Integer]: TMyObj read GetMyObj;
end;
constructor TmyObjs.Create(AOwner: TComponent);
begin
FmyObjs:=TList.Create;
end;
procedure TmyObjs.ObjInsert(AObj: TmyObj);
begin
FmyObjs.Add(AObj);
end;
...
实例上需要:
myObj:=TmyObj.Create(self);
if not Assigned(myObjs) then
myObjs:=TmyObjs.Create(self);
myObjs.ObjInsert(myObj);
问题一:
如何实现myObj创建时让myObjs ObjInsert,也就是说当myObj Create 时,myObjs会自动计数,不用象上面一样每次引用的实例都必须myObjs.ObjInsert(myObj)。
问题二:
如何将TmyObj TmyObjs合并成一个类?
当成为一个类时,
由于TList在类的域成员,每次在类的构造时TList也被构造,怎么办?
type
TmyObj = class
private
fMyI:integer;
fMyEdit:TEdit;
public
constructor Create(AOwner: TComponent);
destructor Destroy;override;
function GetText:String;
end;
TMyObjs = class
private
FmyObjs: TList;
function GetMyObj(AIndex: Integer): TmyObj;
public
constructor Create(AOwner: TComponent);
destructor Destroy;override;
function Count:integer;
procedure ObjInsert(AObj: TmyObj);
property MyList[Index: Integer]: TMyObj read GetMyObj;
end;
constructor TmyObjs.Create(AOwner: TComponent);
begin
FmyObjs:=TList.Create;
end;
procedure TmyObjs.ObjInsert(AObj: TmyObj);
begin
FmyObjs.Add(AObj);
end;
...
实例上需要:
myObj:=TmyObj.Create(self);
if not Assigned(myObjs) then
myObjs:=TmyObjs.Create(self);
myObjs.ObjInsert(myObj);
问题一:
如何实现myObj创建时让myObjs ObjInsert,也就是说当myObj Create 时,myObjs会自动计数,不用象上面一样每次引用的实例都必须myObjs.ObjInsert(myObj)。
问题二:
如何将TmyObj TmyObjs合并成一个类?
当成为一个类时,
由于TList在类的域成员,每次在类的构造时TList也被构造,怎么办?