高分,解决一个Class的问题

yangming_ok 2001-10-25 12:58:34
我想實作兩個 Class,第一個是一個單純的Class,命名為 TA,程式碼如下:



Type
TA = Class(TObject)
Private
FID : String;
FName : String;
Public
Property ID : String Read FID Write FID;
Property Name : String Read FName Write FName;
End;



第二個 Class 要用陣列把 TA 包起來,就像 TB : Array of TA 一樣。使用時就像



TB.Lists[2].ID = 'A01';
TB.Lists[2].Name = 'ABC';
ShowMessage(TB.Lists[2].ID); //顯示 TB.Lists[2].ID 的值
ShowMessage(TB.Lists[2].Name); //顯示 TB.Lists[2].Name 的值



想請教第二的 Class 應該怎麼撰寫...??
...全文
82 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzgyb 2001-10-25
  • 打赏
  • 举报
回复
仿照TStrings类
内部维持一TList
加一数组属性,
gzmhero 2001-10-25
  • 打赏
  • 举报
回复
你要先建立TA类,再加两个成员函数:
procedure TB.CreateTAClass(cnt:integer);//cnt 生成的个数
var
i:integer;
begin
if cnt>0 then
begin
lstCnt:=cnt;
SetLength(Lists,cnt);
for i:=0 to cnt-1 do
begin
Lists[i]:=TA.Create;
end;
end;
end;
procedure TB.FreeTAClass;
var
i:integer;
begin
for i:=0 to lstCnt-1 do
begin
if Lists[i]<>nil then
Lists.Free;
end;
end;
yangming_ok 2001-10-25
  • 打赏
  • 举报
回复
[code]
TB = class (TObject)
private
FTAs:array [1..1oo] of TA;
public
function GetTA(index:integer):TA;
procedure SetTA(i:integer; const value:TA);
property Lists[i:integer] :TA read GetTA write SetTA;
end;

procedure TB.SetTA(i:integer; const value:TA)
begin
FTAs[i]:=TA;
end;

function TB.GetTA(index:integer):TA;
begin
Result:=FTAs[index];
end;

我是这样写的,但赋值时不对
TB.Lists[2].ID = 'A01';
TB.Lists[2].Name = 'ABC';
原因是TA类没有建立。
怎么写,给代码一定给分!
Old_Cow 2001-10-25
  • 打赏
  • 举报
回复
楼上说的对!
gzmhero 2001-10-25
  • 打赏
  • 举报
回复
type
TB=class(TObject)
private:
public:
Lists:Array of TA;
lstCnt:integer;
end;

就可以了。
yangming_ok 2001-10-25
  • 打赏
  • 举报
回复
gz

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧